pregunta fundamental de SPI

0

Estoy un poco confundido con respecto al orden de los bytes que se transfieren a través de SPI a un dispositivo esclavo.

El siguiente diagrama de tiempo muestra la secuencia de bytes que se enviarán cuando queremos escribir datos en un chip de memoria flash

Después de enviar el byte de comando (los primeros 8 bytes al dispositivo esclavo (Memoria Flash) debo enviar los bytes de dirección y luego los datos que quiero escribir.

Entonces, mi pregunta es esta: ¿qué byte envío primero, después del byte de comando? ¿El byte alto o el byte bajo de la dirección? Aunque no tiene sentido para mí por qué el primer byte debe enviarse primero, es obvio en el diagrama que el primer byte debe enviarse primero y luego el byte bajo. Por lo tanto, quería preguntar en caso de que lo esté pensando de forma incorrecta.

Gracias por tu tiempo

    
pregunta Lefteris

2 respuestas

5

Incluso si una especificación clara no tiene sentido para usted, debe cumplirla.

Si no funciona de la manera especificada, puedes comenzar a cuestionarlo.

El orden de bytes a menudo es diferente entre el microcontrolador y los periféricos externos, así que prepárese para enfrentar esto en el futuro también en otros puntos.

Y esto no es nada inherente a SPI, es el protocolo definido por el fabricante del chip. SPI no determinará el orden de los bytes.

    
respondido por el Arsenal
2

El bit 12 tiene una anotación MSB, por lo que primero debe enviar el byte alto.

No tiene que "tener sentido obvio". Para mí, si tiene la dirección 0x12, tiene sentido enviar 1 y luego 2. También podría ser little-endian, ajustado a la derecha. Es solo una convención.

Hay más esquemas extravagantes, por ejemplo, bits de filtro dispersos por todos lados en el periférico MSCAN de Freescale. Solo mire el 32.3.23 de el manual . Probablemente hizo más fácil el trabajo del diseñador de chips a costa del desarrollador de firmware más adelante :)

    
respondido por el filo

Lea otras preguntas en las etiquetas