- dwa porty szeregowe z pełnym zestawem sygnałów interfejsu UART,
- umożliwia realizację transmisji szeregowej z typowymi prędkościami,
- działa także w trybie z potwierdzeniem sprzętowym,
- zapewnia elastyczną konfigurację ramki,
- przeznaczony do Raspberry Pi Zero, ale może działać, także z innymi SBC.
Moduł zawiera dwukanałowy ekspander UART typu SC16IS752 firmy NXP, sterowny z magistrali I²C. Jego schemat wewnętrzny pokazano 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.
Budowa i działanie
Schemat ideowy nakładki został pokazany na rysunku 2. Układ U1 - SC16IS752 wymaga stabilnego generatora zegara transmisji, który zrealizowany jest poprzez obwód XT, C3, C4. Układ U2 zapewnia reset dla U1 po włączeniu zasilania. Zwory AL/AH umożliwiają wybór czterech adresów magistrali I²C 0x48...0x4B. Przy wyborze adresu SC16IS752 należy zwrócić uwagę, czy nie dojdzie do kolizji przy aplikacji z popularnymi termometrami I²C.
Do prawidłowej pracy wymagana jest obsługa przerwania IRQ, które doprowadzone jest do linii GPIO24. Sygnały portów szeregowych doprowadzone są do złącz UARTA/B, gdzie dostępne są wszystkie sygnały interfejsu UART wraz z zasilaniem 3,3 V.
Bramki układu U3 zapewniają buforowanie sygnałów RXD/TXD dla diod LED RXx/TXx sygnalizujących aktywności portów szeregowych.
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 3. Sposób montażu jest klasyczny i nie wymaga opisu.
Po ustawieniu adresu poprzez zwarcie odpowiednich pól AL/AH kroplą cyny, dla szybkiego sprawdzenia działania, moduł należy podłączyć do Raspberry Pi. Domyślny adres modułu to 0x48 (zwora AL=V33, AH nie lutowana). Używając biblioteki i2ctools, po ustawieniu adresu bazowego, moduł powinien być widoczny przy odczycie magistrali poleceniem:
tak, jak pokazano na rysunku 4 (ustawiony adres bazowy 7-bitowy 0x48).
Jeżeli układ jest widoczny na magistrali I²C można zainicjować jego sterowniki w systemie operacyjnym SBC. W tym celu edytujemy plik config.txt wpisując w konsoli
i dodając na końcu pliku linię:
Po edycji i zapisaniu zmian należy zrestartować system poleceniem:
Po uruchomieniu systemu, poleceniem i2cdetect -y 1 sprawdzamy, czy w miejscu adresu 0x48, pojawi się tekst UU, świadczący o kontrolowaniu urządzenia przez sterowniki.
Obecność dodatkowych portów szeregowych w systemie możemy sprawdzić poleceniem ls /dev/ttyS* wśród urządzeń powinny znaleźć się ttySC0, ttySC1 odpowiadające portom A/B transmisji szeregowej. Dla sprawdzenia poprawności transmisji można użyć emulatora terminala minicom lub picocom oraz konwertera USB/UART 3,3 V podłączonego do PC z programem Teraterm lub terminal. Łącząc odpowiadające sygnały GND/RXD/TXD modułu i konwertera pamiętając o logice 3,3 V zestawiamy połączenie szeregowe Pi-PC.
Program minicom lub picocom instalujemy odpowiednio poleceniem:
sudo apt-get install picocom
po uruchomieniu wpisujemy:
ustalamy parametry transmisji (ttySC0, ANSI, 115200,8,N,1) zarówno w programie minicom jak i w terminalu PC. 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 wprowadzone w znaki powinny byś transmitowane w obu kierunkach Pi-PC w zależności od aktywnego terminala, a transmisja sygnalizowana świeceniem odpowiednich LED.
Port ttySC1 sprawdzimy dla odmiany emulatorem picocom:
W tym przypadku także powinna być możliwa dwukierunkowa transmisja szeregowa. Jeżeli wszystko działa możemy moduł zastosować we własnej aplikacji.
Adam Tatuś, EP
- R1, R2: 4,7 kΩ
- R3, R4, R5, R6, R7: 1 kΩ
- C1, C5, C6, C7, C8: 0,1 μF, 10 V
- C2: 10 μF, 10 V
- C3, C4: 22 pF, 16 V NP0 (SMD0603)
- LD1, LD3: dioda LED zielona (SMD0603)
- LD2, LD4: dioda LED czerwona (SMD0603)
- U1: SC16IS752IPW128 (TSSOP28_065)
- U2: MCP100T-315I/TT (SOT-23)
- U3: LVC00 (TSSOP14)
- GPIO: złącze żeńskie IDC40
- UARTA, UARTB: złącze kątowe SIP10, 2,54 mm
- XT: rezonator kwarcowy 14,7456 MHz (CFPX-180) 3,2×2,5