Comandos y paquetes de datos grandes sobre UART a MCU

0

Tengo una pregunta sobre los protocolos utilizados en UART. Intentar crear o usar un protocolo ya definido que permita transferir una gran cantidad de datos lo más rápido posible a través de UART. Me gustaría usar el DMAC tanto como sea posible en el extremo receptor, que será algún tipo de MCU. Dicho esto, me gustaría poder interpretar también los comandos (que pueden estar en conflicto con el uso del DMAC).

Algunos pensamientos que me parecen atascados son:

  1. ¿Qué sucede si la transmisión se termina antes que el final de la transmisión?
  2. ¿Estoy perdiendo el tiempo tratando de usar el DMAC?

Estoy seguro de que hay información que he dejado fuera de esta pregunta o algo que necesito hacer para limitarla, así que intentaré hacerlo con futuras ediciones. Por ahora, la pregunta principal es (aunque un poco más genérico de lo que quiero), ¿existen prácticas ya aceptadas para enviar grandes porciones de datos a través de UART / RS232?

    
pregunta Branden Boucher

1 respuesta

2

¿Supongo que DMAC significa controlador DMA? Espero que no asumas que DMA es gratis, a veces cuesta menos que no usarlo a veces cuesta más. Conozca su sistema.

RS232 es una cosa de nivel de voltaje, no un protocolo, define qué 1 y 0 no es lo que significa el flujo de ellos.

Hay muchas soluciones que puedes hacer con un ppp o un resbalón, o simplemente hacer las tuyas. Puede hacer xmodem, y o z o kermit, etc. Depende de si desea que los datos vayan en ambos sentidos.

Como comentó Dmitry, un enfoque típico es marcador, longitud, carga útil y algún tipo de verificación matemática en el paquete. Y hay muchas formas de hacer el patrón de sincronización y las matemáticas. ppp usa un carácter específico, pero si ese carácter aparece en otro lugar en el paquete, entonces hacen esta cosa de dos caracteres, lo que hace que sea más procesable.

Entonces, si es bidireccional, use algún tipo de patrón de sincronización, longitud, carga útil, esquema de crc que pueda inventar. Si lo desea, puede usar el controlador DMA, ya que puede preparar los datos en el ram primero y luego dispararlo.

Si solo punto a punto no hay necesidad de complicar en exceso con ppp / slip o algo por el estilo.

Puedes deshacerte de la longitud si quieres que todo tenga la misma longitud. Podría decirse que también puede deshacerse del patrón de sincronización, pero la crc o la suma de comprobación u otra es IMO importante. El patrón de sincronización, incluso si un solo byte hace que la sincronización sea mucho más rápida, menos procesamiento.

La combinación de encabezado, longitud, carga útil y suma de control le permite cubrir paquetes cortos o modificados, no es perfecto, por supuesto, ningún sistema lo es, pero cubre los problemas comunes de datos corruptos y si necesita detenerse a corto paquete. Depende del diseño del software.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas