Turinys:
- Prekės
- 1 žingsnis: siųstuvo -imtuvo grandinė
- 2 žingsnis: skaitymas ir rašymas į CAN magistralę
- 3 žingsnis: mazgų sujungimas
- 4 žingsnis: Padarykite PCB
- 5 žingsnis: išplėskite valdybą
- 6 veiksmas: užsisakykite savo PCB iš JLCPCB
- 7 žingsnis: įsigykite lentas
Video: STM32 CAN sąsaja: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
„Controller Area Network“magistralė arba CAN magistralė yra labai efektyvus ryšio protokolas dėl savo didelės spartos galimybių, patikimumo per ilgą atstumą ir atsparumo triukšmui. Dėl šių priežasčių CAN komunikacija tapo automobilių technologijų ir didelio triukšmo aplinkos standartu. Įrenginiai CAN magistralėje vadinami mazgais. Visi CAN magistralės mazgai yra sujungti lygiagrečiai, tai reiškia, kad kiekvienas mazgas yra prijungtas prie visų kitų tinklo mazgų. Vienoje CAN magistralėje vienu metu gali būti iki 115 mazgų, priklausomai nuo pranešimų perdavimo greičio, tačiau daugumoje programų rekomenduojama turėti iki 32 įrenginių. Taip pat rekomenduojama atstumą tarp pirmo ir paskutinio mazgo laikyti mažesniu nei 40 metrų atstumu.
Ši žingsnis po žingsnio instrukcija parodys, kaip nustatyti CAN mazgą naudojant STM32 mikrovaldiklį, įskaitant grandinę ir paprastą C kodą skaityti ir rašyti CAN magistralėje
Prekės
Kiekvienam CAN mazgui:
- 1x STM32 pertraukimo lenta („Nucleo“, „Blue Pill“ir kt.)
- 1x MCP2551 CAN siųstuvas -imtuvas IC
- 1x 0,1µF kondensatorius
- 1x 120Ω rezistorius
- 1x 1kΩ rezistorius
- 1+ skaitomas įėjimas (mygtukas, jungiklis, potenciometras ir kt.) Arba išėjimas (LED, MOSFET ir kt.)
- 1x Dsub9 jungtis
1 žingsnis: siųstuvo -imtuvo grandinė
Norėdami bendrauti su CAN magistralė, naudosime MCP2551 CAN siųstuvo -imtuvo IC. IC veikia kaip tarpinė siųstuvo/imtuvo pora, jungianti STM32 prie CAN magistralės. Šio IC nustatymo grandinė yra gana paprasta, tačiau reikia atkreipti dėmesį į keletą dalykų:
-
MCP2551 lusto CAN_RX (4 kaištis) ir CAN_TX (1 kaištis) gali pereiti tik prie tam tikrų STM32 kaiščių.
- „STM32F1 Nucleo“prijunkite RX liniją prie kaiščio PB8 ir TX linijos prie kaiščio PB9.
- Prie STM32F1 mėlynos tabletės prijunkite RX prie kaiščio PA11 ir TX prie kaiščio PA12.
- Atminkite, kad šie kaiščių priskyrimai turi alternatyvų. Žiūrėkite mikrovaldiklio vadovus, kad nustatytumėte, kurie kaiščiai gali CAN_RD ir CAN_TD
- Jei naudojate „Arduino“arba plokštę, kurioje nėra įmontuoto CAN komunikatoriaus, norint konvertuoti kitus pranešimų protokolus į CAN, reikės MCP2515 IC mikroschemos.
- CANL kaištis turi būti prijungtas prie kitų kitų magistralės mazgų CANL kaiščių. Tas pats pasakytina apie CANH kaiščius.
- 120Ω rezistorius per CANH ir CANL kaiščius reikalingas tik tuo atveju, jei mazgas yra galinis mazgas. Tai reiškia, kad jis yra lygiagrečios jungties laidų pabaigoje. Kitaip tariant, CAN magistralėje turi būti tik du 120Ω rezistoriai ir jie turi būti kuo toliau vienas nuo kito.
- Galiausiai RS 1kΩ rezistorius (8 kaištis) gali būti pakeistas į 10 kΩ rezistorių, kad būtų galima valdyti CAN pranešimų bitų kilimo/kritimo laiką. Daugiau informacijos rasite MCP2551 mikroschemos duomenų lape.
2 žingsnis: skaitymas ir rašymas į CAN magistralę
Dabar, kai siųstuvo -imtuvo grandinė yra prijungta prie STM32, galime pradėti rašyti pranešimus į CAN magistralę. Šis instrukcinis vadovas nesigilins į STM32 kodą. Tačiau būtinai peržiūrėkite mūsų kodą, kad gautumėte pavyzdžių. Norint naudoti STM32 kaip CAN mazgą, reikės CAN antraštės failo. Mes parašėme savo, kurį galite rasti mūsų „github“čia. Čia trumpai apžvelgsime skaitymo/rašymo procesą.
Norėdami skaityti iš CAN magistralės, pirmiausia turime žinoti CAN pranešimo ID. Kiekvienas pranešimas turi turėti unikalų ID, o žemesni ID turi didesnį prioritetą. Čia rodomas kodo fragmentas laukia CAN pranešimo, kurio ID 0x622. Mūsų sistemoje, jei pirmasis 6 baito bitas yra didelis, mes norime nustatyti kaištį A10 aukštą.
Rašydami CAN pranešimą, turime prisiminti, kad CAN pranešimai yra kelių baitų. Kiekvienas parašytas pranešimas turi turėti ID ir ilgį. Antrame parodytame kodo fragmente mes įrašome duomenis į kiekvieną baitą, tada išsiunčiame pranešimą (ID ir ilgio parametrai yra apibrėžti anksčiau kode).
3 žingsnis: mazgų sujungimas
Jungiant kelis CAN mazgus, reikia atidžiai atkreipti dėmesį į kabelių ilgį. Du tolimiausi mazgai gali būti iki 40 m atstumu vienas nuo kito. Viduriniai mazgai, jungiantys prie autobuso, turi būti 50 cm atstumu nuo pagrindinių autobusų linijų.
CAN jungtys atitinka pramonės standartą naudojant „Dsub9“jungtį su CANL linija 2 kaiščiu ir CANH linija 7 kaiščiu. Parinktis CANGND linija gali būti ant 3 kaiščio.
4 žingsnis: Padarykite PCB
Maršrutuodami CAN signalus į PCB, atminkite, kad CAN yra diferencinis signalas, todėl reikia atidžiai laikytis CANH ir CANL maršrutizavimo gairių.
5 žingsnis: išplėskite valdybą
Sujunkite dar kelis mazgus, pridėkite keletą įėjimų/išėjimų ir prijunkite visus jų CANH ir CANL kaiščius. Atkreipkite dėmesį, kad kiekvienam STM32 ar kitam mikrovaldikliui reikia savo MCP2551 lusto; jais negalima dalintis.
Tai pasakius, stenkitės, kad jūsų PCB būtų mažesni, nei parodyta čia
6 veiksmas: užsisakykite savo PCB iš JLCPCB
JLCPCB siūlo greitą, aukštos kokybės paslaugą už labai priimtiną kainą. Gaukite 5 bet kokios spalvos lentas su daugybe pritaikymų tik už 2 USD! Ir jei tai pirmas jūsų užsakymas, gaukite 10 lentų už tą pačią kainą!
Tiesiog įkelkite savo gerbėjus ir gaukite tiesioginę citatą! Pateikite užsakymą ir jūsų lentos bus peržiūrėtos per valandą. Kai sumokėsite, galite tikėtis, kad jūsų aukštos kokybės lentos bus vos per tris dienas!
Patikrinkite čia
7 žingsnis: įsigykite lentas
Didžiulis šauksmas JLCPCB už šio projekto rėmimą. JLCPCB (ShenzhenJLC Electronics Co., Ltd.) yra didžiausia PCB prototipų įmonė Kinijoje ir aukštųjų technologijų gamintojas, kurio specializacija yra greitas PCB prototipų kūrimas ir mažos partijos PCB gamyba. Jie buvo tokie malonūs, kad suteikė „UBC Solar“mūsų naujas PCB mūsų saulės energija varomam lenktyniniam automobiliui. Užsakėme penktadienį, o lentas gavome trečiadienį!
Rekomenduojamas:
Sąsaja su LCD ekranu M4 Įtraukimas: 5 žingsniai
Sąsaja naudojant LCD ekraną M4 pirmenybė „Drivemall“, o ne klasei
„Arduino“erdvėlaivio sąsaja: 3 žingsniai
„Arduino“erdvėlaivio sąsaja: „Hi Instructable“bendruomenė, šį kartą aš padariau vieną iš paprasčiausių projektų, kuriuos užbaigiau su „Arduino Uno“: erdvėlaivių grandine. Tai vadinama todėl, kad būtent tokio tipo programavimas ir grandinės būtų naudojamos ankstyvosiose mokslinės fantastikos TV laidose ir filmuose
8051 sąsaja su DS1307 RTC ir laiko žymos rodymas LCD ekrane: 5 žingsniai
8051 sąsaja su DS1307 RTC ir laiko žymos rodymas skystųjų kristalų ekrane: Šioje pamokoje mes jums paaiškinome, kaip galime sujungti 8051 mikrovaldiklį su ds1307 RTC. Čia mes rodome RTC laiką LCD, naudojant proteus modeliavimą
„Jammarduino DUE“- „pasidaryk pats“kompiuterio ir „Jamma“sąsaja arkadinėms spintelėms: 6 žingsniai
„Jammarduino DUE“- „pasidaryk pats“kompiuteris į „Jamma“sąsają, skirtą arkadinėms spintelėms: ši instrukcija parodys, kaip sukurti paprastą „Arduino DUE“skydą, kad prie kompiuterio būtų galima prijungti tikrą arkadinę mašiną su mažos skiriamosios gebos CRT ir „jamma“jungtimi. sustiprinti vaizdo signalą, sklindantį iš vaizdo įrašo
Darbo su „I2C“jutiklio sąsaja pradžia ?? - Sąsaja su jūsų MMA8451 naudojant ESP32: 8 žingsniai
Darbo su „I2C“jutiklio sąsaja pradžia ?? - Sąsaja su jūsų MMA8451 naudojant ESP32: Šioje pamokoje sužinosite viską apie tai, kaip paleisti, prijungti ir gauti I2C įrenginį (akselerometrą), dirbantį su valdikliu (Arduino, ESP32, ESP8266, ESP12 NodeMCU)