USB-szeregowy z bełkotem przy 115200 Baud

14

Podczas korzystania z interfejsu USB do szeregowego wszystko działa, o ile nie przekraczam 57600 Baud. Przy wyższych stawkach robię się tak bezmyślnie:

év.­b0JNLYÆÿ¿iëd0U²(kßÞb!
                        ú]/xscB!ï¯!BoXûÿ1ïâÖCÿ6ÌAnè*íÌC)º¿BíÞØ.C.@ÆÃwHJÂs
"YE:ñ.èFðÌCÊ÷ÞÄ
               !x
                 H
w6@BtbHJ
        ̪
          Ì6ì
H¾a¿bH.">îvy®;f<ßBÌ
               p­L¨fæH­E
­þ¼MBÞI

Co sprawia, że ​​problem jest tak dziwny, wymieniłem każdy element, a problem nadal występuje. Próbowałem różnych systemów operacyjnych (Ubuntu, Windows XP, Windows 7, Mac OS X 10.7) w wersji 32- i 64-bitowej. Próbowałem interfejsu USB-Serial z FTDI i Prolific. Próbowałem odczytać dane wyjściowe z mojego Raspberry PI i urządzenia Asterisk. Zmieniłem kable i okablowanie. Nic nie pomogło.

Zrobiłem przykład ze starym notebookiem z natywnym COM i podłączyłem USB-Serial do tego samego połączenia co „sniffer” (tylko podłączone Rx i GND), aby upewnić się, że wyjście i wszystko jest w porządku, jak widać na natywnym Port. Napięcie jest w porządku. Ustawienia dla obu to 115200 Baud, 8 Bitów z 1 Stopem i bez kontroli przepływu. Native jest w porządku. USB jest pomieszane.

Użyłem najnowszych sterowników i dwukrotnie sprawdziłem wszystkie połączenia. Nie mam pojęcia, co tu jest nie tak. Ponieważ nie mogłem znaleźć nikogo, kto opisywałby takie problemy, kwestionuję moje wieloletnie doświadczenie w informatyce i myślę, że robię coś zupełnie złego.

Mojżesz
źródło
Użyłem (jak zapewne inni) adapterów szeregowych USB przy 115200 bodów. Jeden z tańszych adapterów ma problem z uziemieniem . GND po stronie RS-232 nie jest podłączony do GND USB; niektóre połączenia (w zależności od połączeń uziemienia w podwoziu) generują śmieciowe dane. Czy zgłaszasz, że wszystkie konfiguracje powyżej 57600 bodów mają problemy? Czy w grę wchodzi jakiś wspólny sprzęt? Co to za deska w filmie? Czy to domowy zmieniacz poziomów?
trociny
Nie próbowałem wartości wyższych niż 115200, więc z całą pewnością nie mogę powiedzieć, że stwarzają problemy. Płytka ścienna służy do dzielenia sygnału, dzięki czemu mogę go używać na rodzimym porcie i USB-szeregowym. Nie ma tam części elektrycznych oprócz niektórych przewodów. Moje urządzenie USB-szeregowe ma otwarty koniec (drut) i dołączyłem do niego gniazdo RJ45, więc mogę z całą pewnością stwierdzić, że GND jest podłączony prawidłowo. Bez podłączenia nie mam wyjścia. Myślę więc, że to powinno być OK. Fakt, że wielu innych korzysta z tych adapterów bez żadnych problemów, jest dokładnie częścią problemu, który doprowadza mnie do szaleństwa ...
Mose
Rozdzielenie sygnału może być problematyczne. Jeśli są tylko przewody, to czy to oznacza, że ​​nie ma zakończenia linii do anulowania odbić (co może się pogorszyć, gdy częstotliwość wzrośnie)?
trociny
Tak, to może być problem, ale nie w tym przypadku. Właśnie to podłączyłem, aby lepiej zademonstrować problem. Problem występował bez tych „wąchania” rzeczy. Chciałem tylko pokazać, że urządzenie wyrzuca swoje dane, pokazując je jednocześnie.
Mose
9600 wydaje się być w porządku, 115200 produkuje dane śmieci z przodu.
Lin Song Yang,

Odpowiedzi:

6

Po przemyśleniu i znalezieniu jednego posta, który był trochę w dobrym kierunku, zorientowałem się, że jest to jedyna pozostała możliwość odwrócenia sygnału i wypróbowania go. Na szczęście FT232RL ma flagi opcji w swojej pamięci EEPROM (programowalnej za pomocą „MProg” przez FTDI), aby ustawić to:

FTDI MProg

Następnie wszystko działało na każdej szybkości transmisji. Nie pytaj mnie dlaczego, nie mam na to technicznego wyjaśnienia. Nie mogę się doczekać, aby uzyskać oscyloskop do dalszego badania. Nigdy wcześniej nie widziałem tak dziwnego problemu.

Przetestowałem też mój port USB na szeregowy za pomocą przełącznika Cisco i nie działało bez tej inwersji.

Mojżesz
źródło
Wszelkie aktualizacje na ten temat?
Izaak
2
Pracowałem też dla mnie - narzędzie nazywa się FT_Progteraz - dostępne tutaj: ftdichip.com/Support/Utilities.htm
MrMajestyk
1

Ja również miałem ten sam problem z połączeniem się z naszym MCU przy prędkościach powyżej 57600 i po podejrzeniu naszego UART stwierdziłem, że Silicon Labs CP2102 USB do UART Bridge (TTL) działał poprawnie przy wyższych prędkościach transmisji bez konieczności modyfikowania chipsetu FTDI.

Peter M.
źródło