Cómo enviar datos en serie de ASYNC 8, N, 1 a través de una interfaz SPI usando dos tarjetas Arduino Uno

1

Necesita ayuda para enviar datos ASYNC entre dos microcontroladores Arduino UNO R3.

El diseño del sistema sigue:

Módem RS232 19,200,8, N, 1 - > UNO-1 D0 = (rx), D1 = (tx). Los parámetros RS232 no se pueden cambiar porque el dispositivo está codificado. UNO-1 ejecuta el boceto enviando comandos AT y analizando los datos recibidos. Los datos analizados deben enviarse a otro módem RS232, pero desafortunadamente este dispositivo está codificado para 9,600, 7, E, 2. Solo hay un USART de la UNO.

Mi idea es aprovechar un segundo UNO R3 para convertir los datos a 9,600, 7, E, 2.

Entonces .. 19,200,8, N, 1 módem - > UNO-1 - > SPI INTERFACE (mstr) - > UNO-2 - > puerto serie del software - > Dispositivo 9600, 7, E, 2.

He intentado reconfigurar el USART en la UNO antes de enviar datos a cada dispositivo ASYNC. El problema demostró que los datos importantes y no solicitados se reciben desde el módem 19,200, mientras que la UNO está enviando datos al otro dispositivo ASYNC al 9600,7, E, 2.

La interfaz SPI parece ser mi única opción. ¿Alguien puede ayudar?

    
pregunta John S

1 respuesta

2

Puede usar Easy Transfer Library de Bill Porter para transferir paquetes de un lado a otro entre dos Arduino's, sobre el I2C o VirtualWire. Tenga en cuenta que el SPI tiene una relación maestro / esclavo, por lo que el lado maestro siempre está sondeando cuando está inactivo para recibir. El ET anterior es asíncrono.

Estoy de acuerdo @Chris Stratton. Creo que un solo UNO con un Hard UART en 19200 y un Soft UART en 9600 harían el trabajo.

Independientemente de ello, es posible que el lado 19200 requiera la capacidad de desconectar el módem (o el host), probablemente utilizando cualquiera de los pin de salida como comandos CTS o XON / XOFF. Tenga en cuenta que cuando afirma el CTS, el host no enviará el siguiente búfer, sino que terminará su búfer actual. Por lo tanto, el búfer rx de Arduino debe ser lo suficientemente grande, para obtener un paquete y enviar el siguiente paquete. El ATmega328 solo tiene 2K. Por lo tanto, su paquete máximo debería ser 512 (también conocido como 1/4) o menos, menos el quirófano. etc ...

Dicho todo esto, la mayoría de los módems (que tienen menos de 15 años) deberían admitir AT & Q5 activando el modo automático confiable con el búfer de velocidad. Permitiendo que detecte automáticamente la velocidad en baudios del DTE.

    
respondido por el mpflaga

Lea otras preguntas en las etiquetas