LOCODUINO
Discussions Générales => Bus CAN => Discussion démarrée par: Jean-Luc le novembre 19, 2018, 11:31:05 am
-
Bonjour,
Actuellement le contrôleur CAN utilisé conjointement avec les Arduino est le MCP2515. Ce composant est sorti en 2003. Il possède 3 buffers d'émission et deux buffers de réception (RXB0 et RXB1). Pour sélectionner uniquement les messages qui sont pertinents, RXB0 possède 1 masque et 2 filtres et RXB1 1 masque et 4 filtres
En 2017 Microchip a sorti un nouveau contrôleur, le MCP2517FD. Ce composant possède une RAM interne de 2ko pour les buffers (hé oui autant que l'Arduino Uno) et permet de configurer 31 FIFO de messages en émission ou en réception, 32 masques ou filtres. L'interêt immédiat est :
- de libérer la mémoire de l'Arduino qui sert au stockage des messages en réception
- d'avoir beaucoup de place pour stocker les messages en réception
- de bénéficier d'une FIFO en émission gratuitement en terme de mémoire pour que l'émission ne soit pas bloquante si le message précédent n'est pas parti
En mode CAN2.0B, il est évidemment compatible avec le 2515
Mon collègue Pierre a écrit un driver pour ce composant : https://github.com/pierremolinaro/acan2517
Cette bibliothèque est téléchargeable via le gestionnaire de bibliothèques de l'IDE
J'ai dessiné une petite carte que je vais bientôt faire fabriquer pour essayer, je vous tiens au courant.
-
Merci Jean-Luc !
-
De rien Christophe :)
Voici l'engin. On peut l'utiliser comme shield ou comme carte pour un Nano
(http://www.locoduino.org/pic/CANFD/mcp2517fd-shield.jpg)
-
Très jolie carte comme d'habitude (tu es un artiste ;D)
Je suis intéressé pour la tester.
Amicalement
Dominique
-
Une carte CAN intelligente :)
Cela m'intéresse au plus haut point.
Merci Jean Luc
Didier
-
C'est parti à la fab :)
-
Seeed a expédié les cartes :)
-
J'ai monté un shield complètement et il a été testé avec la bibliothèque ACAN2517 release 1.1.3 (https://github.com/pierremolinaro/acan2517) avec son auteur et avec succès.
À noter une rustine : ajout d'une résistance de 10kΩ entre CS et VDD. En effet, à la mise sous tension et avant que l'Arduino ne programme CS en sortie, CS flotte et valide la communication SPI vers le 2517 avec des données quelconques (SCK et MOSI flottant également), ce qui conduit à écrire des choses dans les registres du MCP2517 et à, parfois, le planter avec impossibilité de faire un reset via le SPI.
-
Bonjour Jean Luc
M intéressant ces temps ci au CAN j ai quelques points à soulever.
Quelques questions sur le PCB et observations:
Les gerbers sont ils dispos sur le Git LOCODUINO? ( avec la BOM que l on devine un peu :) )
Tu parles d ajout d une résistance de 10K entre VDD et CS ==> donc entre les broches 13 et 14 du MCP2517?
D0 et D1 sont permutées ( croisés pourquoi??)
Il est possible de relier la masse via la broche 4 du Nano plutôt que de passer entre les broches 5 et 6 ( resp D2 et D3)
Enfin il me semble possible d extraire les broches A6 et A7 vers le coin supérieur droit pour une utilisation éventuelle.
Merci d avance pour tes observations.
Laurent
-
Hello
Dernier point les GND a gauche ne sont pas liés, a corriger aussi donc.
Laurent