Satura rādītājs:
- Piegādes
- 1. darbība: uztvērēja ķēde
- 2. darbība: lasīšana un rakstīšana CAN kopnē
- 3. darbība: mezglu savienošana
- 4. solis: izveidojiet PCB
- 5. solis: padomes paplašināšana
- 6. darbība: pasūtiet PCB no JLCPCB
- 7. solis: iegūstiet savus dēļus
Video: STM32 CAN saskarne: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Kontrollera zonas tīkla kopne jeb CAN kopne ir ļoti efektīvs sakaru protokols, pateicoties tā ātrgaitas iespējām, uzticamībai lielos attālumos un trokšņa necaurlaidībai. Šo iemeslu dēļ CAN komunikācija ir kļuvusi par standartu automobiļu tehnoloģijās un vidē ar augstu trokšņa līmeni. CAN kopnes ierīces sauc par mezgliem. Visi CAN kopnes mezgli ir savienoti paralēli, kas nozīmē, ka katrs mezgls ir savienots ar visiem pārējiem tīkla mezgliem. Vienā CAN kopnē vienlaikus var būt līdz 115 mezgliem, atkarībā no ziņojumu pārraides ātruma, taču lielākajai daļai lietojumprogrammu ieteicams izmantot līdz 32 ierīcēm. Ieteicams arī saglabāt attālumu starp pirmo un pēdējo mezglu mazāk nekā 40 metru attālumā.
Šī soli pa solim apmācība parādīs, kā iestatīt CAN mezglu, izmantojot STM32 mikrokontrolleru, ieskaitot shēmu un vienkāršu C kodu lasīšanai un rakstīšanai CAN kopnē
Piegādes
Katram CAN mezglam:
- 1x STM32 sadalīšanas dēlis (Nucleo, Blue Pill, citi)
- 1x MCP2551 CAN uztvērēja IC
- 1x 0,1 µF kondensators
- 1x 120Ω rezistors
- 1x 1kΩ rezistors
- 1+ lasāma ieeja (poga, slēdzis, potenciometrs utt.) Vai izeja (LED, MOSFET utt.)
- 1x Dsub9 savienotājs
1. darbība: uztvērēja ķēde
Lai sazinātos ar CAN kopni, mēs izmantosim MCP2551 CAN raiduztvērēju IC. IC darbojas kā starpposma raidītāja/uztvērēja pāris, lai savienotu STM32 ar CAN kopni. Šīs IC iestatīšanas shēma ir diezgan vienkārša, taču jāņem vērā dažas lietas:
-
CAN_RX (4. tapa) un CAN_TX (1. tapa) mikroshēmā MCP2551 var pāriet tikai uz noteiktām STM32 tapām.
- STM32F1 Nucleo savienojiet RX līniju ar tapu PB8 un TX līniju ar tapu PB9.
- Zilajā tabletes STM32F1 savienojiet RX ar tapu PA11 un TX ar tapu PA12.
- Ņemiet vērā, ka šiem tapas piešķiršanas veidiem ir alternatīvas. Skatiet mikrokontrolleru rokasgrāmatas, lai noteiktu, kuras tapas var izmantot CAN_RD un CAN_TD
- Ja izmantojat Arduino vai plati bez iebūvēta CAN komunikatora, MCP2515 IC mikroshēma būs nepieciešama, lai pārvērstu citus ziņojumu protokolus CAN.
- CANL tapai jābūt savienotai ar citu kopnes mezglu citām CANL tapām. Tas pats attiecas uz CANH tapām.
- 120Ω rezistors pāri CANH un CANL tapām ir nepieciešams tikai tad, ja mezgls ir gala mezgls. Tas nozīmē, ka tas atrodas paralēlā savienojuma elektroinstalācijas beigās. Citiem vārdiem sakot, CAN kopnei jābūt tikai diviem 120Ω rezistoriem, un tiem jābūt pēc iespējas tālāk viens no otra.
- Visbeidzot, 1kΩ rezistoru RS (8. tapa) var nomainīt pret 10 kΩ rezistoru, lai kontrolētu CAN ziņojumu bitu pacelšanās/krišanas laiku. Plašāku informāciju skatiet MCP2551 mikroshēmas datu lapā.
2. darbība: lasīšana un rakstīšana CAN kopnē
Tagad, kad raiduztvērēja ķēde ir pievienota STM32, mēs varam sākt rakstīt ziņojumus CAN kopnei. Šī pamācība neiedziļināsies STM32 kodā. Tomēr šeit noteikti izlasiet piemērus mūsu kodam. Lai izmantotu STM32 kā CAN mezglu, būs nepieciešams CAN galvenes fails. Mēs uzrakstījām savu, kas atrodams mūsu github šeit. Šeit mēs sniegsim īsu pārskatu par lasīšanas/rakstīšanas procesu.
Lai lasītu no CAN kopnes, mums vispirms jāzina CAN ziņojuma ID. Katram ziņojumam jābūt unikālam ID, un zemākiem ID ir augstāka prioritāte. Šeit redzamais koda fragments gaida CAN ziņojumu ar ID 0x622. Mūsu sistēmā, ja 6. baita pirmais bits ir augsts, mēs vēlamies iestatīt tapu A10 augstu.
Rakstot CAN ziņu, mums jāatceras, ka CAN ziņas ir vairāku baitu. Katram rakstītam ziņojumam ir jābūt ID un garumam. Otrajā parādītajā koda fragmentā mēs ierakstām datus katrā baitā, pēc tam nosūtām ziņojumu (ID un garuma parametri kodā ir definēti iepriekš).
3. darbība: mezglu savienošana
Savienojot vairākus CAN mezglus, rūpīgi jāpievērš uzmanība kabeļu garumam. Divi vistālākie mezgli var būt līdz 40 m attālumā viens no otra. Vidējiem mezgliem, kas savieno autobusu, jāatrodas 50 cm attālumā no galvenajām autobusu līnijām.
CAN savienojumi atbilst nozares standartam, kurā tiek izmantots Dsub9 savienotājs ar CANL līniju 2. tapā un CANH līniju 7. tapā. Opcija CANGND līnija var iet uz 3. tapu.
4. solis: izveidojiet PCB
Maršrutējot CAN signālus uz PCB, atcerieties, ka CAN ir diferenciāls signāls, un tāpēc rūpīgi jāievēro CANH un CANL maršrutēšanas vadlīnijas.
5. solis: padomes paplašināšana
Salieciet kopā vēl dažus mezglus, pievienojiet dažas ieejas/izejas un pievienojiet visas to CANH un CANL tapas. Ņemiet vērā, ka katram STM32 vai citam mikrokontrolleram ir nepieciešama sava MCP2551 mikroshēma; tos nevar koplietot.
Ņemot to vērā, mēģiniet saglabāt savus PCB mazākus par šeit parādītajiem
6. darbība: pasūtiet PCB no JLCPCB
JLCPCB piedāvā ātrus, augstas kvalitātes pakalpojumus par ļoti saprātīgām cenām. Iegūstiet 5 dēļus jebkurā krāsā ar daudzām pielāgošanām tikai par 2 USD! Un, ja tas ir jūsu pirmais pasūtījums, iegūstiet 10 dēļus par to pašu cenu!
Vienkārši augšupielādējiet savus gerberus un saņemiet tūlītēju cenu! Iesniedziet savu pasūtījumu, un jūsu dēļi tiks pārskatīti, lai tos ražotu stundas laikā. Kad esat samaksājis, jūs varat sagaidīt savas augstas kvalitātes dēļus pēc trim dienām!
Pārbaudiet to šeit
7. solis: iegūstiet savus dēļus
Milzīgs sauciens JLCPCB par šī projekta sponsorēšanu. JLCPCB (ShenzhenJLC Electronics Co., Ltd.) ir lielākais PCB prototipu uzņēmums Ķīnā un augsto tehnoloģiju ražotājs, kas specializējas ātru PCB prototipu veidošanā un mazu partiju PCB ražošanā. Viņi bija pietiekami laipni, lai nodrošinātu mūsu UBC Solar mūsu jaunās PCB mūsu sacīkšu automašīnām ar saules enerģiju. Mēs veicām pasūtījumu piektdien, bet dēļus saņēmām trešdien!
Ieteicams:
Gāzes sensora saskarne ar Arduino: 4 soļi
Saskarnes gāzes sensors ar Arduino: MQ-2 dūmu sensors ir jutīgs pret dūmiem un šādām uzliesmojošām gāzēm: LPG, butāns, propāns, metāns, alkohols, ūdeņradis. Sensora pretestība ir atšķirīga atkarībā no gāzes veida. Dūmu sensoram ir iebūvēts potenciometrs
Saskarne ar LCD displeju M4 Iekļaušana: 5 soļi
M4 saskarne ar LCD displeju M4 dodot priekšroku Drivemall, nevis klau
Arduino kosmosa kuģa saskarne: 3 soļi
Arduino kosmosa kuģa saskarne: Hi Instructable kopiena, šoreiz esmu izstrādājis vienu no vienkāršākajiem projektiem, ko pabeigt ar Arduino Uno: kosmosa kuģa ķēdi. Tas ir tā sauktais, jo tas ir tāds programmēšanas un shēmas veids, kas tiktu izmantots agrīnās zinātniskās fantastikas TV šovos un filmās
8051 Saskarne ar DS1307 RTC un laika zīmoga parādīšana LCD: 5 soļi
8051 saskarne ar DS1307 RTC un laika zīmoga parādīšana LCD: Šajā apmācībā mēs jums esam izskaidrojuši, kā mēs varam savienot 8051 mikrokontrolleru ar ds1307 RTC. Šeit mēs parādām RTC laiku LCD, izmantojot proteusa simulāciju
Saskarne Arduino Mega ar GPS moduli (Neo-6M): 8 soļi
Saskarne Arduino Mega ar GPS moduli (Neo-6M): Šajā projektā es parādīju, kā sasaistīt GPS moduli (Neo-6M) ar Arduino Mega. TinyGPS bibliotēka tiek izmantota, lai parādītu garuma un platuma datus, un TinyGPS ++ tiek izmantota, lai parādītu platumu, garumu, augstumu, ātrumu un satelītu skaitu