Mikrokontrolery Infineon XMC4500 w praktyce, część 7. Obsługa magistrali CAN
Opis aplikacji demonstracyjnej
W celu pokazania w jaki sposób skonfigurować i używać interfejsu CAN w mikrokontrolerze z rodziny XMC4000 zrealizowana została przykładowa aplikacja. Są to dwa węzły CAN wymieniające między sobą dane. Oba węzły CAN mają taką samą konstrukcję i działają używając tego samego programu.
Rys. 2. Schemat elektryczny pojedynczego węzła CAN
Pojedynczy węzeł CAN został zbudowany w oparciu o płytkę XMC4500 Relax Kit. Jako że mikrokontroler z rodziny XMC4000 wyposażony jest tylko w kontroler CAN, niezbędne było dołączone do niego zewnętrznego tranceivera CAN. Użyty został układ MCP2551 firmy Microchip. Wyprowadzenia CAN TX i CAN RX transceivera CAN połączone zostały odpowiednio z wyprowadzeniami P1.5 i P1.4 mikrokontrolera z płytki XMC4500 Relax Kit. Każdy z węzłów jest jednocześnie zakończeniem magistrali, dlatego między wyprowadzenia CANH i CANL wpięty został rezystor o wartości 120 Ohm. Na potrzeby aplikacji wykorzystany został jeszcze przycisk i dioda LED. Oba komponenty znajdują się na płytce XMC4500 Relax Kit. Przycisk dołączony jest do wyprowadzenia P1.14 mikrokontrolera, natomiast dioda LED dołączona jest do wyprowadzenia P1.1 mikrokontrolera. Schemat węzła CAN zgodny z przedstawionym opisem pokazano na rysunku 2. Zdjęcie wykonanego według tego schematu elektrycznego urządzenia przedstawiono na fotografii 3. Zdjęcie dwóch węzłów połączonych w sieć CAN zaprezentowano na fotografii 4.
Fot. 3. Węzeł CAN wykonany na bazie płytki XMC4500 Relax Kit
Fot. 4. System komunikacji via CAN składający się z dwóch węzłów
Schemat blokowy programu (algorytm pracy) węzła CAN przedstawiono na rysunku 5. Mikrokontroler może zarówno wysyłać, jak i odbierać ramki CAN. Proces wysyłania ramki CAN realizowany jest w nieskończonej pętli. Mikrokontroler cyklicznie sprawdza stan podłączonego do przycisku wyprowadzenia P1.14. Jeśli odczyta wartość logiczną ‘0’, oznacza to, że przycisk został wciśnięty. Na skutek tego wydarzenia na magistralę CAN wysłana zostaje wiadomość. Proces odbierania ramek CAN obsługiwany jest przez przerwanie. W momencie odebrania wiadomości program wykonuje funkcję przerwania. W niej odczytywana jest zawartość ramki. Następnie mikrokontroler zmienia stan wyprowadzenia P.1.1, co w efekcie powoduje włączenie lub wyłączenie diody LED. Ma to na celu zasygnalizowanie użytkownikowi odebranie wiadomości CAN.
Rys. 5. Algorytm działania aplikacji
Realizacja aplikacji
Proces wykonania zgodnego z przedstawionym powyżej opisem i schematem blokowym oprogramowania dla mikrokontrolera z rodziny XMC4000 można podzielić na trzy etapy. Pierwszym etapem jest stworzenie i skonfigurowanie nowego projektu programistycznego w pakiecie DAvE 3. Drugi etap to zaimplementowanie obsługi portów wejścia/wyjścia w celu odczytywania stanu przycisku i sterowania diodą LED. Trzeci i ostatni etap obejmuje zaimplementowanie obsługi kontrolera MultiCAN w celu realizacji transmisji CAN.
W przypadku pierwszych dwóch etapów można skorzystać z gotowego rozwiązania. Realizacja aplikacji sterującej portami wejścia/wyjścia została opisana w czwartym odcinku kursu poświęconego mikrokontrolerom XMC4000. Program odczytuje stan logiczny w wyprowadzenia P1.14 dołączonego do przycisku. W przypadku, gdy odczytana wartość wynosi ‘0’, a więc przycisk został wciśnięty, zmieniany jest stan logiczny na wyprowadzeniu P1.1, które dołączone jest do diody LED. Artykuł wraz z gotowym programem dostępny jest tutaj.
Program ten należy teraz rozszerzyć o sterowanie kontrolerem MultiCAN. W pierwszym kroku konieczne jest dodanie do projektu odpowiednich komponentów DAVE Apps. Pierwszym wymaganym komponentem jest NVIC002, który służyć będzie do obsługi przerwania od CAN. Drugim wymaganym komponentem jest CAN001, który reprezentuje pojedynczy węzeł CAN. Wraz z tym komponentem automatycznie dodane zostaną komponenty, od których jest on zależny: CANGLOBAL, CLK001 oraz RESET001. Widok okien przedstawiających wszystkie komponenty DAVE Apps aplikacji widoczny jest na rysunku 6.
Rys. 6. Użyte w aplikacji komponenty Dave Apps
Gdy komponenty są już dodane do projektu, należy je skonfigurować. Czynność tą rozpocząć można od przyporządkowania wejścia i wyjścia węzła CAN do wyprowadzeń mikrokontrolera. Zgodnie z przyjętym schematem elektrycznym wejście CAN Receive przyporządkowane zostało do wyprowadzenia P1.4, a wyjście CAN Transmit do wyprowadzenia P1.5 (rysunek 7).
Rys. 7. Przypisane komponentom DAVE Apps wyprowadzenia mikrokontrolera
Następnie można przystąpić do ustawienia parametrów pracy węzła CAN. Komponent CAN001 udostępnia dwie zakładki: CAN Configuration oraz Message Configuration. W CAN Configuration znajdują się pola służące do:
- ustawienia trybu pracy węzła CAN (jeśli opcja Enable Loop Back mode jest zaznaczona, włączony jest testowy tryb pracy, w którym wysyłane przez węzeł ramki CAN zamiast trafić na magistralę są odbierane przez ten sam węzeł; jeśli opcja ta nie jest zaznaczona, włączony jest normalny tryb pracy),
- wybrania liczby używanych przez węzeł CAN obiektów wiadomości,
- ustawienia prędkości transmisji węzła CAN,
- skonfigurowania parametrów elektrycznych sygnału węzła CAN (np. podciąganie do potencjału masy lub zasilania, stromość zbocza sygnału itp.).
W zakładce Message Configuration z kolei znajdują się pola przeznaczone do:
- ustawienia konfiguracji każdego z obiektów wiadomości (typ obiektu: do wysyłania lub odbierania wiadomości, typ i wartość identyfikatora wiadomości, kryteria filtrowania),
- włączania/wyłączania przerwań od obiektów wiadomości.