2013-06-12 8 views
5

W łączu szeregowym, jaka jest preferowana metoda kadrowania/synchronizacji?Jakiego rodzaju ramek używać w komunikacji szeregowej?

  • kadrowanie z SOF i sekwencje ucieczki, jak w HDLC?
  • poleganie na użyciu nagłówka z informacją o długości i CRC?

Jest to wbudowany system wykorzystujący transmisję DMA danych z UART do pamięci. Myślę, że metoda kadrowania z SOF jest najbardziej atrakcyjna, ale może ta druga jest wystarczająco dobra?

Czy ktoś ma wady i zalety dla tych dwóch metod?

Odpowiedz

5

Następujące w oparciu o szeregowe doświadczenie UART, a nie badania.

Znalazłem mniej problemów z komunikacją, gdy dołączono poniższe - lub innymi słowy, zarówno SOF/EOF, jak i (długość - być może)/kod kontrolny. Rama:

  1. SOFrame
  2. (długość może)
  3. dane (adres, do, z, typ sekwencji #, opcode, bajty, etc.)
  4. CheckCode
  5. EOFrame

Niezmiennie, otrzymane "sławy" obejmują:

  1. dobre - bez problemów.
  2. Uszkodzone z powodu nie wysłania przez nadawcę kompletnego komunikatu (zawiesił się, wyłączył zasilanie lub zsypu). Odbiornik powinien przeterminować nieukończone wiadomości.)
  3. Uszkodzony z powodu zakłóceń sygnału lub zakłóceń transmisji. (błędy ramek bajtów, parzystość, niepoprawne dane)
  4. Uszkodzone z powodu uruchomienia odbiornika w środku wysłanej wiadomości lub braku kilku bajtów z powodu przekroczenia bufora wejściowego.
  5. Kolizje wspólnych kolizji.
  6. Przerwa - czy to jest legalne w twoim systemie?

Cokolwiek framing użyć, ubezpieczenia jest odporny na rozwiązanie tych typów wiadomości, niezwłocznie potwierdzić # 1 i szybkiej identyfikacji 2-5 i staje się gotowy do następnej klatki.

SOF ma ogromną zaletę stanowi to, że łatwo zacząć ponownie, jeśli odbiornik jest utracone w wyniku poprzedniej ramki bzdura, itp

Długość jest dobra, ale IMHO najmniej przydatne. Może ograniczać przekazywanie, jeśli długość musi znajdować się na początku wiadomości. Niektóre operacje o małym opóźnieniu po prostu nie znają długości, zanim będą gotowe do rozpoczęcia transmisji.

CRC Poleć więcej niż 2-bajtowe. Krótki kod kontrolny nie poprawia wystarczająco dużo dla mnie. Wolałbym nie mieć kodu sprawdzającego niż 1-bajtowego. Jeśli błędy pojawiają się od czasu do czasu, tylko przechwytuje je kod kontrolny, chcę coś lepszego niż dwubajtowe 99.999% czasu, lubię 4-bajtowe 99,99999997%

EOF bardzo przydatne!

BTW: Jeśli protokół, który jest ASCII (zamiast binarny), zaleca się nie użytku cr lub lf jako EOFrame. Może używać ich tylko poza ramką, gdzie nie są częścią wiadomości.

BTW2: Jeżeli odbiornik może automatycznie wykryć prędkość transmisji, oszczędza wiele problemów konfiguracyjnych.

BTW3: Nadawca może rozważyć wysłanie bajtu "nic" (przed SOF) w celu zapewnienia właściwej synchronizacji SOF.

+0

Dzięki! Dobre argumenty! – user2479653

+1

Prędkość nieudana, bity na słowo, parzystość, nieoczekiwany poziom sygnału również powodują problemy. – chux

Powiązane problemy