Transmisión de datos a través de CAN

-2

Estoy intentando enviar datos a través de CAN en lugar de usar un puerto serie. Podría emitir lo siguiente a través del puerto serie sin problemas utilizando el búfer FIFO:

SERIAL_Send_String("ABCDEFGHI");
SERIAL_Send_String("JKLMNOPQRSTUV");

Cuando intento transmitir los datos a través de CAN, CAN no puede transmitir el segundo mensaje porque todavía está ocupado con el primero. ¿Existe algún método para utilizar la cola del mensaje y el proceso cuando se ha consumido el mensaje anterior?

    
pregunta Clive

1 respuesta

4

CAN no es un reemplazo directo para un puerto serie. Lee la especificación.

Los datos a través de una conexión en serie (puerto COM en sistemas PC, UART en microcontroladores) es un flujo de bytes bidireccional. Algunas implementaciones utilizan líneas adicionales para el control de flujo, pero generalmente no están controladas ni son accesibles para la capa de aplicación. Básicamente, no hay señalización fuera de banda disponible para las aplicaciones, excepto en implementaciones inusuales que usan algunos cables adicionales.

CAN, por otro lado, transmite paquetes . Cada paquete está limitado a 8 bytes de datos y contiene información fuera de banda a la que pueden acceder las aplicaciones. Cada paquete contiene una ID de 11 bits o 29 bits. No puede simplemente enviar bytes a través de CAN como puede hacerlo a través de un puerto serie. Esto es lo mismo, ya que tampoco puedes enviar bytes a través de Ethernet.

Como siempre, debes leer la especificación antes de hacer el diseño y luego preguntarte por qué no funciona.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas