2 votos

STM32: hardware SPI para implementar una interfaz serie personalizada

Quiero implementar la comunicación SDLC en un STM32 (supongo que puedo elegir cualquiera hasta M7) utilizando el HW existente en él.

SDLC es una interfaz serie síncrona full dúplex. En mi caso, utiliza señalización diferencial (RS-485), por lo que estoy utilizando algunos MAX488 para convertir las señales diferenciales a señales de un solo extremo.

Así que tengo Tx Clock y Data, Rx Clock y Data.

Estaba pensando en usar un SPI como maestro para transmitir los datos y un SPI como esclavo para recibirlos.

Unas preguntas:

  1. ¿Es posible? ¿Hay alguna manera mejor de lograr esto con sólo un STM32?
  2. ¿Cómo puedo generar relojes de 153,6 y 614,4 kHz para SPI Tx?
  3. ¿Puede el esclavo SPI recibir cualquier reloj? ¿Como 614,4 kHz?

2voto

berendi Puntos 316

asumo que puedo elegir cualquiera hasta M7

Entonces elige uno de la serie STM32H7, tiene soporte hardware directo para todas las características que necesitas para esto, PLL fraccional independiente para generar velocidades de reloj SPI arbitrarias, y longitud de trama variable si necesitas relleno de bits, es decir, la longitud de trama no es necesariamente un múltiplo de 8 bits.

Cualquier otro STM32 puede hacerlo también, incluso los más pequeños, pero se necesitarían algunos trucos, como hacer un bucle de vuelta de una salida de temporizador externamente a la entrada de reloj SPI, ya que sólo tienen un simple preescalador de potencia de dos para la generación de reloj SPI.

¿Alguna forma mejor de conseguirlo con sólo un STM32?

No se me ocurre ninguna.

¿Cómo puedo generar relojes de 153,6 y 614,4 kHz para SPI Tx?

Experimenta con el configurador del árbol de relojes en STM32CubeMX para entender cómo funciona (más rápido que leyendo el manual de referencia), consigue que PLL2 o PLL3 emitan 0.1536*256=39.3216 MHz y asignarlo al reloj SPI. Luego usa el preescalador en el periférico SPI para obtener 153.6 kHz (/256) o 614.4 kHz (/64).

enter image description here

Estoy bastante seguro de que se puede conseguir una coincidencia mejor jugando con los valores del divisor y el multiplicador.

¿Puede el esclavo SPI recibir cualquier reloj? ¿Como 614,4 kHz?

Cualquier reloj hasta el límite de la hoja de datos, que suele estar en el rango de las decenas de MHz. No hay límite inferior.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X