- zamontowane dwa typy gniazd USB-B i mikro USB,
- wybieranie zworkami poziomu dopasowania sygnałów: 5 V, 3,3 V lub dowolnego w zakresie 2,7…5,5 V,
- możliwość zasilania systemu procesorowego z konwertera, napięciem 5 V lub 3,3 V,
- możliwość podłączania przewodów sygnałowych o długości nawet kilku metrów,
- maksymalna szybkość transmisji wynosi 512000 bodów,
- zasilanie konwertera z portu USB.
Budowa i działanie
Konwerter podłączony do dowolnego portu USB komputera, zostanie rozpoznany jako dodatkowy (wirtualny) port szeregowy. Umożliwia to sterownik konwertera zainstalowany w systemie operacyjnym komputera. Część sprzętowa przekształca dane przesyłane liniami UART RxD i TxD na transmisję USB. Schemat ideowy konwertera pokazany został na rysunku 1.
Jako mostek USB wykorzystany został powszechnie stosowany układ FT230XS. Transmisja USB podawana jest na wejście układu przez jedno z dwu równolegle połączonych gniazd X1, X2. Uwaga! W tym samym czasie do portu USB komputera może być podłączone tylko jedno z gniazd. Próba jednoczesnego użycia obydwu gniazd konwertera, doprowadzi do zakłócenia transmisji a nawet do elektrycznego uszkodzenia portu komputera. Układ IC1 zasilany jest napięciem 5 V pobieranym z portu USB komputera. Wewnętrzny stabilizator wytwarza napięcie 3,3 V służące do zasilania jego buforów, zarówno sygnałowych TxD, RxD jak i sygnalizacyjnych do których podłączone są diody LED. Świecenie diod informuje o przepływie danych odbieranych i wysyłanych poprzez port USB.
Bufory sygnałowe TxD i RxD podłączone są do wyprowadzeń konwertera poziomu IC2. Jego zadaniem jest elektryczne dopasowanie poziomu sygnałów UART doprowadzanych z dołączanego poprzez złącze SV1 systemu procesorowego. W roli konwertera „występuje” układ PCA9507. To trochę nietypowe rozwiązanie, ponieważ układ scalony został pierwotnie zaprojektowany do pracy z magistralami I2C jako ich przedłużacz (ekstender). Posiada wewnętrzne układy regeneracji zboczy sygnałów oraz możliwość konwersji poziomów pomiędzy wyprowadzeniami strony A i B. Strona B konwertera IC2 zasilana jest napięciem 3,3 V podawanym na wyprowadzenie VCCB. Jest to napięcie wykorzystywane do zasilania buforów sygnałowych mostka IC1. Zasilanie strony A konwertera IC2 podawane jest na wyprowadzenie VCCA. Jego poziom powinien być dopasowany do poziomu sygnałów UART. Wyboru dokonuje się ręcznie ustawiając jedną ze zwór JP1, JP2, JP3. Ta ostatnia przyłącza jako napięcie odniesienia V+, napięcie pobierane z podłączanego układu procesorowego. Wartość napięcia V+ powinna mieścić się w przedziale 2,7...5,5 V.
Uruchomienie i eksploatacja
Schemat płytki PCB wraz z rozmieszczeniem elementów pokazuje rysunek 2. Montaż wykonujemy zgodnie z ogólnymi zasadami wzorując się na fotografii 3. Gdy konwerter będzie gotowy, podłączamy go do komputera kablem USB, tylko poprzez jedno z gniazd: USB-B lub mikro USB. System komputera powinien rozpoznać dodatkowy port szeregowy. Jeśli tak się nie stanie oznacza to, że nie jest zainstalowany sterownik obsługujący układ FT230XS. Zazwyczaj system Windows samodzielnie instaluje potrzebny sterownik korzystając z dostępu do sieci internet. W przypadku problemów trzeba ze strony firmy FTDI http://bit.ly/2kqd3zb pobrać odpowiedni plik i w standardowy sposób zainstalować sterownik w systemie.
Sygnały UART systemu z mikroprocesorem podłączamy poprzez złącze SV1. Linię TxD UART dołączanego systemu należy podłączyć z wyprowadzeniem SV1-2 (opisanym na rysunku 1 jako RX-In, dane wejściowe). Linię RxD UART dołączanego systemu łączymy z SV1-3 (opisanym na rysunku 1 jako TX-Out dane wyjściowe). Masę dołączanego systemu łączymy z masą konwertera poprzez wyprowadzenie SV1-1 lub SV1-4.
W przypadku systemów zasilanych napięciem 5 V (większość popularnych mikrokontrolerów ATMEL) poziom sygnałów logicznych interfejsów UART będzie równy 0 V oraz 5 V. W tym przypadku trzeba na interfejsie zewrzeć zworę JP2. Gdy system zasilany jest napięciem 3,3 V (np. mikrokontroler STM32) poziom sygnałów logicznych interfejsów UART będzie wynosił 0 V oraz 3,3 V. W tym przypadku trzeba na interfejsie zewrzeć zworę JP1. W przypadku systemów zasilanych innym napięciem np. 2,8 V należy zewrzeć zworę JP3 a do wyprowadzenia SV1-5 (V+) podłączyć napięcie zasilania systemu.
Testy
Po zmontowaniu prototypu przeprowadziłem testy możliwości konwertera USB-UART. Do testów użyłem płytkę Nucleo-F446 z oprogramowaniem pracującym jak echo, odsyłającym UART-em odebraną transmisję. Wyprowadzenie konwertera SV1-2 (RX-In) połączyłem z portem płytki Nucleo PA9 (UART1 TX), wyprowadzenie SV1-3 (TX-Out) z PA10 (UART1 RX), SV1-1 (GND) z jednym z wyprowadzeń masy na płytce Nucleo.
Zależnie od testu zmieniałem:
- szybkość transmisji 256000 lub 512000 bodów,
- poziom sygnałów 5 V lub 3,3 V,
- długość przewodów pomiędzy płytką konwertera a płytką Nucleo: 30 cm lub 5 m.
Rezultaty testów pozwoliły stwierdzić, że przy szybkościach transmisji równych lub mniejszych niż 256000 bodów, konwerter pracuje bez problemu. Dla szybkości 512000 bodów i podłączeniach pomiędzy konwerterem a płytką Nucleo o długości 30 cm także wszystko działa prawidłowo. Konwerter zawodzi przy kombinacji dużej szybkości transmisji, długich przewodów i przy poziomach logicznych 0...5 V.
Ryszard Szymaniak, EP
- R1, R2: 22 Ω SMD0805
- R3, R4: 220 Ω SMD0805
- R5, R6, R7, R8: 10 kΩ SMD0805
- C1, C2: 47 pF SMD0805
- C3, C4: 100 nF SMD0805
- C5, C6, C7: 10 μF SMD0805
- IC1: FT230XS SSOP-16
- IC2: PCA9507 TSSOP8
- IC3: LM1117 3V3 SOT-223-4
- LED1, LED2: dioda LED SMD0805
- X1: gniazdo micro USB
- X2: gniazdo USB-B
- SV1: 5×1 goldpiny proste
- JP1, JP2, JP3: 2×1 goldpiny proste