Ekspander portu szeregowego UART do magistrali I2C

Ekspander portu szeregowego UART do magistrali I2C

Dzięki zastosowaniu ekspandera możemy uzupełnić Raspberry Pi lub inne SBC o dodatkowy port szeregowy UART przydatny w aplikacjach automatyki domowej lub IoT.

Podstawowe parametry:
  • wspierany przez dystrybucję Linuxa dla Raspberry Pi,
  • umożliwia realizację transmisji z typowymi prędkościami, także w trybie z potwierdzeniem sprzętowym i elastyczną konfiguracją ramki,
  • umożliwia ustawienie 4 adresów na magistrali I2C,
  • wymaga zasilania 3,3 V/50 mA.

Moduł zawiera sprzętowy port UART dla magistrali I2C w postaci układu typu SC16IS740 firmy NXP, którego schemat wewnętrzny został pokazany na rysunku 1.

Rysunek 1. Schemat wewnętrzny układu SC16IS740

Układ jest wspierany przez dystrybucję 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 modułu został pokazany na rysunku 2. Magistrala I2C doprowadzona jest do złącza J1, na które wyprowadzony jest też niezbędny do poprawnej pracy sygnał przerwania IRQ. Na złącze J2 wyprowadzone są sygnały portu szeregowego RXD/TXD, CTS/RTS oraz dodatkowo sygnały magistrali I2C. Rozstaw złącz ułatwia zastosowanie modułu w typowych płytkach stykowych i prototypowych. Złącza I2C/I2C1 typu EH/JST mogą zostać użyte do podłączenia pozostałych modułów na magistrali I2C. Układ U2 zapewnia reset po włączeniu zasilania.

Rysunek 2. Schemat modułu

Układ SC16IS740 wymaga stabilnego zegara do realizowania transmisji, który jest zbudowany na elementach XT, C3, C4. Zwora PU umożliwia konfigurację rezystorów podciągających magistralę I2C – R5, R6. Zwora ADR umożliwia ustawienie 4 adresów (zwora zwarta Ax=0, rozwarta Ax=1) zgodnie z tabelą 1.

Należy zwrócić uwagę, aby ustawiony adres nie pokrywał się np. z termometrami I2C. Moduł wymaga zasilania 3,3 V/50 mA, dioda LED sygnalizuje jego obecność.

Montaż i uruchomienie

Moduł zmontowany jest na dwustronnej płytce drukowanej, której schemat wraz z rozmieszczeniem elementów został pokazany na rysunku 3.

Rysunek 3. Schemat płytki PCB z rozmieszczeniem elementów

Sposób montażu jest klasyczny i nie wymaga dokładnego opisu. Konstrukcja mechaniczna modułu umożliwia bezproblemową współpracę z płytkami stykowymi lub prototypowymi, zalecam stosowanie długich (30...40 mm) złącz SIP, wlutowanych tak, aby wyprowadzenia wystawały po obu stronach płytki drukowanej. Taki sposób montażu umożliwia wygodne stosowanie w płytkach stykowych oraz ułatwia wyprowadzenie sygnałów oraz rozszerzanie magistrali I2C.

Dla szybkiego sprawdzenia działania, moduł można podłączyć do magistrali I2C komputerka Raspberry Pi, a wyprowadzenie przerwania INT do GPIO24 (pin 18). Domyślny adres modułu to 0x4D (założone obie zwory ADR). Wykorzystując bibliotekę i2ctools, po ustawieniu adresu bazowego, moduł powinien być widoczny po odczycie magistrali poleceniem:

i2cdetect -y 1

Efekt został pokazany na rysunku 4 (ustawiony adres bazowy 7-bitowy 0x4D).

Rysunek 4. Detekcja SC16IS740

Jeżeli układ jest widoczny na magistrali I2C, to można zainicjować jego sterownik. W tym celu edytujemy plik config.txt:

sudo nano /boot/config.txt

dodając na końcu pliku linię:

dtoverlay=sc16is750-i2c,int_pin=24,addr=0x4D

W zależności od wykorzystanych wyprowadzeń GPIO i ustawionego adresu należy zmodyfikować parametry int_pin, addr. Układ SC16IS740 jest uproszczoną o GPIO wersją SC16IS750 i w zakresie obsługi UART jest w 100% zgodny.

Po edycji pliku należy zrestartować system poleceniem:

sudo reboot now

Po uruchomieniu systemu, poleceniem:

i2cdetect -y 1

sprawdzamy czy w miejscu adresu 0x4D, pojawi się tekst UU, świadczący o kontroli urządzenia przez driver. Obecność dodatkowego portu szeregowego w systemie możemy sprawdzić poleceniem:

ls /dev

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:

sudo apt-get install minicom

lub

sudo apt-get install picocom

Po uruchomieniu poleceniem:

sudo minicom

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.

Rysunek 5. Konfiguracja minicom

Pierwsze użycie emulatora terminala może być wstrząsające, ale po przeglądnięciu menu i wbudowanej pomocy wszystko staje się logiczne. Po konfiguracji zwieramy wyprowadzenie TXD/RXD modułu, wprowadzone w znaki powinny wracać do terminala.

Po podłączeniu do terminala PC poprzez konwerter USB/UART (3,3 V) dla sprawdzenia komunikacji możemy też wykorzystać polecenia systemowe:

while (true) do cat -A /dev/ttySC0 ; done

odbierające znaki z zewnętrznego terminala lub

echo "1234567890 test 16IS740" > /dev/ttySC0

wysyłające znaki do zewnętrznego terminala przy domyślnych ustawieniach portu szeregowego. Jeżeli wszystko działa możemy moduł zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603, 1%)
  • R1: 2,2 kΩ
  • R2: 1 kΩ
  • R3, R4: 10 kΩ
  • R5, R6: 4,7 kΩ
Kondensatory: (SMD0603)
  • C1, C5: 0,1 µF
  • C2: 10 µF
  • C3, C4: 22 pF
Półprzewodniki:
  • LD: dioda LED SMD0805
  • U1: SC16IS740IPW (TSSOP16)
  • U2: MCP100T-315I/TT (SOT-23)
Inne:
  • ADR, PU: Listwa IDC8 + zwory IDC4
  • I2C: złącze EH4 kątowe
  • I2C1: złącze JST4 1 mm
  • J1: listwa SIP5 prosta męska
  • J2: listwa SIP8 prosta męska
  • XT: rezonator kwarcowy 14,7456 MHz SMD 3,2×2,5
Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2021
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik sierpień 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje lipiec 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna sierpień 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich sierpień 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów