Turinys:

STM32 CAN sąsaja: 7 žingsniai
STM32 CAN sąsaja: 7 žingsniai

Video: STM32 CAN sąsaja: 7 žingsniai

Video: STM32 CAN sąsaja: 7 žingsniai
Video: STM32 + Ethernet / Чип W5500 от WIZnet / Сокеты и простой рассказ о построении WEB сервера. Часть 2. 2024, Lapkritis
Anonim
STM32 CAN sąsaja
STM32 CAN sąsaja

„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ė

Siųstuvo -imtuvo grandinė
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ę

Skaitymas ir rašymas į CAN magistralę
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

Jungiamieji mazgai
Jungiamieji mazgai

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

Padarykite PCB
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ą

Valdybos išplėtimas
Valdybos išplėtimas

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

Užsisakykite savo PCB iš JLCPCB
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

Gaukite savo lentas!
Gaukite savo 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: