Indholdsfortegnelse:

STM32 CAN -grænseflade: 7 trin
STM32 CAN -grænseflade: 7 trin

Video: STM32 CAN -grænseflade: 7 trin

Video: STM32 CAN -grænseflade: 7 trin
Video: STM32 CAN || Multiple Devices 2024, Juli
Anonim
STM32 CAN -grænseflade
STM32 CAN -grænseflade

Controller Area Network -bus, eller CAN -bus, er en meget effektiv kommunikationsprotokol takket være dens høje hastighedsegenskaber, lang rækkevidde pålidelighed og støjimmunitet. Af disse grunde er CAN -kommunikation blevet standarden inden for bilteknologi og miljøer med høj støj. Enheder på CAN -bussen kaldes noder. Alle noder på CAN -bussen er forbundet parallelt, hvilket betyder, at hver node er forbundet til alle de andre noder på netværket. En enkelt CAN -bus kan have op til 115 noder på én gang, afhængigt af hastigheden for meddelelsestransmission, men for de fleste applikationer anbefales det at have op til 32 enheder. Det anbefales også at holde længden mellem den første og sidste knude mindre end 40 meter fra hinanden.

Denne trin-for-trin vejledning viser dig, hvordan du konfigurerer en CAN-knude ved hjælp af STM32-mikrokontrolleren, inklusive kredsløbet og enkel C-kode til at læse og skrive til CAN-bussen

Forbrugsvarer

For hver CAN -knude:

  • 1x STM32 breakout board (Nucleo, Blue Pill, andre)
  • 1x MCP2551 CAN -transceiver IC
  • 1x 0,1µF kondensator
  • 1x 120Ω modstand
  • 1x 1kΩ modstand
  • 1+ læsbar indgang (knap, switch, potentiometer osv.) Eller output (LED, MOSFET osv.)
  • 1x Dsub9 -stik

Trin 1: Transceiver kredsløb

Transceiver kredsløb
Transceiver kredsløb

For at kommunikere med CAN -bussen bruger vi MCP2551 CAN -transceiver IC. IC'en fungerer som et mellemliggende sender/modtagerpar for at forbinde STM32 til CAN -bussen. Kredsløbet til at oprette denne IC er ret enkelt, men der er et par ting at bemærke:

  • CAN_RX (pin 4) og CAN_TX (pin 1) på MCP2551 -chippen kan kun gå til bestemte pins på STM32.

    • På STM32F1 Nucleo forbindes RX -linjen til pin PB8 og TX -linjen til pin PB9.
    • På STM32F1 blå pille forbindes RX til pin PA11 og TX til pin PA12.
    • Bemærk, at disse pin -tildelinger har alternativer. Se vejledningen til mikrokontrolleren for at afgøre, hvilke ben der er i stand til CAN_RD og CAN_TD
    • Hvis du bruger en Arduino eller et kort uden en CAN -kommunikator indbygget, er MCP2515 IC -chippen påkrævet for at konvertere andre meddelelsesprotokoller til CAN.
  • CANL -stiften skal tilsluttes de andre CANL -ben på de andre busknudepunkter. Det samme gælder CANH -stifterne.
  • 120Ω modstanden på tværs af CANH- og CANL -benene er kun påkrævet, hvis noden er en terminalknude. Det betyder, at det er i slutningen af parallelle forbindelsesledninger. Med andre ord bør CAN -bussen kun have to 120Ω modstande i den, og de skal være så langt fra hinanden som muligt.
  • Endelig kan 1kΩ modstanden på RS (pin 8) udveksles med en 10kΩ modstand for at styre stigning/fald tiden for CAN -meddelelsesbitene. Se databladet MCP2551 chip for flere detaljer.

Trin 2: Læsning og skrivning til CAN -bussen

Læsning og skrivning til CAN -bussen
Læsning og skrivning til CAN -bussen

Nu hvor transceiverkredsløbet er forbundet til STM32, kan vi begynde at skrive meddelelser til CAN -bussen. Denne instruerbare guide vil ikke gå i dybden med STM32-koden. Sørg dog for at tjekke vores kode for eksempler her. Brug af STM32 som en CAN -knude kræver en CAN -headerfil. Vi skrev vores egne, som kan findes på vores github her. Her vil vi give et kort overblik over læse/skrive -processen.

For at læse fra CAN -bussen skal vi først kende ID'et for CAN -beskeden. Hver besked skal have et unikt ID, hvor lavere ID'er har højere prioritet. Kodestykket vist her venter på en CAN -besked med ID 0x622. I vores system, hvis den første bit af den 6. byte er høj, så vil vi sætte pin A10 højt.

Når vi skriver en CAN-besked, skal vi huske, at CAN-meddelelser er multi-byte. Hver skriftlig besked skal have et ID og en længde. I det andet kodestykke, der vises, skriver vi data til hver byte og sender derefter meddelelsen (ID- og længdeparametrene er defineret tidligere i koden).

Trin 3: Tilslutning af noder

Tilslutning af noder
Tilslutning af noder

Når du tilslutter flere CAN -noder, skal du være opmærksom på længden af kabler. De to længste noder kan være op til 40 meter fra hinanden. Mellemknudepunkter, der forbinder til bussen, skal være inden for 50 cm fra hovedbuslinjerne.

CAN -forbindelser følger en industristandard for at bruge et Dsub9 -stik med CANL -linjen på pin 2 og CANH -linjen på pin7. Valgmuligheden CANGND linje kan gå på pin 3.

Trin 4: Lav PCB

Lav PCB
Lav PCB

Når du dirigerer CAN -signaler på et printkort, skal du huske, at CAN er et differentielt signal, og derfor bør routingretningslinjer for CANH og CANL følges nøje.

Trin 5: Udvidelse af bestyrelsen

Udvidelse af bestyrelsen
Udvidelse af bestyrelsen

Kast nogle flere noder sammen, tilføj nogle input/output, og tilslut alle deres CANH- og CANL -pins. Bemærk, at hver STM32 eller anden mikrokontroller kræver sin egen MCP2551 -chip; de kan ikke deles.

Når det er sagt, så prøv at holde dine printkort mindre end den, der vises her

Trin 6: Bestil dine printkort fra JLCPCB

Bestil dine printkort fra JLCPCB
Bestil dine printkort fra JLCPCB

JLCPCB tilbyder hurtig service af høj kvalitet til meget rimelige priser. Få 5 tavler, enhver farve med masser af tilpasning, for kun $ 2! Og hvis det er din første ordre, får du 10 tavler til samme pris!

Upload bare dine gerbers og få et øjeblikkeligt tilbud! Send din ordre, og dine tavler vil blive gennemgået til produktion inden for en time. Når du har betalt, kan du forvente dine tavler af høj kvalitet om så hurtigt som tre dage!

Tjek det ud her

Trin 7: Få dine tavler

Få dine tavler!
Få dine tavler!

Kæmpe råb til JLCPCB for at sponsorere dette projekt. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), er den største PCB-prototypevirksomhed i Kina og en højteknologisk producent med speciale i hurtig PCB-prototyper og produktion af små partier. De var så venlige at give UBC Solar vores nye printkort til vores soldrevne racerbil. Vi afgav vores ordre fredag og fik brædderne onsdag!

Anbefalede: