Obsah:

Rozhraní STM32 CAN: 7 kroků
Rozhraní STM32 CAN: 7 kroků

Video: Rozhraní STM32 CAN: 7 kroků

Video: Rozhraní STM32 CAN: 7 kroků
Video: Programování externího procesoru STM32 pomocí programátoru Nuclea. 2024, Červenec
Anonim
Rozhraní STM32 CAN
Rozhraní STM32 CAN

Síťová sběrnice Controller Area Network neboli CAN je velmi účinný komunikační protokol díky vysokorychlostním možnostem, spolehlivosti na dlouhou vzdálenost a odolnosti proti rušení. Z těchto důvodů se komunikace CAN stala standardem v automobilových technologiích a prostředí s vysokou hlučností. Zařízení na sběrnici CAN se nazývají uzly. Všechny uzly na sběrnici CAN jsou zapojeny paralelně, což znamená, že každý uzel je připojen ke všem ostatním uzlům v síti. Jedna sběrnice CAN může mít až 115 uzlů najednou, v závislosti na rychlosti přenosu zpráv, ale pro většinu aplikací se doporučuje mít až 32 zařízení. Doporučuje se také ponechat vzdálenost mezi prvním a posledním uzlem méně než 40 metrů od sebe.

Tento podrobný tutoriál vám ukáže, jak nastavit uzel CAN pomocí mikrokontroléru STM32, včetně obvodu a jednoduchého kódu C pro čtení a zápis na sběrnici CAN

Zásoby

Pro každý uzel CAN:

  • 1x STM32 breakout board (Nucleo, Blue Pill, ostatní)
  • 1x IC MCP2551 CAN transceiver
  • 1 x 0,1 µF kondenzátor
  • 1x 120Ω odpor
  • 1x 1kΩ odpor
  • 1+ čitelný vstup (tlačítko, spínač, potenciometr atd.) Nebo výstup (LED, MOSFET atd.)
  • 1x konektor Dsub9

Krok 1: Obvod transceiveru

Obvod vysílače
Obvod vysílače

Ke komunikaci se sběrnicí CAN použijeme IC transceiveru MCP2551 CAN. Integrovaný obvod funguje jako přechodný pár vysílač/přijímač pro připojení STM32 ke sběrnici CAN. Obvod pro nastavení tohoto IC je poměrně jednoduchý, ale je třeba si uvědomit několik věcí:

  • CAN_RX (pin 4) a CAN_TX (pin 1) na čipu MCP2551 mohou jít pouze na určité piny na STM32.

    • Na STM32F1 Nucleo připojte linku RX na pin PB8 a linku TX na pin PB9.
    • Na modré pilulce STM32F1 připojte RX ke kolíku PA11 a TX ke kolíku PA12.
    • Všimněte si, že tato přiřazení pinů mají alternativy. V příručkách k mikrokontroléru určete, které piny jsou schopné CAN_RD a CAN_TD
    • Pokud používáte Arduino nebo desku bez integrovaného komunikátoru CAN, bude k převodu dalších protokolů zpráv na CAN vyžadován IC čip MCP2515.
  • Kolík CANL by měl být připojen k ostatním pinům CANL ostatních uzlů sběrnice. To samé platí pro piny CANH.
  • Odpor 120Ω přes piny CANH a CANL je vyžadován pouze v případě, že uzel je koncový uzel. To znamená, že je na konci paralelního zapojení. Jinými slovy, sběrnice CAN by měla mít pouze dva 120Ω odpory a měly by být od sebe co nejdál.
  • A konečně, odpor 1kΩ na RS (pin 8) lze vyměnit za odpor 10kΩ pro ovládání doby náběhu/klesání bitů zprávy CAN. Další podrobnosti najdete v datovém listu čipu MCP2551.

Krok 2: Čtení a zápis na sběrnici CAN

Čtení a zápis do sběrnice CAN
Čtení a zápis do sběrnice CAN

Nyní, když je obvod transceiveru připojen k STM32, můžeme začít psát zprávy na sběrnici CAN. Tato instrukční příručka nepůjde do hloubky do kódu STM32. Nezapomeňte se však podívat na náš kód, kde najdete příklady zde. Použití STM32 jako uzlu CAN bude vyžadovat soubor záhlaví CAN. Sepsali jsme vlastní, který najdete na našem githubu zde. Zde poskytneme stručný přehled procesu čtení/zápisu.

Abychom mohli číst ze sběrnice CAN, musíme nejprve znát ID zprávy CAN. Každá zpráva by měla mít jedinečné ID, přičemž nižší ID má vyšší prioritu. Zde zobrazený fragment kódu čeká na zprávu CAN s ID 0x622. V našem systému, pokud je první bit 6. bajtu vysoký, pak chceme nastavit pin A10 vysoko.

Při psaní zprávy CAN musíme pamatovat na to, že zprávy CAN jsou vícebajtové. Každá písemná zpráva musí mít ID a délku. Ve druhém ukázaném fragmentu kódu zapíšeme data do každého bajtu a poté odešleme zprávu (ID a parametry délky jsou definovány dříve v kódu).

Krok 3: Připojení uzlů

Spojovací uzly
Spojovací uzly

Při připojování více uzlů CAN je třeba věnovat pozornost délce kabelů. Dva nejvzdálenější uzly mohou být od sebe vzdáleny až 40 m. Prostřední uzly připojující se k autobusu by měly být do 50 cm od hlavních autobusových linek.

Připojení CAN se řídí průmyslovým standardem použití konektoru Dsub9 s linkou CANL na pinu 2 a linkou CANH na pinu 7. Volitelná linka CANGND může jít na pin 3.

Krok 4: Vyrobte PCB

Vyrobte PCB
Vyrobte PCB

Při směrování signálů CAN na desku plošných spojů mějte na paměti, že CAN je diferenciální signál, a proto je třeba pečlivě dodržovat pokyny pro směrování pro CANH a CANL.

Krok 5: Rozšíření desky

Rozšíření rady
Rozšíření rady

Hoďte několik dalších uzlů dohromady, přidejte některé vstupy/výstupy a připojte všechny jejich piny CANH a CANL. Každý STM32 nebo jiný mikrokontrolér vyžaduje vlastní čip MCP2551; nelze je sdílet.

S tím se snažte udržet své PCB menší než zde zobrazené

Krok 6: Objednejte si DPS z JLCPCB

Objednejte si DPS z JLCPCB
Objednejte si DPS z JLCPCB

JLCPCB nabízí rychlé a vysoce kvalitní služby za velmi rozumné ceny. Získejte 5 desek libovolné barvy s tunami přizpůsobení za pouhé 2 $! A pokud je to vaše první objednávka, získejte 10 desek za stejnou cenu!

Stačí nahrát gerbery a získat okamžitou nabídku! Odešlete objednávku a vaše desky budou do hodiny zkontrolovány z hlediska výroby. Jakmile zaplatíte, můžete své vysoce kvalitní desky očekávat již za tři dny!

Podívejte se na to zde

Krok 7: Pořiďte si desky

Pořiďte si desky!
Pořiďte si desky!

Obrovský výkřik JLCPCB za sponzorování tohoto projektu. JLCPCB (ShenzhenJLC Electronics Co. Byli tak laskaví, že poskytli UBC Solar naše nové PCB pro naše závodní auto na solární pohon. V pátek jsme zadali objednávku a ve středu jsme dostali desky!

Doporučuje: