RS232 hotplugging

0

He notado que cuando conecto / desconecto el cable RS232 a mi microcontrolador, recibo un carácter de basura en el otro extremo (mi PC). ¿Hay alguna manera de prevenir esto?

Quiero finalmente usar RS485 con una serie de microcontroladores que comparten el mismo bus, y esto evitaría agregar o eliminar nodos mientras el bus esté en funcionamiento.

    
pregunta Bob

2 respuestas

2

Un par de sugerencias que vienen a la mente para hacer que el protocolo entre MCU y PC sea más sólido:

  • Use un marco predefinido, con una longitud y formato dados que siempre se ajusten a sus datos. Puede contener varias partes de datos, pero use un formato predefinido de manera que siempre sepa qué datos están contenidos en qué posición en el marco.
  • Use una suma de comprobación dentro del marco para que pueda rechazar todo el marco si los datos están dañados;
  • Use un encabezado / preámbulo, una secuencia estática de bytes conocida para indicar el inicio del marco. Cualquier secuencia corta servirá, personalmente me gusta usar 'AB' (0x41, 0x42) ya que se muestra muy bien en un volcado hexadecimal;
  • Use un espacio de tiempo mínimo entre dos cuadros que sea al menos más largo que la duración del cuadro. Algunas bibliotecas en serie permiten leer un número dado de bytes del búfer en serie durante un número máximo de microsegundos. Cuando la llamada a la función agote el tiempo de espera con el número incorrecto de bytes, simplemente puede rechazar los datos recibidos, vuelva a intentarlo y automáticamente obtendrá el siguiente fotograma completo desde el principio.
  • Si tiene conectividad dúplex, puede usar un marco similar para solicitar retransmisiones o enviar un mensaje de OK.

Eche un vistazo al protocolo firmata , bastante basado en Arduino, pero puede aprender bastante de la implementación.

    
respondido por el jippie
0

¿Probaste una resistencia pullup (aproximadamente 10k) en la línea RX?

Cuando la PC está transmitiendo datos al mismo tiempo que conecta el cable, el µC siempre recibirá al menos un carácter de basura.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas