Comunicación entre dos STM de más de 2 metros con pequeña latencia

0

Quiero enviar mensajes de ida y vuelta entre dos STM32s. Probablemente STM32F407VET6, pero sería bueno si ya pudiera probar algo por uno simple (STM32F103C8T6).

Mis requisitos:

  • tiempo de retardo de ida y vuelta: preferiblemente 1 ms máximo (excluyendo el procesamiento), para mensajes con una carga útil de alrededor de 8 bytes.
  • distancia alrededor de 2 metros
  • velocidad: datos puros: alrededor de 128 kbps (gastos generales excluidos), así que probablemente alrededor de 200 kbps

Revisé entre SPI e I2C, y parece que SPI es más fácil (de configuración) y tengo suficientes pines GPIO.

Sin embargo, leí que 2 metros y una velocidad de datos rápida podría ser un problema. También no puedo encontrar información sobre el retraso de ida y vuelta.

Por supuesto, puedo revisar todo esto por mí mismo, pero me ahorra mucho esfuerzo para configurar esto.

Para el cableado entre los dos STM, pretendo usar un conector RS232 (y probablemente un cable), pero si hay mejores alternativas, hágamelo saber (¿cable UTP y un conector de Internet?). ¿O hay cables / conectores más apropiados para esto?

(actualización, enlace a MCP2551 según comentario de respuesta) Adaptador MCP2551: adaptador

    
pregunta Michel Keijzers

2 respuestas

2

El único problema con SPI que tiene que enfrentar es la velocidad y la distancia de reloj. Si la velocidad de reloj es demasiado alta, entonces los datos que regresan del esclavo pueden estar demasiado desalineados para poder recibirlos adecuadamente. Ese es el cuento.

Entonces, si transmite a 128 kbps, entonces el reloj es de 128 kHz y un símbolo de datos es de aproximadamente 7.8 us. A continuación, debe considerar cuánto tiempo demora el vuelo de datos en el cable, que se basa aproximadamente en el 70% de la velocidad de la luz.

La luz viaja 1 metro en 3.33 ns, por lo que 2 metros de cable tardan en recibirse unos 10 ns y, cuando el esclavo responde, lo hace en los bordes del reloj que son 10 ns "tardíos" en comparación con la percepción del tiempo del maestro. por lo tanto, hay otros 10 ns para agregar al sesgo general de los datos que regresan al maestro.

Por lo tanto, 20 ns de sesgo en un período de reloj básico de 7.8 no será realmente un problema.

    
respondido por el Andy aka
2

También puedes probar CANBus. Los chips STM32F4 tienen una interfaz CANBus interna y puede encontrar fácilmente las bibliotecas de software de KEIL. Debe usar circuitos integrados de transceptor CAN como MCP2551 y configurar su red. CANBus es una buena selección para la comunicación nodo a nodo. I2C y SPI se usan principalmente para MCU para la comunicación del sensor en la misma placa. CANBus es una comunicación diferencial, es muy duradera debido al ruido eléctrico que podría ser un problema a una distancia de 2 m. También puede proporcionar su requisitos de velocidad de comunicación.

    
respondido por el Batu92k

Lea otras preguntas en las etiquetas