Arduino Due: le CAN

Wikis > Les Tutoriels > Arduino Due: le CAN

Le CAN

Attention: ne pas confondre « Controller Area Network« , et « Convertisseur Analogique-Numérique » !

L’Arduino Due possède 2 pins labellisées « CANRX » et « CANTX »:

Arduino Due CAN pin

Elle permettent de se connecter sur un « bus » de type CAN.

La couche physique

Pour se connecter physiquement sur un bus, il faut une interface.

Celle utilisée dans mon cas est le MCP2551 de chez Microchip.

Notes:

  1. Il existe de nombreux PIC intégrant cette interface CAN (le PIC 18F2480 par ex).
  2. Le MCP2551 fonctionne en 5V, le Due en 3.3V…
  3. Il existe le MCP2562 (avec pin VIO) qui permet de s’interfacer en 3.3V, mais je n’en ai pas…

Le circuit (KiCad) est donc le suivant:

l'interface MCP2551 avec mise à niveau 3.3V
l’interface MCP2551 avec mise à niveau 3.3V

La partie gauche (reliée aux pin CANRX et CANTX du Due) est l’interfaçage 5V / 3.3V

RX: 5V -> 3.3V avec pont diviseur de résistances 10k/20k

TX: 3.3V -> 5V avec MOSFET-N type 2N7000, voir ici (Anglais)

En fait, c’est riche et inutile: un niveau de 3.3V en entrée du MCP2551 est déjà considéré comme High. A supprimer donc.

Le SW

La librairie CAN est récupérée sur GitHub. Downloader le ZIP et installer dans le répertoire libraries.

Ayant relié CANH/CANL à une DB9, pour connexion sur une interface Peak-CAN, des trames sont transmises du PC -> Peak-CAN

Les trames envoyées par le PC sur le bus CAN sont maintenant reçues par l’Arduino Due !!!

Arduino Due CAN trames