STM32F429i - CAN

Wszystko co dotyczy płytek z rodziny Discovery firmy STM
ODPOWIEDZ
Awatar użytkownika
SunRiver
Użytkownik
Posty: 939
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

STM32F429i - CAN

Post autor: SunRiver »

CAN stanowi bardzo elastyczną sieć, łatwą do wykonania i oprogramowania choć wielu się wydaje, że nadaje się tylko do samochodów i nic
więcej , niektórym się wydaje że kontrola na Canie to hakowanie ... tymczasem to bzdury... tym razem nieco sobie ją przybliżymy ...
Oczywiście CAN jest szeroko stosowana w segmencie automotive, ale można ją też znaleźć w wielu zastosowaniach.
Istnieje wiele warstw aplikacji dostępnych dla CAN:

>ISO 15765  - dla samochodów osobowych
>J1931 - dla samochodów ciężarowych
>CANopen  - dla automatyki przemysłowej

To te popularniejsze i najczęściej spotykane warstwy fizyczne CAN , ale też nic nie stoi na przeszkodzie by opracować własny protokół
dostosowany do własnych potrzeb i zastosowań.  Co ważniejsze dostępność transceiverów CAN zapewnia możliwość tworzenia stabilnych sieci
charakteryzujących się wysoką niezawodnością bez konieczności stosowania drogich infrastruktur sieci na kablach koncentrycznych.
Coraz większa liczba dostępnych dla amatorów mikrokontrolerów ma wbudowane kontrolery jak też istnieje mnóstwo przykładów oprogramowania.
Umożliwia to łatwy start i opracowanie własnych rozwiązań i rozwinięć sieci.

Obrazek

Kontroler CAN jest dosyć skomplikowanym urządzenie, ale dzięki jego dostępności w tanich microkontrolerach jedyne co musimy zapewnić to
 odpowiednia konfiguracja i zapis danych do kontrolera , a całą resztą zajmie się on automatycznie zwalniając nas z całej misternej
i skomplikowanej otoczki.  Ba kontroler CAN sam odczyta ramki danych z sieci i przechowa je w pamięci FIFO. Powiadomi też mikrokontroler,
że otrzymał dane które sobie odczytamy i odpowiednio zinterpretujemy. Zajmie się też filtrowaniem wiadomości dzięki czemu możemy łatwo
ustawić ignorowanie informacji które nas nie interesują.  Jak wiec widać wygląda to wszystko bardzo prosto i przyjemnie. Takie też jest faktycznie.

Oczywiście musimy spełnić określone warunki , ale nie będzie to specjalnie męczące i wymagające. Co zatem nam się przyda ??

.:: Sprzęt ::..

STM32F429I Discovery  -  płytka ta posiada mikrokontroler CORTEX-M4 zawierający natywną obsługę CAN , i choć posiada kontroler jednak
nie posiada transceivera który musimy dołączyć do linii RX i TX  (uwaga nie mylić z UART)

Obrazek

Transceiverem może być popularny układ Microchip MCP2551 czy TJA1050  lub SN65HVD230 np taki:

Obrazek

który można zakupić w sklepie elty.pl, i który polecam ze względu na napięcie pracy 3,3V odpowiednie dla ARM. W przypadku płytki STM32F429I Discovery spotkamy kilka problemów, zasadniczo nie są specjalnie kłopotliwe, ale warto zdawać sobie sprawę z ich istnienia.
Mianowicie chodzi o to, że porty na których umieszczono CAN1 i CAN2 kolidują nieco z innymi funkcjami płytki gdyż są jako alternatywne
funkcje przykładowo:

>CAN1 koliduje z konfiguracją wyświetlacza
>CAN2 koliduje z USB

To niestety była konieczność by w małej obudowie 144pin zmieścić tle funkcji...
Oczywiście nie musimy od razu demontować USB czy LCD by użyć CAN , możemy bez problemu podłączyć transceiver pod piny
GPIOB12 i GPIOB13 i bawić się CAN2 , CAN jeden mamy na pinach GPIOA11 i 12 , podpiętych do LCD więc może nam coś krzaczyć
jeśli będziemy chcieli użyć CAN i LCD ...  oczywiście mamy możliwość remapowania pinów, ale zaś te są też użyte do komunikacji z SDRAM.
Oczywiście możemy jeszcze użyć kontrolera MCP2515 pracującego na SPI, ale za dużo z nim roboty dlatego tu zajmiemy się niewielkim upośledzeniem płytki, ale tym zajmiemy się później.

2. SOM-STM32F429IGT6  -- ta płytka to potęga i tu jest lepiej :) przede wszystkim obudowa procka to 176pinów ...

Obrazek

Tu mamy ładnie wyprowadzone oba CANY  i jedynie przyda nam się trochę przewodu.

Obie płytki można dostać w sklepie elty.pl  Oczywiście by zbudować sieć będziemy potrzebować 2ch płytek  lub więcej ... ja użyję w/w ....
Oczywiście każdy sobie może transceiver sam zbudować, nie jest to specjalnie trudne np schemat dla MCP2551 wygląda następująco:

Obrazek

CON1 zawiera zasilanie i piny wejściowe RX/TX CAN  zaś  JP2 to już Wyjście CANL i CANH , dodatkowo JP1 umożliwia włączenie/wyłączenie terminatora "sieci" 120om.

..:: NASZA SIEĆ ZAŁOŻENIA ::..

by zacząć zabawę z CAN , nie będę omawiał sposobów grzebania w systemach samochodowych więc ci co o tym myśleli , mogą od razu zamknąć przeglądarkę. Tym próbują się zajmować z różnym skutkiem inni zaś Moim celem jest pokazanie jak korzystać z dobrodziejstwa CAN ,
jak wysyłać i odbierać dane i jak ją konfigurować ...

Nasza sieć będzie się charakteryzować cechami:

--> 11 i 29 bitowy identyfikator  -- użyjemy i CAN standard i CAN Extended
--> 8 bajtów danych  --  nie dużo będziemy przesyłać , ale za to dane mogą być zmieniane "na gorąco"  co nam się przyda do przesyłania na żywo różnych wiadomości
--> P2P  -- każdy węzeł będzie widział wszystkie wiadomości.  Tu mała uwaga węzeł nie czyta własnych wiadomości.
--> Łatwość dodawania węzłów  --   można będzie dopinać urządzenia i wysyłać między nimi informacje z czujników ...
--> Priorytety -- tu sobie ułatwimy i wiadomości z wyższym priorytetem będziemy wysyłać zależnie od wartości ID.  Czyli niższy ID będzie miał wyższy priorytet.
--> Automatyczna retransmisja uszkodzonych wiadomości.
--> Prędkość przesyłu  -- ze względu na uproszczenia będziemy wysyłać z prędkościami od 10kbps do 1Mbps , ale wszystkie węzły będą musiały pracować z tą samą prędkością.
--> Połączenie wykonamy za pomocą 1 pary skręconych przewodów ... zapewni to też dobrą ochronę przed zewnętrznymi zakłóceniami.
--> nasza sieć będzie pracować z różnymi poziomami uziemienia

Jak wiec widać zarówno warstwa fizyczna jak i dobranie ID i danych spowoduje łatwe i niewiele wymagające zastosowanie CAN jak
też i przyzwoitą odporność na zakłócenia i uszkodzenia całości. Oczywiście ja będę miał w sieci tylko 2 urządzenia , ale gdy ew zajdzie
potrzeba zastosowania większej ilości podłączę dodatkowe oparte o np popularne AVR bez kontrolera CAN  gdzie zastosuję kontroler MCP2515:

Obrazek

który jest również dostępny w ofercie sklepu elTy.pl
2 urządzenia w mojej sieci są spowodowane tym że CAN składa się co najmniej z dwóch węzłów połączonych parą skręconych przewodów.

UWAGA !!   przewody powinny być skręcone przynajmniej 1 raz na cal.

Przewód ochronny (uziom) może być dołączony do skrętki , lub osobny , ale nie jest integralność uziomu konieczna do prawidłowego działania sieci,
dlatego że CAN jest medium różnicowym i jak w każdej takiej magistrali ważne są poziomy napięcia miedzy parą przewodów,
a nie względem masy. CAN jest dokładnie opisany w normie określającej ISO 11898.  Maksymalna długość sieci zależy od częstotliwości, liczby
węzłów i przewodności przewodów. należy jednak pamiętać że "długa sieć"  to niska prędkość przesyłu. Nasza para przewodów będzie skrętką
przesyłową dlatego musimy zadbać o terminację na obu jej końcach , dla naszej sieci 120om dzięki czemu całkowita wartość rezystancji
mierzona między przewodami przesyłowymi wyniesie 60om.

Nasza sieć CAN oparta będzie na uproszczeniach wiec każdy węzeł będzie widział wszystkie wiadomości i każdy będzie mógł nadawać swoją
wiadomość przy pomocy RAMKI CAN, ale tylko w momencie kiedy sieć będzie w stanie spoczynku. I tylko od indywidualnego ustawienia węzła
będzie zależeć czy dana wiadomość będzie odebrana czy zignorowana.

..:: Przykładowy węzeł CAN ::..

Budowa węzła jak wspominałem nie jest skomplikowana w przypadku użycia nowoczesnych mikrokontrolerów z wbudowanym kontrolerem CAN
i w zasadzie składa się z mikrokontrolera i transceivera CAN :

Obrazek

Na schemacie wyżej widzimy uproszczoną konstrukcję węzła czyli właśnie od lewej - mikrokontroler, transceiver i złącze CAN którym w ogólnie przyjętym standardzie jest złącze typu DB9. Warto nadmienić, że w przypadku mikrokontrolerów STM32 I/O dla CAN są pinami TTL/CMOS 5V
Tolerant co właśnie powoduje łatwość projektowania interfejsu. Nasze mikrokontrolery są wyposażone w 2 kontrolery CAN , co też nie jest bez znaczenia bo możemy wysyłać informacje do siebie z drugiego kontrolera ... traktując go jako osobny węzeł.

..:: Informacje ogólne ::..

Istnieją trzy warstwy fizyczne stosowane w CAN my będziemy się trzymać z kilku powodów jednej z nich a mianowicie :

HI-Speed   - odporna na uszkodzenia i najbardziej popularna w urządzeniach  (ją właśnie zastosujemy)  Ta warstwa fizyczna jest używana w europejskich samochodach.  Ponadto ma możliwość pracy na jednym przewodzie co jest używane przez GM dla sieci Lo-Speed wraz z główną Hi-Speed. Tu nadmienię iż Hi-Speed w samochodach pracuje na szybkości 500kbps dla pojazdów osobowych i 250kbps dla ciężarówek.

Dla przykładu CANopen pracuje z szybkościami 1Mbps , ale odporna na zakłócenia jest przy prędkości aż 125kbps.
GM na 1 przewodzie stosuje prędkość 33,33kbps.  1Mbps jest trudny w obsłudze i wymaga specjalnego traktowania , 500 -ka jest prostsza i tańsza.
Przejście z jednej warstwy fizycznej na drugą wymaga zastosowania transceivera, ponadto mogą być wymienialne i możliwa jest zmiana prędkości
transmisji. Różne warstwy fizyczne nie mogą być stosowane razem jeśli pracują na innych poziomach napięć , ale można je łączyć za pomocą
bram i ruterów. Dodatkowo każdy kontroler obsługuje każdą warstwę fizyczną.W przypadku HI-Speed mamy parę skręconych przewodów
z terminacją 120om na obu końcach magistrali, węzły można łączyć bezpośrednio do magistrali.

Na magistrali CAN napięcie mieści się w granicach 2,5 do 4V względem ziemi. Nominalnie CAN Lo  zmienia się odd 2,5 do 1V .  
Dlatego też różnica ta (lub 0V) między dwoma przewodami to logiczne 1 , a 3V to logiczne 0.  0 jest stanem dominującym zaś 3V recesywne.

wyposażcie się w sprzęt i łączymy się w następnej części.
ODPOWIEDZ

Wróć do „STM32-Discovery”