Table des matières:

Interface CAN STM32 : 7 étapes
Interface CAN STM32 : 7 étapes

Vidéo: Interface CAN STM32 : 7 étapes

Vidéo: Interface CAN STM32 : 7 étapes
Vidéo: STM32 : 7-Segment Interface using STM32CUBE IDE 2024, Novembre
Anonim
Interface CAN STM32
Interface CAN STM32

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

Le circuit émetteur-récepteur
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

Lecture et écriture sur le bus CAN
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

Connexion des nœuds
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

Faire le PCB
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

Élargir le Conseil
Élargir le Conseil

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

Commandez vos PCB auprès de JLCPCB
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

Obtenez vos planches !
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é: