Cuprins:
- Provizii
- Pasul 1: Circuitul transceiverului
- Pasul 2: Citirea și scrierea pe CAN Bus
- Pasul 3: Conectarea nodurilor
- Pasul 4: Faceți PCB-ul
- Pasul 5: extinderea consiliului
- Pasul 6: Comandați-vă PCB-urile de la JLCPCB
- Pasul 7: Obțineți consiliile
Video: Interfață STM32 CAN: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
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
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
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
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
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
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
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
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:
Interfață senzor capacitiv de amprentă digitală cu Arduino UNO: 7 pași
Interfață senzor capacitiv de amprentă digitală cu Arduino UNO: Hei, ce se întâmplă, băieți! Akarsh aici de la CETech. Astăzi vom adăuga un strat protector proiectelor noastre. Nu vă faceți griji, nu vom numi nici un bodyguarzi pentru același lucru. Va fi un senzor de amprentă digitală drăguț și frumos de la DFRobot. Deci
Interfață cu un ecran LCD M4 Incluziune: 5 pași
Interfațarea cu un afișaj LCD M4 Incluziune: acest tutorial ne va permite să controlăm un ecran LCD prin Wi-Fi de pe smartphone-ul nostru Dacă nu avem drivermall putem folosi arduino, dar sub linkul pentru dezvoltarea Drivemall. preferând Drivemall peste cla
Cum se face driver LCD static cu interfață I²C: 12 pași
Cum se face driver LCD static cu interfață I²C: Afișajele cu cristale lichide (LCD) sunt utilizate pe scară largă pentru aplicații comerciale și industriale datorită proprietăților vizuale bune, costurilor reduse și consumului redus de energie. Aceste proprietăți fac din LCD soluția standard pentru dispozitivele cu baterii
Noțiuni introductive despre interfața senzorului I2C ?? - Interfață MMA8451 folosind ESP32s: 8 pași
Noțiuni introductive despre interfața senzorului I2C ?? - Interfața MMA8451 folosind ESP32s: În acest tutorial, veți afla totul despre cum să porniți, să conectați și să obțineți dispozitivul I2C (accelerometru) care funcționează cu controlerul (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfață senzor ADXL335 pe Raspberry Pi 4B în 4 pași: 4 pași
Interfață senzor ADXL335 pe Raspberry Pi 4B în 4 pași: În acest instructable vom interfața un senzor ADXL335 (accelerometru) pe Raspberry Pi 4 cu Shunya O / S