Zpět na domů

CAN v STM32: technická příručka k integraci | Embedded

Technická příručka k integraci rozhraní CAN do projektu řízení elektrického pohonu na STM32. Podrobný rozbor nastavení časování, zpracování chyb a testování pod zátěží. Doporučení pro vývojáře vestavěných systémů.

Kompletní příručka k rozhraní CAN v projektech STM32 Motor Control
Advertisement 728x90

# Implementace rozhraní CAN v STM32 pro řízení elektrických pohonů: technická příručka

CAN sběrnice zůstává de facto standardem pro komunikaci v embedded systémech s přísnými požadavky na odolnost vůči poruchám. Na rozdíl od populárních UART/I2C zajišťuje CAN diferenciální přenos dat s hardwarovou detekcí kolizí prostřednictvím nedestruktivní arbitráže. Pro projekty založené na STM32G431RB (jako v sadě IHM03) je klíčové zohlednit vlastnosti fyzické a kanálové vrstvy při návrhu ovladačů.

Klíčové technické parametry ovlivňující implementaci:

  • Rychlost přenosu: Od 125 kbit/s (Low-Speed) do 1 Mbit/s (High-Speed)
  • Topologie sítě: Lineární s terminátory 120 Ω na koncích
  • Formát rámce: Standard (11bitový ID) nebo Extended (29bitový)
  • Bitové vycpávání: Automatická vložka bitů při sekvenci 5 stejných

Vestavěné CAN ovladače STM32 (bxCAN) podporují všechny režimy provozu, ale vyžadují přesné nastavení časových parametrů (SJW, BS1, BS2). Chyba v výpočtu předděliče baud rate vede k ztrátě synchronizace při vysoké zátěži sběrnice.

Google AdInline article slot

Návrh rozhraní CAN pro STM32 Motor Control

Modifikace projektu PMSM Control

Pro integraci CAN do existujícího projektu řízení pohonu bylo potřeba:

  • Přidat do projektu knihovnu CAN ze STM32CubeMX
  • Nastavit taktování CAN periferie přes RCC
  • Implementovat kruhový buffer pro příjem/odesílání zpráv
  • Synchronizovat zpracování CAN rámců s hlavním cyklem řízení motoru

Kritický moment — rozdělení času mezi zpracováním PWM a CAN. Při použití FreeRTOS byla vytvořena samostatná úloha s vyšší prioritou než úloha řízení motoru, ale nižší než přerušení bezpečnosti.

Struktura CAN databáze

Byla vyvinuta struktura podobná DBC pro řízení zpráv:

Google AdInline article slot
typedef struct {
    uint32_t id;
    uint8_t dlc;
    void (*handler)(uint8_t*);
} can_msg_t;

const can_msg_t can_db[] = {
    {0x123, 8, handle_motor_status},
    {0x246, 4, handle_control_cmd},
    // ... další zprávy
};

Každá zpráva je vázána na konkrétní funkci zpracování prostřednictvím tabulky dispečingu. To umožnilo vyhnout se monolitnímu switch-case a zjednodušilo přidávání nových typů rámců.

Praktická implementace a testování

Ladění fyzické vrstvy

Při prvních testech byly pozorovány chyby CRC kvůli:

  • Nesprávnému umístění terminatorů (nainstalovány pouze na jednom konci)
  • Překročení délky sběrnice (více než 40 m při rychlosti 1 Mbit/s)
  • Použití nechráněné křivené dvojice

Řešení:

Google AdInline article slot
  • Instalace terminatorů 120 Ω na oba konce linky
  • Snížení rychlosti na 500 kbit/s pro délku 60 m
  • Použití stíněného kabelu se zátěží 120 Ω

Osciloskopická analýza potvrdila správnost diferenciálních signálů (CAN_H=3.5 V, CAN_L=1.5 V v dominantním stavu).

Testování pod zátěží

Byly provedeny stresové testy při 80% zátěži sběrnice:

  • Maximální propustnost: 700 kbit/s (teoretický limit pro 8bajtové rámce — 750 kbit/s)
  • Zpoždění zpracování rámce: < 100 μs
  • Koeficient chyb: 0 při délce sběrnice do 30 m

Kritická chyba nastala při současném odesílání 3 zpráv s vysokou prioritou (nízkým ID). Vyřešeno nastavením filtrů CAN_RX, které rozdělily zprávy do bank filtrů.

Co je důležité

  • Časování sběrnice: Přesné výpočty BS1/BS2 jsou kritické pro stabilní provoz ve vysokých rychlostech
  • Arbitráž priorit: Nízké ID mají přednost — plánujte hierarchii zpráv předem
  • Zpracování chyb: Implementujte mechanismus restartu CAN ovladače při dosažení error passive state
  • EMC: Stínění kabelu a uzemnění stínu na obou koncích je povinné pro průmyslové podmínky
  • Testování: Používejte CAN analyzátory (např. PCAN-USB) pro ověření protokolu

Integrace rozhraní CAN do projektu řízení elektrických pohonů na STM32 vyžaduje hluboké porozumění jak hardwarovým vlastnostem periferie, tak specifikům protokolu. Úspěšná implementace otevírá cestu k vytváření distribuovaných systémů řízení s možností následné integrace s IoT platformami a AI analýzou.

— Editorial Team

Advertisement 728x90

Číst dál