Le bus CAN
Les trames de données (Data Frames) sont composées de 7 parties détaillées ci-après. Le format est indiqué pour des trames respectant le protocole 2.0A.
- Start of frame
- Arbitration field
- Control field
- Data field
- CRC field
- ACK field
- End of frame (EOF)
Le bit Start Of Frame (SOF) marque le début d'une Data Frame ou d'une Remote frame. C'est un unique bit dominant. Un noeud ne peut bien sûr débuter une transmission que si le bus est libre. Ensuite, tous les autres noeuds se synchronisent sur SOF du noeud ayant commencé une transmission.
L'Arbitration field est constitué de l'identifieur et du bit RTR. L'identificateur (ID) permet d'identifier le message. Il est transmis dans l'ordre ID10 à ID0, où ID0 est le bit le moins significatif. Le bit RTR (Remote Transmission Request) caractérise les Remote Frames. Il est dominant dans les Data Frames et récessif dans les Remote Frames.
Le Control field est composé de 6 bits. Les 2 premiers sont des bits réservés et les 4 suivants constituent le Data length code (DLC). Le DLC indique le nombre d'octets du Data field. La valeur du DLC est forcément comprise entre 0 et 8, soit 9 valeurs. 4 bits dominants (0000) correspondent à la valeur 0 pour le DLC, tandis que 1 bit récessif et 3 bits dominant (1000) correspondent à la valeur 8.
Ce sont les données transmises par la Data frame. Il peut contenir de 0 à 8 octets, où chaque octet est transmis avec le bit de poids fort en premier.
Le CRC field est composé de la séquence de CRC sur 15 bits suivi du CRC delimiter (1 bit récessif). La séquence de CRC (Cyclic redundancy code) permet de vérifier l'intégrité des données transmises. Les bits utilisés dans le calcul du CRC sont ceux du SOF, de l'Arbitration field, du Control field et du Data field.
Le ACK field est composé de 2 bits, l'ACK Slot et le ACK Delimiter (1 bit récessif). Le noeud en train de transmettre envoie un bit récessif pour le ACK Slot. Un noeud ayant reçu correctement le message en informe le transmetteur en envoyant un bit dominant pendant le ACK Slot : il acquitte le message.
Chaque Data frame et Remote frame est terminée par une séquence de 7 bits récessifs.
Voici un synoptique de déroulement d'une communication: