Ya escribiste que la velocidad máxima de datos es 1Mbit / s, pero esta es la velocidad sin procesar .
Un mensaje CAN (marco de datos) tiene este aspecto en el ámbito:
( Fuente )
y consta de estas secciones con su longitud en bits:
Start-of-frame 1
Identifier (green) 11
Remote transmission request (RTR) (blue) 1
Identifier extension bit (IDE) 1
Reserved bit (r0) 1
Data length code (DLC) (yellow) 4
Data field (red) 0–64
CRC 15
CRC delimiter 1
ACK slot 1
ACK delimiter 1
End-of-frame (EOF) 7
Inter-frame bits 3
( Fuente )
es decir, hay 46 bits de "administración" para hasta 64 bits de datos.
Esto reduce su tasa de datos neta a aproximadamente 580kBit / s .
El remitente envía un 0 recesivo en la ranura ACK, y el receptor lo llevará a un 1 dominante cuando el mensaje se recibió correctamente. Esto significa que el mecanismo de reconocimiento ya es parte de este marco de datos y no cuesta ancho de banda adicional.
Inter-frame bits
es la distancia mínima entre dos cuadros, por lo que el siguiente cuadro puede seguir directamente. Sin embargo, si hay más tráfico en el bus, la velocidad de datos puede reducirse drásticamente. Tenga en cuenta: quienquiera que tenga que enviar un mensaje verifica si alguien más está hablando y, si no, comienza a hablar. Si dos dispositivos comienzan a hablar al mismo tiempo, notarán esto, abortarán, esperarán un poco e intentarán nuevamente. (Es como si varias personas hablaran entre sí. Algunas tienden a decir unas pocas palabras, se detienen por un segundo y vuelven a hablar. A veces no puedes saltar para decir lo que quieres ...)
Finalmente, todos los dispositivos deben configurarse a 1MBit / s, y la longitud máxima del cable está limitada a 40m.
Aparte de esto, necesita averiguar qué velocidad de datos puede manejar su MCU. Es posible que el módulo CAN de la MCU pueda manejar una velocidad de bus de 1MBit / s, pero que la MCU no pueda copiar los datos del módulo antes de que llegue el siguiente módulo. En estos casos, debe implementar pausas entre los marcos.