Dwukanałowy port szeregowy z pełnym interfejsem UART

Dwukanałowy port szeregowy z pełnym interfejsem UART

Dzięki zastosowaniu opisanej nakładki możemy uzupełnić Raspberry Pi Zero o dwa dodatkowe porty szeregowe z pełnym zestawem sygnałów interfejsu UART, które będą przydatne w aplikacjach automatyki domowej lub IoT.

Podstawowe parametry:
  • 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.

Rysunek 1. Schemat wewnętrzny układu SC16IS752 (za notą NXP)

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.

Rysunek 2. Schemat ideowy modułu

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.

Rysunek 3. Schemat płytki PCB

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:

i2cdetect -y 1

tak, jak pokazano na rysunku 4 (ustawiony adres bazowy 7-bitowy 0x48).

Rysunek 4. Detekcja układu SC16IS752 na magistrali I²C

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

sudo nano /boot/config.txt

i dodając na końcu pliku linię:

dtoverlay=sc16is752-i2c,int_pin=24,addr=0x48, xtal=14745600

Po edycji i zapisaniu zmian należy zrestartować system poleceniem:

sudo reboot now

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 minicom
sudo apt-get install picocom

po uruchomieniu wpisujemy:

sudo minicom

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.

Rysunek 5. Konfiguracja minicom

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:

sudo picocom -b 115200 /dev/ttySC1

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

Wykaz elementów:
Rezystory: (SMD0603, 1%)
  • R1, R2: 4,7 kΩ
  • R3, R4, R5, R6, R7: 1 kΩ
Kondensatory: (SMD0603)
  • C1, C5, C6, C7, C8: 0,1 μF, 10 V
  • C2: 10 μF, 10 V
  • C3, C4: 22 pF, 16 V NP0 (SMD0603)
Półprzewodniki:
  • 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)
Pozostałe:
  • 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
Artykuł ukazał się w
Elektronika Praktyczna
luty 2024
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich grudzień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów