Czy mikrokontroler z obsługą CAN jest wystarczający do sterowania magistralą CAN?

45

Obecnie istnieje wiele modułów CAN wbudowanych w mikrokontrolery. PIC18F2480 jest przykładem. Czy ten mikrokontroler (z wbudowaną magistralą CAN) może samodzielnie sterować magistralą CAN, czy też wymagany jest zewnętrzny transceiver / kontroler CAN?

Wierzę, że CAN ma zarówno warstwę programową, jak i sprzętową. Wygląda na to, że te mikrokontrolery z obsługą CAN wydają się mieć tylko oprogramowanie, ale nie stwierdza, że ​​może lub nie może sterować magistralą CAN taką, jaka jest.

Chcę podłączyć więcej niż sześć mikrokontrolerów za pośrednictwem magistrali CAN i chciałbym wiedzieć, czy potrzebuję nadajnika-odbiornika na wszystkich z nich, czy też wbudowane elementy mogą obsługiwać komunikację z perspektywy oprogramowania i sprzętu.

Załóżmy, że będę mieć niezbędne rezystory terminujące i inne małe dyskretne elementy (zaślepki, rezystory itp.)

efox29
źródło

Odpowiedzi:

55

To bardzo dobre pytanie. Zasadniczo CAN wymaga urządzenia nadawczo-odbiorczego dla każdego węzła:

wprowadź opis zdjęcia tutaj

Jednak w pewnych okolicznościach możesz naprawdę uciec bez żadnych urządzeń nadawczo-odbiorczych! Te okoliczności to:

  • Krótka długość magistrali (znacznie mniej niż 1 metr)
  • Korzystnie wszystkie mikrokontrolery znajdują się na tej samej płytce drukowanej lub stosie płytek drukowanych.
  • Szybkość transmisji jest niska
  • Środowisko nie jest zbyt hałaśliwe pod względem elektrycznym

To nie są trudne zasady. Możesz mieć maksymalną szybkość transmisji (1 MB / s), jeśli masz naprawdę krótki autobus (10 cm).

Aby to osiągnąć, musisz wiedzieć trochę o tym, co robi transiwer. Jak większość urządzeń nadawczo-odbiorczych, mogą one wysyłać wysokie lub niskie sygnały do ​​magistrali (reprezentujące 1 i 0), ale 0 może zdominować 1. IE Jeśli dwa urządzenia nadawczo-odbiorcze próbują mówić jednocześnie, a jeden mówi 1, a drugi mówi 0, wtedy 0 wygra. Możemy odtworzyć tę samą sytuację za pomocą diod:

Prosta CAN

Patrz nota aplikacyjna Seimens AP2921: Komunikacja pokładowa poprzez CAN bez nadajnika-odbiornika

Ale jest coś jeszcze bardziej interesującego: PIC ma sprzętową obsługę CAN bez transceivera!

Rejestr CIOCON

Możesz skonfigurować styk CAN TX, aby zachowywał się dokładnie tak samo jak transiwer. Oznacza to, że możesz podłączyć magistralę CAN bez diod. Nadal będziesz jednak potrzebował rezystora.

Prostsze CAN

Rocketmagnet
źródło
2
Absolutnie fantastyczna odpowiedź. Bardzo doceniam czas poświęcony na odpowiedź. Być może będę musiał iść z transiwerem, ponieważ może być dużo szumu elektrycznego i chociaż wszystko będzie umieszczone w „pudełku”, będą na wielu płytkach drukowanych. Dzięki jeszcze raz!
efox29
@ efox29 - Nie ma za co. Z pewnością lepiej jest korzystać z nadajników-odbiorników, jeśli możesz.
Rocketmagnet
Ta konfiguracja bez nadajników była dla mnie nowością i wygląda bardzo interesująco do ustawienia prostej sieci kontrolerów na większe odległości. Miły!
0x6d64
@ 0x6d64 - Jeśli potrzebujesz go długo, nie zapomnij użyć niskiej przepływności, a szybkość narastania ogranicza krawędzie.
Rocketmagnet
1
Należy pamiętać, że zadziała to, jeśli wszystkie urządzenia w magistrali korzystają z tej samej konfiguracji i używają jednoprzewodowej magistrali CAN. Jeśli chcesz połączyć się z czymkolwiek, co faktycznie jest „prawdziwą” ISO CAN i używa dwuprzewodowej magistrali, ten tryb nie będzie działać.
Jon Watte
10

LPC11Cxx rodzina mikrokontrolerów (ARM Cortex-M0 oparty) obejmują transceiver CAN on-chip.

timrorr
źródło
3
Tak. Dobrze. OP pyta o PIC18. To nie jest naprawdę pomocne.
Federico Russo
4
@FedericoRusso daje przykład z PIC18, a timrorr podał rozwiązanie z wbudowanym sterownikiem. Co z tym jest nie tak?
clabacchio
8
@FedericoRusso - Nie bądź taki analny. Ta odpowiedź jest bardzo interesująca.
Rocketmagnet
1
@Rocketmagnet: Więc P: „Jak zrobić X?” Odp .: „Do Y.” w końcu jest OK? (Z własnej odpowiedzi)
Federico Russo
2
@FedericoRusso - Jeśli odpowiedź na pytanie została dobrze zaspokojona przez PO, a ktoś wspomina o interesujących powiązanych informacjach, jasne, dlaczego nie?
Rocketmagnet
9

Tak, potrzebujesz transceivera. Piny CAN na mikro są odbierane i transmitowane. Sama magistrala CAN wykorzystuje skrętkę z sygnalizacją różnicową na dwóch przewodach zwanych HIGH i LOW.

Jednym z zadań transiwera jest podniesienie poziomu logiki na pinie TX i przekształcenie go w sygnały magistrali CAN:

  • logiczne „1” jest reprezentowane przez brak jazdy autobusem, więc linie WYSOKIE i NISKIE „pływają” do 2,5 V - zwane „bitem recesywnym” w terminologii CAN.
  • logiczne „0” jest reprezentowane przez poprowadzenie linii HIGH do góry, a linia LOW do dołu - zwane „bitem dominującym”, ponieważ zastąpi wszelkie przesyłane bity recesywne.

Drugim jest wzięcie tego, co jest w autobusie, i przekształcenie go z powrotem w poziom logiczny, aby odesłać z pinu RX do mikro.

Martin Thompson
źródło
8

Potrzebujesz procesora transceivera CAN między CPU a magistralą CAN. Sprawdź MCP2551.

Aktualizacja 17 sierpnia 2017 r .:

Jestem teraz na konferencji Microchip Masters. Inżynierowie Microchip powiedzieli mi wprost, że jedna z nowych części, które powstały w wyniku przejęcia Atmel, jest zarówno tańsza, jak i lepsza niż MCP2551.

Olin Lathrop
źródło
1
Microchip zaleca teraz 2561 w porównaniu z 2551. NXP ma również kilka interesujących układów CAN. Większość MCU potrzebuje transiwera.
Ludwig Schreier,
2

Urządzenia analogowe mają przykładowy układ nadawczo-odbiorczy CAN wykorzystujący wzmacniacz różnicowy.
Nie próbowałem tego, po prostu jestem tego świadomy. Interesuje mnie również, czy można go zrealizować za pomocą wzmacniacza operacyjnego

obwód analogowy

Zalety korzystania z dedykowanego urządzenia nadawczo-odbiorczego IC CAN polega na tym, że zajmą się one arbitrażem za Ciebie i nie musisz się martwić o ingerencję w magistralę. Jeśli obserwujesz tylko magistralę i nie jest to środowisko krytyczne pod względem awarii, obwód może być w porządku. Chociaż mcp2551 jest bardzo popularny, istnieje wiele opcji układów scalonych.

Nowa ewolucja to układy typu System Base, które obejmują regulację napięcia, tryby zasilania i ochronę ESD przed magistralą.

Jak wspomniano powyżej timorr, LCP11C24 firmy NXP jest wyjątkowy, ponieważ procesor zawiera nadajnik-odbiornik CAN. Płyta demo z tym kosztuje tylko 19 USD. Innym niedrogim rozwiązaniem jest użycie płyty demo Cypress PSoC5 za 9,38 USD, CY8CKIT-059. PSoC5 nie ma kontrolera CAN; idzie o krok dalej: kontroler jest zaimplementowany w blokach uniwersalnych podobnych do FPGA. Rejestry kontrolera są konfigurowane za pomocą GUI IDE, dzięki czemu filtrowanie i prace badawczo-rozwojowe są bardzo łatwe.

Kluczową metodą, którą znalazłem podczas przeglądania kart danych, jest to, że mcu TTL jest oznaczony jako CAN-Tx i CAN-Rx, podczas gdy linie danych transiwerów do magistrali są zawsze oznaczone CAN-H i CAN-L. Nie podoba mi się diagramy w drugiej odpowiedzi, w której pokazano TxRx podłączone do magistrali; jest to sprzeczne z konwencją i przyczynia się do zamieszania.

Chris K.
źródło