| Start of frame | Arbitration Field | Control Field | Data Field | CRC Field | ACK Field | End Of Frame |
| 1 bit | 12 ou 32 bit | 6 bit | de 0 a 8 octets | 16 bit | 2 bit | 7 bit |
Une trame de données CAN commence par 1 bit dominant le Start of Frame qui permet la re-synchronisation des nœuds, puis, elle est suivie d'une trame d'arbitration. La suivante, le champ de contrôle contient la longueur du champ de données. Après le champ de données vient le Cyclic Redundancy Check qui est utilisé pour détecter une éventuelle erreur de transmission.
Taille d'un message
Le fait que CAN utilise un protocole de non retour à zéro (Non-Return-Zero ou NRZ) implique l'utilisation de bits de remplissage (stuff bit). Ces bits de remplissage sont rajoutés dans les messages CAN afin qu'il n'y ait jamais plus de 5 bits ayant la même valeur.
Les champs pouvant être modifiés par le bit stuffing sont les suivants :
- Arbitration Field
- Control Field
- Data Field
- CRC Field
Il est important de prendre en compte ces bits de remplissage pour pouvoir déterminer combien de nœuds peuvent être utilisés sur un même bus en fonction de la fréquence des échanges de données.
La formule ci-contre représente la dimension d'un message CAN en fonction de la longueur de son champ de données (Data Length Code ou DLC) dans le meilleur et dans le pire cas de l'algorithme de stuffing:
Pour un message au format CAN standard : (34+8×DLC)≤TailleMessage<434+8×DLC−1+(34+8×DLC)
Pour un message au format CAN étendu : (54+8×DLC)≤TailleMessage<454+8×DLC−1+(54+8×DLC)
Dans la réalité, il est impossible d'atteindre le pire des cas ou NombreStuffBit=(4TailleMessage) car le champ de control contient deux bits dominants et le champ DLC ayant comme valeur maximum 8, il ne peut pas contenir que des bits de même valeur.
Il existe une formule empirique donnant une approximation du nombre maximum de stuff bits pour une trame CAN d'un DLC donné. Cette formule est exacte dans plus de 99% des cas: NombreMax = NombreTheoriqueMaximu**m − 3
COB-ID
Chaque trame CANopen commence par un COB-ID faisant office d'identifiant de cette trame. Au cours de la phase de configuration, chacun des noeuds reçoit le COB-ID de la (ou les) trame(s) dont il est le récepteur ou l'émetteur.