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 »:
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:
- Il existe de nombreux PIC intégrant cette interface CAN (le PIC 18F2480 par ex).
- Le MCP2551 fonctionne en 5V, le Due en 3.3V…
- 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:
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 !!!