Natrafiłem na dziwny problem: Mam robocika, którego mózgiem jest FPGA, wysyłam z niego dane do kompa UARTem. Robot wysyła paczki o rozmiarze 32 bajtów z prędkością 115200. Na chwilę obecną idzie to po kablu: FPGA (UART 3.3V) -> konwerter poziomów 3.3/5V -> PL2303 -> USB. Na kompie mam prosty programik w C, który odbiera dane z ttyUSB, przelicza pomiary i zapisuje do pliku tekstowego. Do tej pory robot wysyłał dane 5 razy na sekundę i wszystko było cacy, ale chwilowo potrzebuje zobaczyć szybkie zmiany i zwiększyłem częstotliwość wysyłania do 100Hz. Dane ładnie sobie spływają, ale zauważyłem, że co kilkadziesiąt-kilkaset ramek jest jakiś kwas. Po obejrzeniu surowych danych odczytanych z ttyUSB okazuje się, że w błędnych ramkach jeden bajt zmienia swoje położenie, jakby coś się gdzieś buforowało i nagle wypluwało później. Porównałem niby "błędną" ramkę odebraną przez kompa i analizatorem logicznym obejrzałem co wypluwa FPGA i co ciekawe od tej strony jest dobrze. Czyli wygląda to tak, że FPGA wysyła ramkę powiedzmy:
0 1 2 3 4 5 6 7 8 9, ale po jej odebraniu robi się: 0 1 2 7 3 4 5 6 8 9 Czyli w tym przypadku bajt wysłany jako 7 nagle znalazł się między odebranymi 2 a 3. O co tu może chodzić?- posted
9 years ago