Spisu treści:

Interfejs CAN STM32: 7 kroków
Interfejs CAN STM32: 7 kroków

Wideo: Interfejs CAN STM32: 7 kroków

Wideo: Interfejs CAN STM32: 7 kroków
Wideo: Kurs STM32 #7 Interfejs I2C 2024, Listopad
Anonim
Interfejs CAN STM32
Interfejs CAN STM32

Magistrala Controller Area Network lub magistrala CAN jest bardzo efektywnym protokołem komunikacyjnym dzięki swoim możliwościom dużej szybkości, niezawodności dalekiego zasięgu i odporności na zakłócenia. Z tych powodów komunikacja CAN stała się standardem w technologiach motoryzacyjnych i środowiskach o wysokim poziomie hałasu. Urządzenia na magistrali CAN nazywane są węzłami. Wszystkie węzły na magistrali CAN są połączone równolegle, co oznacza, że każdy węzeł jest połączony ze wszystkimi innymi węzłami w sieci. Pojedyncza magistrala CAN może mieć jednocześnie do 115 węzłów, w zależności od szybkości transmisji komunikatów, ale dla większości aplikacji zaleca się posiadanie do 32 urządzeń. Zaleca się również, aby długość między pierwszym a ostatnim węzłem była mniejsza niż 40 metrów.

Ten samouczek krok po kroku pokaże Ci, jak skonfigurować węzeł CAN za pomocą mikrokontrolera STM32, w tym obwód i prosty kod C do odczytu i zapisu na magistrali CAN

Kieszonkowe dzieci

Dla każdego węzła CAN:

  • 1x tabliczka zaciskowa STM32 (Nucleo, Blue Pill, inne)
  • 1x układ scalony nadajnika-odbiornika CAN MCP2551
  • 1x kondensator 0,1 µF
  • 1x rezystor 120Ω
  • 1x rezystor 1kΩ
  • 1+ czytelne wejście (przycisk, przełącznik, potencjometr itp.) lub wyjście (LED, MOSFET itp.)
  • 1x złącze Dsub9

Krok 1: Obwód nadawczo-odbiorczy

Obwód nadawczo-odbiorczy
Obwód nadawczo-odbiorczy

Do komunikacji z magistralą CAN wykorzystamy układ scalony transceivera CAN MCP2551. IC działa jako pośrednia para nadajnik/odbiornik, łącząca STM32 z magistralą CAN. Obwód do skonfigurowania tego układu scalonego jest dość prosty, ale należy zwrócić uwagę na kilka rzeczy:

  • CAN_RX (pin 4) i CAN_TX (pin 1) w układzie MCP2551 mogą przejść tylko do określonych pinów w STM32.

    • W Nucleo STM32F1 podłącz linię RX do styku PB8, a linię TX do styku PB9.
    • Na niebieskiej pigułce STM32F1 podłącz RX do pinu PA11 i TX do pinu PA12.
    • Zauważ, że te przypisania pinów mają alternatywy. Zapoznaj się z instrukcjami mikrokontrolera, aby określić, które piny są zdolne do CAN_RD i CAN_TD
    • W przypadku korzystania z Arduino lub płyty bez wbudowanego komunikatora CAN, do konwersji innych protokołów komunikatów na CAN wymagany będzie układ scalony MCP2515.
  • Pin CANL należy połączyć z pozostałymi pinami CANL pozostałych węzłów magistrali. To samo dotyczy pinów CANH.
  • Rezystor 120 Ω na pinach CANH i CANL jest wymagany tylko wtedy, gdy węzeł jest węzłem końcowym. Oznacza to, że znajduje się na końcu okablowania połączenia równoległego. Innymi słowy magistrala CAN powinna mieć w sobie tylko dwa rezystory 120Ω i powinny one być jak najdalej od siebie.
  • Na koniec rezystor 1kΩ na RS (pin 8) można wymienić na rezystor 10kΩ, aby kontrolować czas narastania/opadania bitów wiadomości CAN. Więcej informacji można znaleźć w arkuszu danych chipu MCP2551.

Krok 2: Odczytywanie i zapisywanie do magistrali CAN

Odczytywanie i zapisywanie do magistrali CAN
Odczytywanie i zapisywanie do magistrali CAN

Teraz, gdy obwód transceivera jest podłączony do STM32, możemy zacząć pisać komunikaty do magistrali CAN. Ten instruktażowy przewodnik nie zagłębi się w kod STM32. Pamiętaj jednak, aby zapoznać się z naszym kodem, aby zapoznać się z przykładami tutaj. Używanie STM32 jako węzła CAN będzie wymagało pliku nagłówkowego CAN. Napisaliśmy własne, które można znaleźć na naszym githubie tutaj. Tutaj przedstawimy krótki przegląd procesu odczytu/zapisu.

Aby odczytać z magistrali CAN, musimy najpierw znać ID komunikatu CAN. Każda wiadomość powinna mieć unikalny identyfikator, przy czym niższe identyfikatory mają wyższy priorytet. Pokazany tutaj fragment kodu czeka na wiadomość CAN o identyfikatorze 0x622. W naszym systemie, jeśli pierwszy bit 6-go bajtu jest wysoki, to chcemy ustawić pin A10 wysoki.

Pisząc komunikat CAN musimy pamiętać, że komunikaty CAN są wielobajtowe. Każda pisemna wiadomość musi mieć identyfikator i długość. W pokazanym drugim fragmencie kodu wpisujemy dane do każdego bajtu, a następnie wysyłamy wiadomość (Parametry ID i length są zdefiniowane wcześniej w kodzie).

Krok 3: Łączenie węzłów

Łączenie węzłów
Łączenie węzłów

Podczas podłączania wielu węzłów CAN należy zwrócić szczególną uwagę na długość kabli. Dwa najdalsze węzły mogą być oddalone od siebie nawet o 40m. Węzły środkowe łączące się z autobusem powinny znajdować się w odległości 50 cm od głównych linii autobusowych.

Połączenia CAN są zgodne ze standardem branżowym polegającym na użyciu złącza Dsub9 z linią CANL na styku 2 i linią CANH na styku 7. Opcja CANGND line może przejść na pin 3.

Krok 4: Zrób płytkę drukowaną

Zrób płytkę drukowaną
Zrób płytkę drukowaną

Podczas trasowania sygnałów CAN na płytce drukowanej należy pamiętać, że CAN jest sygnałem różnicowym, dlatego należy uważnie przestrzegać wytycznych dotyczących trasowania dla CANH i CANL.

Krok 5: Rozszerzenie tablicy

Rozszerzenie tablicy
Rozszerzenie tablicy

Połącz więcej węzłów, dodaj kilka wejść/wyjść i podłącz wszystkie ich piny CANH i CANL. Zauważ, że każdy STM32 lub inny mikrokontroler wymaga własnego układu MCP2551; nie można się nimi dzielić.

Mając to na uwadze, staraj się, aby Twoje PCB były mniejsze niż ta pokazana tutaj

Krok 6: Zamów PCB w JLCPCB

Zamów swoje płytki PCB w JLCPCB
Zamów swoje płytki PCB w JLCPCB

JLCPCB oferuje szybką, wysokiej jakości obsługę w bardzo rozsądnych cenach. Zdobądź 5 plansz w dowolnym kolorze z mnóstwem personalizacji za jedyne 2 USD! A jeśli to Twoje pierwsze zamówienie, zdobądź 10 desek w tej samej cenie!

Po prostu prześlij swoje gerbery i uzyskaj natychmiastową wycenę! Złóż zamówienie, a Twoje deski zostaną sprawdzone pod kątem produkcji w ciągu godziny. Gdy już zapłacisz, możesz spodziewać się wysokiej jakości płyt już w trzy dni!

Sprawdź to tutaj

Krok 7: Zdobądź swoje tablice

Zdobądź swoje tablice!
Zdobądź swoje tablice!

Ogromne podziękowania dla JLCPCB za sponsorowanie tego projektu. JLCPCB (ShenzhenJLC Electronics Co., Ltd.) jest największym przedsiębiorstwem produkującym prototypy PCB w Chinach i producentem high-tech specjalizującym się w szybkim prototypowaniu PCB i produkcji małych partii PCB. Byli na tyle uprzejmi, że dostarczyli UBC Solar nasze nowe płytki PCB do naszego zasilanego energią słoneczną samochodu wyścigowego. Złożyliśmy zamówienie w piątek, a deski dostaliśmy w środę!

Zalecana: