Innholdsfortegnelse:

STM32 CAN -grensesnitt: 7 trinn
STM32 CAN -grensesnitt: 7 trinn

Video: STM32 CAN -grensesnitt: 7 trinn

Video: STM32 CAN -grensesnitt: 7 trinn
Video: STM32 CAN шина. Часть 2. Фильтрация и демонстрация работы 2024, November
Anonim
STM32 CAN -grensesnitt
STM32 CAN -grensesnitt

Controller Area Network -bussen, eller CAN -bussen, er en veldig effektiv kommunikasjonsprotokoll takket være høyhastighetsegenskaper, pålitelighet over lang rekkevidde og støyimmunitet. Av disse grunnene har CAN -kommunikasjon blitt standarden innen bilteknologi og miljøer med mye støy. Enheter på CAN -bussen kalles noder. Alle noder på CAN -bussen er parallelt koblet, noe som betyr at hver node er koblet til alle de andre nodene på nettverket. En enkelt CAN -buss kan ha opptil 115 noder samtidig, avhengig av meldingsoverføringshastigheten, men for de fleste applikasjoner anbefales det å ha opptil 32 enheter. Det anbefales også å holde lengden mellom den første og siste noden mindre enn 40 meter fra hverandre.

Denne trinnvise opplæringen viser deg hvordan du konfigurerer en CAN-node ved hjelp av STM32-mikrokontrolleren, inkludert kretsen og enkel C-kode for å lese og skrive til CAN-bussen

Rekvisita

For hver CAN -node:

  • 1x STM32 breakout board (Nucleo, Blue Pill, andre)
  • 1x MCP2551 KAN transceiver IC
  • 1x 0,1µF kondensator
  • 1x 120Ω motstand
  • 1x 1kΩ motstand
  • 1+ lesbar inngang (knapp, bryter, potensiometer, etc.) eller utgang (LED, MOSFET, etc.)
  • 1x Dsub9 -kontakt

Trinn 1: Transceiverkretsen

Transceiverkretsen
Transceiverkretsen

For å kommunisere med CAN -bussen, bruker vi MCP2551 CAN transceiver IC. IC fungerer som et mellomliggende sender/mottakerpar for å koble STM32 til CAN -bussen. Kretsen for å sette opp denne IC er ganske enkel, men det er et par ting å merke seg:

  • CAN_RX (pin 4) og CAN_TX (pin 1) på MCP2551 -brikken kan bare gå til visse pins på STM32.

    • På STM32F1 Nucleo kobler du RX -linjen til pin PB8 og TX -linjen til pin PB9.
    • På STM32F1 blå pille, koble RX til pin PA11 og TX til pin PA12.
    • Vær oppmerksom på at disse pin -oppgavene har alternativer. Se håndbøkene for mikrokontrolleren for å finne ut hvilke pinner som er i stand til CAN_RD og CAN_TD
    • Hvis du bruker en Arduino eller et kort uten en innebygd CAN -kommunikator, vil MCP2515 IC -brikken være nødvendig for å konvertere andre meldingsprotokoller til CAN.
  • CANL -pinnen bør kobles til de andre CANL -pinnene på de andre bussnodene. Det samme gjelder CANH -pinnene.
  • 120Ω motstanden over CANH- og CANL -pinnene er bare nødvendig hvis noden er en terminalnode. Dette betyr at det er på slutten av parallelle tilkoblingskabler. Med andre ord bør CAN -bussen bare ha to 120Ω motstander i den, og de skal være så langt fra hverandre som mulig.
  • Til slutt kan 1kΩ motstanden på RS (pin 8) byttes ut mot en 10kΩ motstand for å kontrollere stigende/fallende tid for CAN -meldingsbitene. Se databladet MCP2551 for flere detaljer.

Trinn 2: Lese og skrive til CAN -bussen

Lese og skrive til CAN -bussen
Lese og skrive til CAN -bussen

Nå som mottakerkretsen er koblet til STM32, kan vi begynne å skrive meldinger til CAN -bussen. Denne instruksjonsguiden vil ikke gå grundig inn på STM32-koden. Sørg imidlertid for å sjekke ut koden vår for eksempler her. Å bruke STM32 som en CAN -node krever en CAN -toppfil. Vi skrev vår egen, som du finner på githuben vår her. Her vil vi gi en kort oversikt over lese/skrive -prosessen.

For å lese fra CAN -bussen må vi først vite ID -en til CAN -meldingen. Hver melding skal ha en unik ID, med lavere ID -er som har høyere prioritet. Kodesnutten som vises her, venter på en CAN -melding med ID 0x622. I vårt system, hvis den første biten av den sjette byten er høy, vil vi sette pin A10 høyt.

Når vi skriver en CAN-melding, må vi huske at CAN-meldinger er multi-byte. Hver skriftlig melding må ha en ID og lengde. I den andre kodebiten som vises, skriver vi data til hver byte og sender deretter meldingen (ID- og lengdeparameterne er definert tidligere i koden).

Trinn 3: Koble til noder

Koble til noder
Koble til noder

Når du kobler til flere CAN -noder, må du være nøye med lengden på kablene. De to lengste nodene kan være opptil 40 meter fra hverandre. Midtnoder som kobler til bussen skal være innenfor 50 cm fra hovedbuslinjene.

CAN -tilkoblinger følger en industristandard for bruk av en Dsub9 -kontakt med CANL -linjen på pin 2 og CANH -linjen på pin7. Alternativet CANGND linje kan gå på pin 3.

Trinn 4: Lag PCB

Lag PCB
Lag PCB

Når du dirigerer CAN -signaler på en PCB, må du huske at CAN er et differensialsignal, og derfor bør retningslinjene for CANH og CANL følges nøye.

Trinn 5: Utvidelse av styret

Utvider styret
Utvider styret

Kast noen flere noder sammen, legg til noen innganger/utganger, og koble til alle CANH- og CANL -pinnene. Vær oppmerksom på at hver STM32 eller annen mikrokontroller krever sin egen MCP2551 -brikke; de kan ikke deles.

Når det er sagt, prøv å holde PCB -ene mindre enn den som vises her

Trinn 6: Bestill kretskortene dine fra JLCPCB

Bestill kretskortene dine fra JLCPCB
Bestill kretskortene dine fra JLCPCB

JLCPCB tilbyr rask service av høy kvalitet til meget rimelige priser. Få 5 brett, hvilken som helst farge med tonnevis med tilpasning, for bare $ 2! Og hvis det er din første bestilling, får du 10 brett til samme pris!

Bare last opp gerberne dine og få et tilbud umiddelbart! Send inn bestillingen din, og brettene dine vil bli vurdert for produksjon innen en time. Når du har betalt, kan du forvente høykvalitetsbrettene dine så snart som tre dager!

Sjekk det ut her

Trinn 7: Få styrene dine

Få styrene dine!
Få styrene dine!

Stort rop til JLCPCB for sponsing av dette prosjektet. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), er det største PCB-prototypefirmaet i Kina og en høyteknologisk produsent som spesialiserer seg på rask PCB-prototyping og produksjon av små partier. De var snille nok til å gi UBC Solar våre nye PCB-er til vår solcelledrevne racerbil. Vi la inn bestillingen vår på fredag og fikk brettene på onsdag!

Anbefalt: