Estoy programando un Cortex M3 bare-metal para hablar con SPI Flash. Uno de los bits de configuración de un registro de control SPI es FRF
(formato de trama). Puede configurarse en modo SPI Motorola (0) o en modo SPI TI (1). (Consulte la página 695 del manual de referencia de ARM aquí ).
La hoja de datos del SPI Flash (disponible aquí ) no indica qué modo debo usar.
¿Cuáles son los dos modos diferentes y cuál debo usar para el chip Flash específico que estoy usando?
El modo Motorola y TI se refieren a diferentes configuraciones de polaridad de reloj (CPOL) y fase de reloj (CPHA). La polaridad del reloj dicta si una señal alta o baja marca un reloj, la fase le dice al dispositivo cuándo muestrear la línea de datos.
De acuerdo con su hoja de datos ARM, puede configurar CPOL y CPHA para su controlador SPI.
Su chip flash (consulte el capítulo 3) admite {CPOL=0, CPHA=0} o {CPOL=1, CPHA=1}.
Para obtener más información, http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus#Clock_polarity_and_phase
Una breve mirada a la hoja de datos de ARM sugeriría que la principal diferencia entre el modo TI y el modo Motorola tiene que ver con el manejo de una señal de salida llamada SSPFSSOUT que muchos dispositivos simplemente no necesitan. Se supone que esta señal tiene un pulso alto entre bytes para indicar qué bit de cada byte debe considerarse el primero. En el modo TI, sube durante la transmisión del último bit de un byte, mientras que en el modo Motorola sube y luego baja entre bytes. El chip flash quiere una señal de selección de chip que se mantenga baja durante toda la duración de una transacción, por lo que una salida que sube entre bytes no será útil.
Esperaría que incluso cuando no se usa SSPFSSOUT, el modo Motorola haría que los datos fueran más fáciles de leer en un osciloscopio (ya que habría una pausa después de cada byte), pero el modo TI podría ser más rápido (ya que no perdería tiempo pausando entre bytes). Sin embargo, lo importante es asegurarse de que la secuencia de señales que genera el controlador cumpla con los requisitos establecidos en la hoja de datos de los periféricos.
Parece que los procesadores Motorola (anteriores) tenían algo llamado modo big endian en el que si el maestro SPI se comunica con un dispositivo esclavo que tiene registros little endian, debe convertir los datos recibidos del esclavo a big endian y debe convertir datos de big endian a little endian mientras envía datos al esclavo. La otra cosa es sobre la fase y la polaridad del reloj y si los datos están enganchados al borde ascendente o descendente de un ciclo de reloj. Consultar el manual del procesador para ver sus registros ayudaría.
Aleatorioazul
{CPOL=0, CPHA=0}
Motorola o TI?toby jaffey
Kortuk
Aleatorioazul
Kortuk
toby jaffey
usuario64958