Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Situación Final
Intercambiados los 8 bits de datos
• SSPSR (registro de desplazamiento) envía y recoge los bits simultáneamente
• SSPBUF tiene doble función: para “cargar” el registro SSPSR para envío de
datos y para “recoger” los datos recibidos en SSPSR
Si antes de leer el dato anterior se completa la recepción de un nuevo dato,
se perdería el dato previamente recibido, se
da error de “OVERFLOW” (SSPOV=1).
•Polaridad del Reloj: Estado Inactivo del Reloj (SCK) a “1” ó a “0”
•Flancos activos del Reloj: Salida de bits en flancos de subida o bajada en SCK
• Para que la funcionalidad de los pines SDI, SDO, SCK y /SS sea la determinada por
los bits de configuración, es necesario además que los bits de dirección de datos
(en TRISA y en TRISC) tengan la dirección adecuada:
P.ej.: Si en modo Maestro sólo se van a enviar datos, SDI puede usarse como
una salida de propósito general del microcontrolador cargando TRISC<4>=0
Interface SPI en el módulo SSP
La estructura principal de configuración del periférico spi es:
Typedef struct
{
uint32_t Mode Especifica si las transferencias de datos comienzan desde MSB o un bit
uint32_t Direction LSB. Este parámetro puede ser: SPI_FIRSTBIT_MSB SPI_FIRSTBIT_LSB
uint32_t DataSize
uint32_t CLKPolarity
uint32_t CLKPhase
uint32_t NSS
uint32_t BaudRatePrescaler
uint32_t FirstBit Especifica si el modo TI está habilitado o no. Este parámetro puede ser:
uint32_t TIMode SPI_TIMODE_DISABLE SPI_TIMODE_ENABLE
}SPI_InitTypeDef;
Para inicializar la configuración del periférico se ejecuta la función:
Para el Envío y Recepción de bytes de datos se usan la funciones provistas dentro de la librería HAL.
Si el dispositivo esclavo tiene la capacidad de entablar la comunicacion Full-Duplex se puede usar la siguiente funcion para realizar
la transmission y recepcion de manera simultaneal.
• HAL_SPI_ TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
Las funciones de interrupcion llama a la function SPIX_IRQHandler( ); que a su vez llamara a una de las siguientes subrutinas
predefinidas:
• HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
• HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);