Décodage des trames CAN

Bonjour à tous!!

Je suis nouveau sur le forum et je viens à vous car j’ai un problem que je n’arrive pas à résoudre par mes propres moyens.

Actuellement, je travail avec une carte arduino uno et un shield can (https://www.seeedstudio.com/CAN-BUS-Shield-V2-p-2921.html).

Je récupère bien les identifiants et les trames issues du CAN, je les transfère sur la carte SD du shield et les copie dans un fichier .csv.

Ma question est: Comment puis-je decoder les trames, par octet, sans passer par un logiciel? J’ai fait plusieurs recherchent sur internet et j’ai constater une multitude de logiciel DBC pour faire cela. Mais je voudrais faire un programme qui puisse directement decoder les trames.

Pourriez-vous me venir en aide?

Merci d’avance pour vos réponses.

Je récupère bien … les trames issues du CAN,

Donc c’est simple si vous avez la trame:

La trame de données sert à envoyer des informations aux autres nœuds.

Une trame de données se compose de 7 champs différents :

Le début de trame ou SOF (Start Of Frame) matérialisé par 1 bit dominant,
Le champ d’arbitrage (identificateur) composé de 12 ou 30 bits,
Le champ de commande (ou de contrôle) composé de 6 bits,
Le champ de données composé de 0 à 64 bits (de 0 à 8 octets),
Le champ de CRC composé de 16 bits,
Le champ d’acquittement composé de 2 bits,
La fin de trame ou EOF (End of Frame) matérialisée par 7 bits récessifs.

Donc:

1/ Vous lisez et comprenez la spec décrivant les trames (ISO 11898 part B → CAN 2.0B « extended frame format » (identification sur 29bits))
2/ Vous écrivez un analyseur syntaxique respectant le protocole
3/ c’est tout :slight_smile: