- port szeregowy w standardzie RS232 z potwierdzaniem sprzętowym,
- izolowany galwanicznie,
- zawiera kontroler UART typu SC16IS740 sterowany poprzez I²C.
Moduł zawiera jednokanałowy kontroler UART sterowany poprzez magistralę I²C typu SC16IS740 firmy NXP, którego schemat wewnętrzny został pokazany na rysunku 1.
Układ jest wspierany przez dystrybucje Linuxa dla Raspberry Pi i umożliwia realizację transmisji z typowymi prędkościami, także w trybie z potwierdzeniem sprzętowym i elastyczną konfiguracją ramki przy zachowaniu niewielkiego poboru mocy. Dzięki użyciu magistrali I²C, domyślny interfejs UART komputerka Raspberry można zastosować do innych zadań np. SSH.
Budowa i działanie
Schemat ideowy modułu został pokazany na rysunku 2. Magistrala I²C doprowadzona jest ze złącza GPIO, na które wyprowadzony jest też niezbędny do poprawnej pracy sygnał przerwania IRQ. U2 zapewnia poprawny restart U1 po włączeniu zasilania.
Sygnały UART, TXD, RXD, CTS, RTS doprowadzone są do minimodułu izolatora RS232, układu U4 typu LTM2882. Integruje on obwody izolacji optycznej sygnałów UART, nadajniki i odbiorniki standardu RS232 oraz izolowaną przetwornicę zasilania, upraszczając aplikację do kondensatorów odsprzęgających C8, C9. Sygnały po izolacji wyprowadzone na zaciski śrubowe złącza RS232 i do złącza RS232 typu DB9F.
Układ U3 buforuje sygnały RXD/TXD sterujące diodą RTX sygnalizującą aktywną transmisję. Zwory A0, A1 umożliwiają ustawienie 4 adresów (zwora zwarta Ax=GND=0, zwarta Ax=V33=1) zgodnie z tabelą 1. Należy zwrócić uwagę, aby ustawiony adres nie pokrywał się np. z termometrami I²C.
Nakładka zasilana jest z napięcia 3,3 V Raspberry Pi. Układ LTM2882 występuje w dwóch wykonaniach -3, -5 wymagających zasilania odpowiednio 3,3 V i 5 V, które można wybrać zworą VCC.
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej zgodnej z Raspberry Pi Zero. Schemat płytki został pokazany na rysunku 3.
Sposób montażu jest klasyczny i nie wymaga opisu. Dla szybkiego sprawdzenia działania, nakładkę podłączamy do Raspberry Pi. Domyślny adres modułu to 0×4D (obie zwory A0, A1 zwarte do GND). Używając biblioteki i2ctools, po ustawieniu adresu bazowego, moduł powinien być widoczny po odczycie magistrali poleceniem:
co pokazano na rysunku 4 (ustawiony adres bazowy 7-bitowy 0×4D).
Jeżeli układ jest widoczny na magistrali I²C można zainicjować jego driver, w tym celu edytujemy plik config.txt wpisując polecenie:
i dodając na końcu pliku linię:
W zależności od zastosowanych wyprowadzeń gpio i ustawionego adresu należy zmodyfikować parametr, addr. Układ SC16IS740 jest uproszczoną o GPIO wersją SC16IS750 i w zakresie obsługi UART jest w 100% zgodny. Po edycji należy zrestartować system poleceniem:
Po uruchomieniu systemu, poleceniem:
sprawdzamy czy w miejscu adresu 0×4D, pojawi się tekst UU, świadczący o kontrolowaniu urządzenia przez driver.
Obecność dodatkowego portu szeregowego w systemie możemy sprawdzić poleceniem:
wśród urządzeń powinien znaleźć się wpis ttySC0, który odpowiada nowemu portowi transmisji szeregowej.
Dla sprawdzenia poprawności transmisji można użyć emulatora terminala minicom lub picocom instalując go poleceniem:
lub
a po uruchomieniu wpisujemy:
ustalamy parametry transmisji (ttySC0, ANSI, 115200,8,N,1). Menu minicoma wywołujemy kombinacją CTRL A+Z, następnie opcje konfiguracji portu P, ustawień terminala T, konfiguracji minicom O, zgodnie z rysunkiem 5.
Po konfiguracji zwieramy wyprowadzenie TXD/RXD modułu, wprowadzone w znaki powinny wracać do terminala, a transmisja powinna być sygnalizowana diodą RTX.
Po podłączeniu do terminala PC poprzez konwerter USB/RS232 dla sprawdzenia komunikacji możemy też wykorzystać polecenia systemowe:
odbierające znaki z zewnętrznego terminala lub
wysyłające znaki do zewnętrznego terminala przy domyślnych ustawieniach portu szeregowego. Zmieniając ustawienie terminala na transmisje z sprzętowym potwierdzeniem, zwieramy wyprowadzenie RTS z CTS i ponownie sprawdzamy poprawność komunikacji. Jeżeli wszystko działa możemy moduł zastosować we własnej aplikacji.
Adam Tatuś, EP
- R1: 2,2 kΩ
- R2: 1 kΩ
- R3, R4: 10 kΩ
- R5, R6: 4,7 kΩ
- C1, C5: 0,1 μF 16 V
- C2: 10 μF 16 V
- C3, C4: 22 pF 16 V NP0
- LD: dioda LED (SMD0805)
- U1: SC16IS740IPW (TSSOP16)
- U2: MCP100T-315I/TT (SOT-23)
- ADR, PU: listwa IDC8 + zwory
- I²C1: złącze JST4 1 mm
- I²C: złącze EH4 kątowe
- J1: listwa SIP5 prosta męska
- J2: listwa SIP8 prosta męska
- XT: kwarc 14,7456 MHz (CFPX-180) 3,2×2,5