SPI frame en un dsPIC

3

Acabo de empezar a usar SPI en un dsPIC y noté un comportamiento extraño en una forma de onda (vea la imagen a continuación). El módulo SPI está configurado en el modo maestro de 8 bits. En la forma de onda mostrada puede ver un byte 0xAB , y que el módulo SPI "prepara" la línea de datos un ciclo de reloj antes del primer pulso de reloj. ¿Por qué? Si envío 0x7B (el primer bit de este byte es 0 ), entonces la línea de datos permanece baja antes del primer impulso de reloj. Si envío 0x7B y 0xAB justo después del primer byte, todo está bien, es decir, no hay un ciclo de reloj ficticio entre los dos bytes solo "para preparar" para 0xAB .

El modo SPI es el siguiente: el estado inactivo es alto, el estado activo es bajo (CKP = 1); los datos en serie cambian en la transición del estado inactivo al estado activo (CKE = 0).

    
pregunta Marko Gulin

1 respuesta

2

manual dsPIC SPI Figura 35-3: Temporización del modo maestro SPI1: -

  

Nota 1: Si no hay transmisiones pendientes, se transfiere SPI1TXB   a SPI1SR tan pronto como la aplicación de usuario escriba en SPI1BUF.

El transmisor tarda un poco en comenzar a transmitir. Si el registro de desplazamiento MSB era 0 anteriormente y el MSB de sus datos es 1, verá que SDO se pone alto al inicio de este período, pero si ambos son 0, entonces SDO se mantendrá bajo.

Sin embargo, si sus datos están 'en cola' en el búfer de TX, entonces el transmisor debe esperar hasta que se haya transmitido el Byte anterior antes de volver a cargar el registro de desplazamiento, para que no vea esta transición "temprana".

En el diagrama de tiempo, este período se muestra en gris, lo que significa que el nivel es indefinido . En cualquier caso no deberías tener que preocuparte por ello. Lo único que importa es que SDO debe ser estable cuando SCK va de bajo a alto.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas