Przejdź do zawartości

Local Interconnect Network

Z Wikipedii, wolnej encyklopedii

Local Interconnect Network (LIN) – tania w realizacji szeregowa magistrala komunikacyjna (jeden przewód 12V), której pierwszy standard (wersja 1.1) powstał w roku 1999 (1.3 w roku 2002, obecnie obowiązuje 2.1). Standard został wypracowany przez LIN Consortium, w skład którego weszły największe firmy z branży motoryzacyjnej (tj. AUDI, BMW, DaimlerChrysler, VW, Volvo, etc.). LIN powstał z myślą o zastosowaniach w branży motoryzacyjnej, wszędzie tam gdzie parametry transmisji danych magistralą CAN są zbyt wyśrubowane (np. komunikacja z czujnikami inteligentnymi). Sprzętowa realizacja transmisji przez LIN jest dużo tańsza niż przez CAN (wystarczy dostępny w mikrokontrolerach UART). Topologia sieci: 1 master (mocniejszy mikrokontroler) i maksymalnie do 16 slave’ów (słabszy mikrokontroler), brak detekcji kolizji. Typowo moduł mastera LIN jest równocześnie węzłem w sieci CAN.

  • maksymalna prędkość transmisji do 20 kbps (typowo stosuje się 2400 bit/s, 9600 bit/s i 19200 bit/s)
  • synchronizacja nie wymaga rezonatora dla modułu typu slave
  • rozszerzanie sieci o kolejne moduły typu slave nie wymaga zmiany sprzętu i programu w pozostałych modułach typu slave.

Komunikację inicjuje zawsze master poprzez wysłanie nagłówka wiadomości. Możliwe są trzy typy przesyłania wiadomości:

  1. master przesyła do slave’a,
  2. slave przesyła do mastera,
  3. slave przesyła do innego slave’a.

Schemat komunikacji jest znany wszystkim węzłom magistrali LIN (slave’om i masterowi) przed rozpoczęciem komunikacji. Do rozpoznawania nadawcy i odbiorcy służy nagłówek (nadawany przez mastera). Slave nie inicjuje komunikacji, może tylko wysłać ramkę WAKE-UP, aby pobudzić w ten sposób mastera.

Na rynku dostępne są narzędzia do generowania driverów do LIN-a dla konkretnych mikrokontrolerów (przykładowo: driver napisany w języku C ze wstawkami w assemblerze wykorzystuje dostępny UART).

Ramka LIN składa się z nagłówka i odpowiedzi. Do nagłówka zalicza się trzy pola: SYNCH BREAK, SYNCH FIELD, IDENT FIELD. Według standardu 1.3 w IDENT FIELD znajduje się informacja o liczbie bajtów w odpowiedzi (2 bajty, 4 bajty albo 8 bajtów). Do odpowiedzi zalicza się pola danych DATA FIELD (2, 4 lub 8) oraz CHECKSUM FIELD. Pole SYNCH FIELD to na przemian zero-jedynki, a dokładnie '0x55'. W standardzie LIN bity nadawane są w kolejności od najmniej znaczących (przykład: bajt '0x21' będzie wysłany jako 1000_0100).


Bus sleep

[edytuj | edytuj kod]

Jeśli na magistrali w ciągu 25000*T_bit nie pojawi się ani jedna ramka, to magistrala przełączą się w tryb uśpienia (gdzie T_bit to czas trwania jednego bitu – wielkość zależna od ustalonej prędkości transmisji). Przykładowo: 25000*T_bit = ok. 2,6 sekundy dla 9600 bps. Aby magistralę wybudzić, master albo slave musi wysłać ramkę WAKE-UP ('0x80').

Wakeup

[edytuj | edytuj kod]

Sygnał Wakeup jest chwilowym zwarciem do masy wykonanym przez slave’a albo przez mastera. Czas trwania zwarcia oraz czas wystąpienia przed ramką jest określony w standardzie LIN.

  1. czas trwania sygnału Wakeup = 8*T,
  2. Wakeup musi wyprzedzić ramkę o od 4*T do 64*T.

gdzie T to czas jednego bitu, np. T=(1/9600) sekundy.