¿Se ha mejorado el hardware de las líneas de selección de esclavo SPI?

1

Tengo una pregunta con respecto a las comunicaciones SPI. Siento que tengo una buena comprensión fundamental de cómo funciona SPI. Sin embargo, a menudo estoy confundido al implementar la línea de selección de esclavos de SPI.

¿La línea de selección de esclavos en un microcontrolador, en general, está mejorada a través de hardware? Es decir, ¿hay algo diferente entre una salida de selección de esclavo y una salida que controla un LED? ¿Los microcontroladores permiten que ciertas E / S se alternen más rápido cuando se usan para SPI?

    
pregunta Izzo

5 respuestas

5

No hay diferencia, en lo que se refiere a la potencia del disco o la velocidad de transición.

Algunos uC con los que he trabajado ni siquiera tienen un pin SS dedicado. Puede implementarlo en el código usando el pin que sea más conveniente.

Sin embargo, algunos microcontroladores cambiarán la línea SS por ti (sin que tengas que cambiar el pin en el código). Esto puede reducir el tiempo de permanencia entre las transacciones SPI, disminuyendo el tiempo total transcurrido durante las transmisiones de transacciones múltiples.

Además, si está diseñando un dispositivo esclavo SPI, es muy conveniente usar un uC que tenga un pin SS dedicado, que es utilizado por el módulo SPI interno del uC.

Los microcontroladores basados en ARM STM32F1, por ejemplo, tienen un pin SS dedicado para cada uno de sus buses SPI, con la opción de deshabilitar la funcionalidad SS y liberar el pin para uso general.

    
respondido por el bitsmack
6

Depende del microcontrolador. En la mayoría de los periféricos SPI que he visto, la administración de selección de esclavos está haciendo exactamente lo mismo que un GPIO. Tiendo a usar la interfaz GPIO en estos casos, ya que permite un enrutamiento más flexible.

Pero también he visto controladores SPI que hacen cosas más avanzadas como administrar las líneas SS por paquete de transferencia. Esto resulta muy útil si se comunica con varios esclavos en el mismo bus SPI a través de DMA. Simplemente envíe los datos a través de DMA y el controlador hará todos los cambios entre esclavos en el momento correcto sin necesidad de atención de la CPU.

Otras cosas notables que he visto:

  • Llave de selección de esclavos que simplemente bloquea el cambio de estado y retrasa esta solicitud hasta que la transferencia interna FIFO esté vacía. Esto es muy útil si solo estás haciendo escrituras y no te importan los datos MISO. Simplemente escribe tus bytes en el bus SPI, anula la selección del esclavo y listo. No hay riesgo de romper el último byte porque ha cambiado la Selección de esclavo a principios.

  • Llave de selección de esclavos que permite varios protocolos relacionados con SPI como TI-SSI, I²S, etc.

  • Llave de selección de esclavos que inserta automáticamente un bit inactivo entre cada unidad de transferencia. No estoy seguro de por qué hacen esto, ya que hace que SPI sea inutilizable para muchos chips flash SPI (Sí, te estoy mirando, NXP).

respondido por el Nils Pipenbrinck
3

Como han dicho otros, normalmente no hay diferencia en los pasadores eléctricamente. Sin embargo, algunos tienen un pin SS dedicado, y algunos de ellos requieren su uso si tienen la capacidad de ser un dispositivo esclavo. El pin SS puede estar vinculado internamente a alguna función del módulo SPI.

Los dispositivos ATMega y ATTiny que tienen hardware SPI sí tienen un pin SS que tiene un propósito especial. En este caso, si el módulo SPI de hardware está habilitado, solo puede ser un esclavo si el pin SS está configurado para ser una entrada. En el modo esclavo, el pin SS se usa para hacer un triple estado del pin MISO para permitir que se use en un sistema de varios esclavos, por lo que el pin debe ser una entrada durante el modo esclavo.

Para el modo maestro en este caso, los requisitos de dirección del pin varían entre las partes. En algunas partes debe permanecer como salida (pero puede ser controlado por el usuario como GPIO) para permanecer en modo maestro. En otros dispositivos, puede ser una entrada o una salida; sin embargo, en estos dispositivos, si se configura como una entrada, el pin debe mantenerse alto para seguir siendo un maestro. La última opción permite múltiples maestros al cambiar al modo esclavo en el momento en que se baja el pin SS.

    
respondido por el Tom Carpenter
1

Los microcontroladores suelen tener un hardware especial para manejar CLCK, MISO y MOSI. Esto permite una transferencia SPI más rápida (y ahorra algunos ciclos de CPU). Pero la selección es una por esclavo, y debe cambiarse solo dos veces durante una transacción, por lo que tiene más sentido usar un GPIO aq para este propósito, y así es como funcionan los uC que he visto,

    
respondido por el Wouter van Ooijen
1

Para protocolos más avanzados que usan el hardware SPI (especialmente I2S), el pin SS generalmente está controlado por hardware. En el caso de I2S, a menudo se utiliza como LRCLK.

El pin SS a menudo está especialmente vinculado con el hardware SPI de tal manera que cuando se ejecuta en modo esclavo, el pin SS puede controlar automáticamente la recepción de datos e incluso provocar interrupciones cuando cambia de estado.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas