Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Obwód nadawczo-odbiorczy
- Krok 2: Odczytywanie i zapisywanie do magistrali CAN
- Krok 3: Łączenie węzłów
- Krok 4: Zrób płytkę drukowaną
- Krok 5: Rozszerzenie tablicy
- Krok 6: Zamów PCB w JLCPCB
- Krok 7: Zdobądź swoje tablice
Wideo: Interfejs CAN STM32: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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
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
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
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ą
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
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
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
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:
Interfejs z wyświetlaczem LCD M4Inclusion: 5 kroków
Interfejs z wyświetlaczem LCD M4Inclusion: Ten samouczek pozwoli nam sterować wyświetlaczem LCD przez Wi-Fi z naszego smartfona.Jeśli nie mamy Drivermall, możemy użyć arduino, ale poniżej link do rozwoju Drivemall.Zaleta preferując Drivemall od cla
Interfejs z wyświetlaczem LCD Tramite Wifi M4 Inkluzja: 5 kroków
Interfaccia Con LCD Tramite Wifi M4Inclusion: Ten samouczek umożliwiający sterowanie wyświetlaczem LCD przez Wi-Fi z naszego smartfona i jest ważny podczas korzystania z Arduino i korzystania z Drivemall Board, aby uzyskać link do realizacji wcześniejszego wyboru kierowcy
Interfejs modułu GPS z Raspberry Pi: 10 kroków
Łączenie modułu GPS z Raspberry Pi: Hej chłopaki!! Czy chcesz połączyć moduł GPS z Raspberry Pi? Ale napotykasz pewne trudności, aby to zrobić? „Nie martw się, jestem tutaj, aby ci pomóc! Możesz zacząć od następujących części:
8051 Interfejs z DS1307 RTC i wyświetlanie znacznika czasu na LCD: 5 kroków
Interfejs 8051 z DS1307 RTC i wyświetlanie znacznika czasu na LCD: W tym samouczku wyjaśniliśmy, jak możemy połączyć mikrokontroler 8051 z DS1307 RTC. Tutaj wyświetlamy czas RTC na lcd za pomocą symulacji proteus
Interfejs czujnika temperatury DS18B20 z Arduino i ESP8266: 8 kroków
Łączenie czujnika temperatury DS18B20 z Arduino i ESP8266: Hej, co słychać, chłopaki! Akarsh tutaj z CETech.Dzisiaj zamierzamy dodać nowy czujnik do naszego arsenału znany jako czujnik temperatury DS18B20. Jest to czujnik temperatury podobny do DHT11, ale ma inny zestaw zastosowań. Porównamy to z