Table des matières:
- Fournitures
- Étape 1: Le circuit émetteur-récepteur
- Étape 2: lecture et écriture sur le bus CAN
- Étape 3: Connexion des nœuds
- Étape 4: Faire le PCB
- Étape 5: Élargir le tableau
- Étape 6: Commandez vos PCB auprès de JLCPCB
- Étape 7: Obtenez vos planches
Vidéo: Interface CAN STM32 : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Le bus Controller Area Network, ou bus CAN, est un protocole de communication très efficace grâce à ses capacités à grande vitesse, sa fiabilité à longue portée et son immunité au bruit. Pour ces raisons, la communication CAN est devenue la norme dans les technologies automobiles et les environnements bruyants. Les appareils sur le bus CAN sont appelés nœuds. Tous les nœuds du bus CAN sont connectés en parallèle, ce qui signifie que chaque nœud est connecté à tous les autres nœuds du réseau. Un seul bus CAN peut avoir jusqu'à 115 nœuds à la fois, selon le taux de transmission des messages, mais pour la plupart des applications, il est recommandé d'avoir jusqu'à 32 appareils. Il est également recommandé de maintenir la longueur entre le premier et le dernier nœud à moins de 40 mètres l'un de l'autre.
Ce didacticiel étape par étape vous montrera comment configurer un nœud CAN à l'aide du microcontrôleur STM32, y compris le circuit et le code C simple pour lire et écrire sur le bus CAN
Fournitures
Pour chaque nœud CAN:
- 1x carte de dérivation STM32 (Nucleo, Blue Pill, autres)
- 1x IC émetteur-récepteur CAN MCP2551
- 1x condensateur 0,1µF
- 1x résistance 120Ω
- 1x résistance 1kΩ
- 1+ entrée lisible (bouton, interrupteur, potentiomètre, etc.) ou sortie (LED, MOSFET, etc.)
- 1x connecteur Dsub9
Étape 1: Le circuit émetteur-récepteur
Pour communiquer avec le bus CAN, nous utiliserons le CI émetteur-récepteur CAN MCP2551. Le CI agit comme une paire émetteur/récepteur intermédiaire pour connecter le STM32 au bus CAN. Le circuit pour configurer ce circuit intégré est assez simple, mais il y a quelques points à noter:
-
Le CAN_RX (broche 4) et le CAN_TX (broche 1) de la puce MCP2551 ne peuvent aller qu'à certaines broches du STM32.
- Sur le STM32F1 Nucleo, connectez la ligne RX à la broche PB8 et la ligne TX à la broche PB9.
- Sur la pilule bleue STM32F1, connectez RX à la broche PA11 et TX à la broche PA12.
- Notez que ces affectations de broches ont des alternatives. Reportez-vous aux manuels du microcontrôleur pour déterminer quelles broches sont capables de CAN_RD et CAN_TD
- Si vous utilisez un Arduino ou une carte sans communicateur CAN intégré, la puce IC MCP2515 sera nécessaire pour convertir d'autres protocoles de message en CAN.
- La broche CANL doit être connectée aux autres broches CANL des autres nœuds de bus. Il en va de même pour les broches CANH.
- La résistance de 120 Ω entre les broches CANH et CANL n'est requise que si le nœud est un nœud terminal. Cela signifie qu'il est à la fin du câblage de connexion parallèle. En d'autres termes, le bus CAN ne doit contenir que deux résistances de 120 Ω et elles doivent être aussi éloignées que possible l'une de l'autre.
- Enfin, la résistance de 1kΩ sur RS (broche 8) peut être échangée contre une résistance de 10kΩ pour contrôler le temps de montée/descente des bits du message CAN. Reportez-vous à la fiche technique de la puce MCP2551 pour plus de détails.
Étape 2: lecture et écriture sur le bus CAN
Maintenant que le circuit émetteur-récepteur est connecté au STM32, nous pouvons commencer à écrire des messages sur le bus CAN. Ce guide instructable n'ira pas en profondeur dans le code STM32. Cependant, assurez-vous de consulter notre code pour des exemples ici. L'utilisation du STM32 comme nœud CAN nécessitera un fichier d'en-tête CAN. Nous avons écrit le nôtre, qui peut être trouvé sur notre github ici. Ici, nous allons donner un bref aperçu du processus de lecture/écriture.
Pour lire à partir du bus CAN, nous devons d'abord connaître l'ID du message CAN. Chaque message doit avoir un identifiant unique, les identifiants inférieurs ayant une priorité plus élevée. L'extrait de code affiché ici attend un message CAN avec l'ID 0x622. Dans notre système, si le premier bit du 6ème octet est haut, alors nous voulons mettre la broche A10 à l'état haut.
Lors de l'écriture d'un message CAN, nous devons nous rappeler que les messages CAN sont multi-octets. Chaque message écrit doit avoir un identifiant et une longueur. Dans le deuxième extrait de code affiché, nous écrivons des données sur chaque octet, puis envoyons le message (les paramètres d'ID et de longueur sont définis plus tôt dans le code).
Étape 3: Connexion des nœuds
Lors de la connexion de plusieurs nœuds CAN, une attention particulière doit être portée à la longueur des câbles. Les deux nœuds les plus éloignés peuvent être jusqu'à 40 m l'un de l'autre. Les nœuds intermédiaires connectés au bus doivent être à moins de 50 cm des lignes de bus principales.
Les connexions CAN suivent une norme de l'industrie consistant à utiliser un connecteur Dsub9 avec la ligne CANL sur la broche 2 et la ligne CANH sur la broche 7. L'option ligne CANGND peut aller sur la broche 3.
Étape 4: Faire le PCB
Lorsque vous acheminez des signaux CAN sur un PCB, n'oubliez pas que CAN est un signal différentiel et que, par conséquent, les directives de routage pour le CANH et le CANL doivent être suivies attentivement.
Étape 5: Élargir le tableau
Rassemblez quelques nœuds supplémentaires, ajoutez des entrées/sorties et connectez toutes leurs broches CANH et CANL. Notez que chaque STM32 ou autre microcontrôleur nécessite sa propre puce MCP2551; ils ne peuvent pas être partagés.
Cela dit, essayez de garder vos PCB plus petits que celui montré ici
Étape 6: Commandez vos PCB auprès de JLCPCB
JLCPCB offre un service rapide et de haute qualité à des prix très raisonnables. Obtenez 5 planches, de n'importe quelle couleur avec des tonnes de personnalisation, pour seulement 2 $ ! Et si c'est votre première commande, obtenez 10 planches pour le même prix !
Téléchargez simplement vos gerbers et obtenez un devis instantané ! Soumettez votre commande et vos planches seront examinées pour la production dans l'heure. Une fois que vous avez payé, vous pouvez vous attendre à vos planches de haute qualité en trois jours seulement !
Vérifiez le ici
Étape 7: Obtenez vos planches
Un grand merci à JLCPCB pour le parrainage de ce projet. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), est la plus grande entreprise de prototypes de PCB en Chine et un fabricant de haute technologie spécialisé dans le prototypage rapide de PCB et la production de PCB en petits lots. Ils ont eu la gentillesse de fournir à UBC Solar nos nouveaux PCB pour notre voiture de course à énergie solaire. Nous avons passé notre commande vendredi et reçu les planches mercredi !
Conseillé:
Comment créer un pilote LCD statique avec l'interface I²C : 12 étapes
Comment créer un pilote LCD statique avec interface I²C : Les écrans à cristaux liquides (LCD) sont largement utilisés pour les applications commerciales et industrielles en raison de leurs bonnes propriétés visuelles, de leur faible coût et de leur faible consommation d'énergie. Ces propriétés font de l'écran LCD la solution standard pour les appareils fonctionnant sur batterie
Interface du vaisseau spatial Arduino : 3 étapes
Interface de vaisseau spatial Arduino : communauté instructable de salut, cette fois j'ai fait l'un des projets les plus simples à réaliser avec un Arduino Uno : un circuit de vaisseau spatial. C'est ce qu'on appelle parce que c'est le type de programmation et de circuits qui seraient utilisés dans les premières émissions de télévision et films de science-fiction
Kit d'interface Web Python complet pour PhidgetSBC3 : 6 étapes
Kit d'interface Web Python complet pour PhidgetSBC3 : la carte PhidgetSBC3 est un ordinateur monocarte entièrement fonctionnel, exécutant Debain Linux. Il est similaire au raspberry Pi, mais possède 8 entrées de capteur analogiques et 8 entrées numériques et 8 sorties numériques. Il est livré avec un serveur Web et une application Web pour co
Jammarduino DUE - Interface DIY PC vers Jamma pour armoires d'arcade : 6 étapes
Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets : cette instructable vous montrera comment créer un simple bouclier pour Arduino DUE pour interfacer une véritable machine d'arcade avec un CRT basse résolution et un connecteur jamma à votre PC. Les principaux objectifs du bouclier sont : - pour amplifier le signal vidéo provenant de la vidéo
Interface ADXL335 Sensor sur Raspberry Pi 4B en 4 étapes : 4 étapes
Interface capteur ADXL335 sur Raspberry Pi 4B en 4 étapes : dans ce Instructable, nous allons interfacer un capteur ADXL335 (accéléromètre) sur Raspberry Pi 4 avec Shunya O/S