- komunikuje się z układem nadrzędnym poprzez standardowy interfejs szeregowy UART i komunikację znakową ASCII,
- może współpracować z konwerterem USB-UART,
- wejścia zgodne z logiką 3,3 V.
Zaprezentowany układ mostka UART-I²C pozwala na podłączenie układów I²C do monitorowania lub sterowania urządzeniami zewnętrznymi z użyciem portu szeregowego, czy to natywnego, czy zrealizowanego poprzez konwerter USB-UART. W konstrukcji zastosowano specjalizowany układ SC18IM700 firmy NXP, którego strukturę wewnętrzną pokazuje rysunek 1.
Układ komunikuje się z układem nadrzędnym poprzez standardowy interfejs szeregowy UART i komunikację znakową ASCII. Obsługuje odczyt i zapis magistrali I²C w trybie zapisu pojedynczego lub wielobajtowego z 16-bitowym buforem, zapewniając poprawne generowanie sygnałów sterujących magistralą. Zastosowanie układu umożliwia dołączenie układów ekspanderów GPIO, sterowników LED itp., bez konieczności poświęcenia czasu na oprogramowanie pośredniczące pomiędzy PC a I²C mikrokontrolera. Cała praca programistyczna przy zastosowaniu SC18IM700 ogranicza się do opracowania aplikacji na PC komunikującej się poprzez UART.
Budowa i działanie
Schemat modułu został pokazany na rysunku 2. Układ nie odbiega od standardowej aplikacji, do złączy UART/UARTA doprowadzone są sygnały portu szeregowego z konwertera poziomów RS232 lub mostka USB/UART, zgodne z logiką 3,3 V oraz zasilanie 3,3 V. Na złącze UARTA wyprowadzone są dodatkowo sygnały RESET i WAKE umożliwiające restart lub wprowadzenie sprzętowe U1 w tryb obniżonego poboru mocy. Do złączy I²C, I²CA doprowadzona jest magistrala z układów zewnętrznych, także w standardzie 3,3 V.
Zwora RT umożliwia przekrosowanie sygnałów UART RX/TX, gdy nie jest możliwe przekrosowanie w kablu (np. podczas użycia kabli i złączy zgodnych z Grove).
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 3. Montaż jest typowy i nie wymaga dokładnego opisu, a poprawnie zmontowany układ nie wymaga uruchamiania.
W celu sprawdzenia działania należy podłączyć mostek do PC poprzez konwerter RS232 lub USB/UART z wyjściem sygnału o napięciu 3,3 V. Następnie należy zainstalować terminal portu szeregowego z możliwością wysyłania sekwencji znaków np. Realterm oraz przygotować płytkę z układem I²C np. AVT1707 z układem PCF8574.
Komunikacja z układem SC18IM700 odbywa się poprzez wysłanie polecenia w postaci komendy ASCII, zestaw rozpoznawanych komend znajduje się w tabeli 1.
Komendy nierozpoznane są ignorowane. Układ ma wbudowany licznik time-out, który kasuje zawartość buforów, jeżeli odbiór kolejnych dwóch znaków zajmuje więcej niż 655 ms.
Układ jest skonfigurowany wstępnie po uruchomieniu, standard transmisji jest ustawiony na 9600, 8, N, 1. Konfiguracja może zostać zmieniona w rejestrach układu, zgodnie z tabelą 2 i szczegółowym opisem w dokumentacji SC18IM700.pdf i AN10397.pdf, dołączonej do materiałów dodatkowych. Po uruchomieniu terminalu i restarcie układu zwrócone zostaną znaki OK, potwierdzające połączenie z układem. Do zmiany konfiguracji służą sekwencje poleceń zapisu rejestru wewnętrznego:
W <rejestr 0> <dana 0>...<rejestr N> <dana N> P
lub odczytu
R <rejestr 0> ...<rejestr N> P
po którym SC18IM700 zwróci ciąg wartości:
<dana 0> ... <dana N>
Przykładowy odczyt rejestru 00 to sekwencja:
52 00 50
która po resecie zwraca wartość domyślną 0xF0.
Podłączony do magistrali układ PCF8574 ma ustawiony adres 0x20, odczyt stanu (rysunek 4) wyprowadzeń wykonany za pomocą sekwencji:
53 41 01 50
która odczytuje jeden bajt spod adresu 0x41, czyli stan wyprowadzeń PCF8574 z ustawionym siedmiobitowym adresem 0x20. Ze względu na adresowanie 8-bitowe, najmłodszy bajt ustawiony jest na 1 dla operacji odczytu (0100 0001).
Ustawienie wyjść (rysunek 5) wykonywane jest za pomocą sekwencji:
53 40 01 00 50
która zapisuje jeden bajt o wartości 0x00 pod adres 0x40, czyli stan wyprowadzeń PCF8574 z ustawionym siedmiobitowym adresem 0x20 zostanie zmieniony na 0x00. Ze względu na adresowanie 8-bitowe najmłodszy bajt ustawiony jest na 0 dla operacji zapisu (0100 0000). Poprawność wykonania operacji sprawdzamy, odczytując rejestr statusu I²CStat 0x0A sekwencją:
52 0A 50
która powinna zwrócić wartość 0xF0, zgodnie z tabelą 3. Stosując zapis wielobajtowy, można konfigurować układy o większej liczbie rejestrów, np. sterownik LED PCA9531 zastosowany w miniklawiaturze z podświetleniem – AVT5889.
Adam Tatuś, EP
- R1, R2, R4: 4,7 kΩ
- R3: 1 kΩ
- C1: 0,1 μF
- C2: 1 μF
- U1: SC18IM700IPW (TSSOP16)
- I²C: złącze JST 1 mm
- I²CA: złącze szpilkowe 2,54 mm, 4 szpilki
- RT: złącze IDC4 + zwory
- UARTA: złącze szpilkowe 2,54 mm, 4 szpilki