Cuprins:

Interfață STM32 CAN: 7 pași
Interfață STM32 CAN: 7 pași

Video: Interfață STM32 CAN: 7 pași

Video: Interfață STM32 CAN: 7 pași
Video: SKRv2 - How to install firmware on STM32F429 2024, Noiembrie
Anonim
Interfață CAN STM32
Interfață CAN STM32

Autobuzul de rețea a zonei de controler sau magistrala CAN este un protocol de comunicație foarte eficient datorită capacităților sale de viteză mare, fiabilității pe distanțe lungi și imunității la zgomot. Din aceste motive, comunicarea CAN a devenit standard în tehnologiile auto și în mediile cu zgomot ridicat. Dispozitivele de pe magistrala CAN se numesc noduri. Toate nodurile de pe magistrala CAN sunt conectate în paralel, ceea ce înseamnă că fiecare nod este conectat la toate celelalte noduri din rețea. O singură magistrală CAN poate avea până la 115 noduri simultan, în funcție de rata de transmitere a mesajelor, dar pentru majoritatea aplicațiilor, se recomandă să aveți până la 32 de dispozitive. De asemenea, se recomandă păstrarea lungimii între primul și ultimul nod la mai puțin de 40 de metri distanță.

Acest tutorial pas cu pas vă va arăta cum să configurați un nod CAN utilizând microcontrolerul STM32, inclusiv circuitul și codul C simplu pentru a citi și a scrie pe magistrala CAN

Provizii

Pentru fiecare nod CAN:

  • 1x panou STM32 (Nucleo, Blue Pill, altele)
  • 1x IC transceiver CAN MCP2551
  • 1x condensator 0,1µF
  • 1x rezistor de 120Ω
  • 1x rezistor 1kΩ
  • 1+ intrare lizibilă (buton, comutator, potențiometru etc.) sau ieșire (LED, MOSFET etc.)
  • 1x conector Dsub9

Pasul 1: Circuitul transceiverului

Circuitul Transceiver-ului
Circuitul Transceiver-ului

Pentru a comunica cu magistrala CAN, vom folosi IC-ul transmițătorului CAN MCP2551. IC funcționează ca o pereche intermediară de emițător / receptor pentru a conecta STM32 la magistrala CAN. Circuitul pentru configurarea acestui IC este destul de simplu, dar există câteva lucruri de remarcat:

  • CAN_RX (pinul 4) și CAN_TX (pinul 1) de pe cipul MCP2551 pot merge doar la anumiți pini de pe STM32.

    • Pe STM32F1 Nucleo, conectați linia RX la pinul PB8 și linia TX la pinul PB9.
    • Pe pastila albastră STM32F1, conectați RX la pinul PA11 și TX la pinul PA12.
    • Rețineți că aceste atribuiri de pini au alternative. Consultați manualele microcontrolerului pentru a determina ce pini sunt capabili de CAN_RD și CAN_TD
    • Dacă utilizați un Arduino sau o placă fără un comunicator CAN încorporat, cipul IC MCP2515 va fi necesar pentru a converti alte protocoale de mesaje în CAN.
  • Pinul CANL ar trebui să fie conectat la ceilalți pin CANL ai celorlalte noduri de magistrală. Același lucru este valabil și pentru pinii CANH.
  • Rezistorul de 120Ω pe pinii CANH și CANL este necesar numai dacă nodul este un nod terminal. Aceasta înseamnă că se află la sfârșitul cablării conexiunii paralele. Cu alte cuvinte, magistrala CAN ar trebui să aibă doar două rezistențe de 120Ω și ar trebui să fie cât mai departe una de cealaltă.
  • În cele din urmă, rezistorul de 1kΩ pe RS (pinul 8) poate fi schimbat cu un rezistor de 10kΩ pentru a controla timpul de creștere / scădere a biților de mesaj CAN. Consultați fișa tehnică a cipului MCP2551 pentru mai multe detalii.

Pasul 2: Citirea și scrierea pe CAN Bus

Citirea și scrierea la CAN Bus
Citirea și scrierea la CAN Bus

Acum, când circuitul transceiverului este conectat la STM32, putem începe să scriem mesaje pe magistrala CAN. Acest ghid instructiv nu va intra în profunzime în codul STM32. Cu toate acestea, asigurați-vă că verificați codul nostru pentru exemple aici. Utilizarea STM32 ca nod CAN va necesita un fișier antet CAN. Ne-am scris propria noastră, care poate fi găsită pe github-ul nostru aici. Aici, vom oferi o scurtă prezentare generală a procesului de citire / scriere.

Pentru a citi din autobuzul CAN, trebuie mai întâi să cunoaștem ID-ul mesajului CAN. Fiecare mesaj ar trebui să aibă un ID unic, cu ID-uri mai mici având prioritate mai mare. Fragmentul de cod afișat aici așteaptă un mesaj CAN cu ID 0x622. În sistemul nostru, dacă primul bit al celui de-al 6-lea octet este ridicat, atunci vrem să stabilim pinul A10 ridicat.

Când scriem un mesaj CAN, trebuie să ne amintim că mesajele CAN sunt multi-octet. Fiecare mesaj scris trebuie să aibă un ID și o lungime. În al doilea fragment de cod afișat, scriem date pe fiecare octet, apoi trimitem mesajul (ID-ul și parametrii de lungime sunt definiți mai devreme în cod).

Pasul 3: Conectarea nodurilor

Conectarea nodurilor
Conectarea nodurilor

La conectarea mai multor noduri CAN, trebuie acordată o atenție deosebită lungimii cablurilor. Cele două noduri cele mai îndepărtate pot fi la distanță de 40m unul de celălalt. Nodurile din mijloc care se conectează la autobuz trebuie să se afle la mai puțin de 50 cm de liniile principale de autobuz.

Conexiunile CAN respectă un standard industrial de utilizare a unui conector Dsub9 cu linia CANL pe pinul 2 și linia CANH pe pinul 7. Opțiunea linia CANGND poate merge pe pinul 3.

Pasul 4: Faceți PCB-ul

Faceți PCB-ul
Faceți PCB-ul

Când rutareți semnale CAN pe un PCB, amintiți-vă că CAN este un semnal diferențial și, prin urmare, ghidurile de rutare pentru CANH și CANL trebuie respectate cu atenție.

Pasul 5: extinderea consiliului

Extinderea consiliului
Extinderea consiliului

Aruncați câteva noduri împreună, adăugați câteva intrări / ieșiri și conectați toate pin-urile CANH și CANL. Rețineți că fiecare STM32 sau alt microcontroler necesită propriul său cip MCP2551; nu pot fi împărtășite.

Acestea fiind spuse, încercați să vă păstrați PCB-urile mai mici decât cel prezentat aici

Pasul 6: Comandați-vă PCB-urile de la JLCPCB

Comandați-vă PCB-urile de la JLCPCB
Comandați-vă PCB-urile de la JLCPCB

JLCPCB oferă servicii rapide și de înaltă calitate la prețuri foarte rezonabile. Obțineți 5 plăci, orice culoare cu tone de personalizare, la doar 2 USD! Și dacă este prima dvs. comandă, obțineți 10 plăci la același preț!

Încărcați-vă gerberii și obțineți o ofertă instantanee! Trimiteți comanda și panourile dvs. vor fi revizuite pentru producție în decurs de o oră. După ce plătiți, vă puteți aștepta la plăcile dvs. de înaltă calitate în cel puțin trei zile!

Verifică-l aici

Pasul 7: Obțineți consiliile

Ia-ți consiliile!
Ia-ți consiliile!

Strigă uriaș către JLCPCB pentru sponsorizarea acestui proiect. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), este cea mai mare întreprindere de prototipuri PCB din China și un producător de înaltă tehnologie specializat în prototipare rapidă PCB și producție de PCB cu lot mic. Au avut amabilitatea de a oferi UBC Solar noile noastre PCB-uri pentru mașina noastră de curse alimentată cu energie solară. Ne-am plasat comanda vineri și am primit panourile miercuri!

Recomandat: