Obsługa interfejsu CAN w mikrokontrolerach STM32

 

Magistrala CAN jest zbudowana z dwóch przewodów, oznaczonych symbolami CANH (zazwyczaj czerwony) i CANL. Przesyłana informacja jest kodowana sygnałem różnicowym. Gdy pomiędzy dwoma urządzeniami nie występuje zbyt duża różnica potencjałów mas (mniejsza od 7 V według normy), można wtedy pominąć przewód wspólny, dzięki czemu interfejs fizyczny staje się faktycznie dwuprzewodowy.

Topologię magistrali CAN ilustrującą sposób podłączania kolejnych urządzeń (węzłów) przedstawiono na rys. 1. Na końcach magistrali znajdują się zawsze rezystory terminujące, których zadaniem jest minimalizacja zjawiska odbicia sygnału. Najczęściej w roli terminatorów stosuje się rezystory o rezystancji 120 ?. Złączem magistrali CAN standardowo może być DB9M (fot. 2). Rozmieszczenie wyprowadzeń jest również objęty standardem.

 

 

Rys. 1. Topologia magistrali CAN

Rys. 1. Topologia magistrali CAN

 

 

 

Fot. 2. Złącze DB9 (CAN) w zestawie ZL29ARM (KAMAMI.pl)

Fot. 2. Złącze DB9 (CAN) w zestawie ZL29ARM (KAMAMI.pl)

 

 

Węzeł magistrali CAN może składać się z dwóch lub trzech układów scalonych (w najgorszym przypadku: mikrokontroler, interfejs logiczny CAN – jak na przykład MCP2515 – i konwerter CAN warstwy fizycznej). Jeśli stosowany mikrokontroler ma wbudowany kontroler CAN, to konieczne jest użycie jedynie scalonego transceivera w warstwie fizycznej. Rola tego układu polega na konwersji sygnału różnicowego magistrali CAN do postaci poziomów logicznych akceptowalnych przez linie wejścia/wyjścia mikrokontrolera sterującego. Schemat blokowy takich stacji (węzłów) przedstawiono na rys. 3. Większość mikrokontrolerów STM32 jest wyposażona w sterownik magistrali CAN, więc do nawiązania komunikacji za pomocą tego medium jest wymagany jedynie wyżej wspomniany transceiver. Ponadto, niektórzy przedstawiciele rodziny STM32 posiadają wbudowane dwa kontrolery CAN.

 

 

Rys. 3. Schematy blokowe stacji CAN

Rys. 3. Schematy blokowe stacji CAN

 

 

W kontroler magistrali CAN wyposażone są układy STM32 należące do rodzin:

  • Performance Line – STM32F103
  • Connectivity Line – STM32F105 i STM32F107
  • STM32 F-2

 

Amplitudy i kształty sygnałów elektrycznych magistrali zostały zdefiniowane dla dwóch wariantów prędkości przesyłu danych:

  • szybkiego high-speed CAN (do 1 Mb/s) oraz
  • low-speed CAN (do 125 kb/s).

Początkowo standard definiował ramkę danych zawierająca 11-bitowy identyfikator – jest to wersja standardu CAN 2.0A. Szybko się jednak okazało, że liczba dostępnych identyfikatorów jest zbyt mała. Z tego powodu opracowano aktualizację standardu do wersji CAN 2.0B, którego ramka posiada już 29–bitowe pole identyfikatora. Obecnie większość dostępnych kontrolerów magistrali CAN obsługuje obydwa standardy.
Ważnym założeniem podczas opracowywania standardu CAN był wymóg decentralizacji. Specyfikacja CAN nie przewiduje stosowania urządzenia nadrzędnego, jest więc siecią typu multimaster – wszystkie elementy mają takie same uprawnienia. Z tego wynika druga charakterystyczna cecha CAN, a mianowicie jest to sieć rozgłoszeniowa (broadcast networks). Fundamentalnym wymogiem spełniającym powyższe założenia jest niedopuszczenie, aby w tym samym czasie wiadomości były nadawane przez więcej niż jedno urządzenie. Tylko jeden węzeł może w danej chwili wysyłać wiadomość, a wszystkie pozostałe muszą być ustawione w tryb nasłuchu.
Wyżej nakreślony problem rozwiązano dzięki odpowiedniej definicji logicznego ‘0’ i logicznej ‘1’. Otóż logiczna ‘1’, określana jako stan recesywny, to różnica napięć na liniach magistrali CANH i CANL wynosząca w idealnym przypadku 0 V. Logiczne ‘0’ to stan dominujący, odpowiada mu różnica napięć co najmniej 0,9 V. Obydwa stany pokazano na rys. 4.

 

 

Rys. 4. Stany logiczne na magistrali CAN

Rys. 4. Stany logiczne na magistrali CAN

 

 

Dzięki takiej definicji stanów logicznych urządzenia podłączone do magistrali mogą rozpoznać, czy w tej samej chwili nadaje jeszcze jakieś inne urządzenie i jeśli zaistnieje taka potrzeba, przerwać nadawanie swojej wiadomości i przełączyć się na nasłuch. Od strony logicznej rozwiązanie problemu arbitrażu przyniosło wykorzystanie protokołu wielodostępu CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance). Metoda wielodostępu CSMA/CA wymaga, aby wszystkie urządzenia dołączone do magistrali pracowały z taką samą prędkością.

 

Magistrala CAN może być użyta wszędzie tam, gdzie priorytetem jest bezbłędna komunikacja, natomiast prędkość transmisji nie jest parametrem krytycznym. Standard CAN został stworzony w firmie Bosch w drugiej połowie lat 80–tych, natomiast specyfikacja CAN 2.0 światło dzienne ujrzała w roku 1991. Od tej pory obserwujemy nieprzerwaną ekspansję CAN na nowe obszary zastosowań. Przyczyny powstania nowego standardu komunikacji w pojazdach miały oczywiście silne korzenie ekonomiczne. Ciągle rosnąca liczba mikrokontrolerów w samochodach powodowała lawinowy wzrost przewodów potrzebnych do nawiązania komunikacji. Koniecznym stało się opracowanie sposobu komunikacji opartej o topologię magistrali, która to, przy zwiększeniu szybkości transmisji, pozwoliłaby na zmniejszenie liczby niezbędnych przewodów.

 

O autorze