Układ FT311D, produkowany przez firmę FTDI, znany jest od dobrych kilku lat. Nie stał się tak popularny jak inne interfejsy tej firmy. Pozwala jednak rozszerzyć możliwości telefonu z systemem Android w bardzo prosty, czysto sprzętowy sposób.
Niemal każde urządzenie mobilne, czy to smartfon, czy tablet, jest wyposażone w gniazdo USB. Na ogół służy ono tylko do wymiany danych pomiędzy telefonem a komputerem. W taki sposób najłatwiej można odczytać pliki wykonanych zdjęć i zapisać pliki multimedialne. Jeżeli port telefonu może pracować w trybie OTG, do gniazda USB daje się jeszcze przyłączyć nośniki pamięci masowej lub myszkę. Jednak użycie portu USB do innych celów jest bardzo trudne. Tymczasem za pomocą układu interfejsowego FT311D jest możliwa dwustronna komunikacja w trybie UART, czyli jak za pośrednictwem „zwykłego RS232”. Dzięki prezentowanemu urządzeniu będzie można sterować 7 niezależnymi liniami wyjść lub wejść, generować przebiegi PWM lub komunikować się z urządzeniami mającymi interfejs I²C lub SPI. W dodatku nie będą potrzebne do realizacji tych funkcji żadne dodatkowe sterowniki czy specjalne uprawnienia administratora systemu. Jest to możliwe dzięki temu, że FT311D pełni funkcję hosta USB. Interfejs jest „widziany” tak, jakby urządzenie pracujące pod Androidem było przyłączone do komputera zewnętrznego. Interfejs zadziała z każdym urządzeniem z Androidem w wersji 3,1 lub nowszej, a więc z każdą wersją systemu obsługującą tryb „Android Open Accessory” (AOA).
Na rysunku 1 pokazano konfigurację połączeń pomiędzy urządzeniem z systemem Android, interfejsem FT311D i sterowanym układem. Do interfejsu USB urządzenia z Androidem przyłącza się wyprowadzenia FT311D służące do obsługi portu w trybie hosta. Z kolei 7 wyprowadzeń IOBUS0…IOBUS6 komunikuje się ze sterowanym układem. Istnieje możliwość konfigurowania wyprowadzeń IOBUS do pracy w różnych trybach.
Tryby pracy wyprowadzeń IOBUS układu FT311D
Linie IOBUS mogą pracować jako wyprowadzenia interfejsów w jednym z wybranych trybów. Mogą działać jako wyjścia lub wejścia, pełnić funkcję interfejsu UART lub I²C, SPI, wyjścia sygnałów PWM. O tym, który tryb pracy zostanie przyporządkowany do poszczególnych wyprowadzeń IOBUS, decydują poziomy logiczne podane na trzy linie CNFG0…CNFG2 interfejsu FT311D. W tabeli 1 wymieniono wszystkie dopuszczalne kombinacje poziomów wymuszające pracę wyprowadzeń IOBUS w określonym trybie. Linie CNFG mogą być zwarte do masy (poziom L) lub pozostawione niepodłączone (poziom H).
Tryb GPIO
W tym trybie każde z wyprowadzeń IOBUS może znaleźć się w stanie wysokim lub niskim. Dowolne wyprowadzenie może pracować jako wejście lub wyjście. Jako wejścia wyprowadzenia tolerują poziom napięcia 3,3 V lub 5 V. Na rysunku 2 pokazano przykładową konfigurację FT311D do pracy w trybie GPIO.
W przykładzie wyprowadzenia IOBUS0…IOBUS3 pracują jako wyjścia sterujące czterema diodami LED. Wyprowadzenia IOBUS4…IOBUS6 pracują jako wejścia podłączone do trzech przycisków. Po naciśnięciu przyciski zwierają do masy. Wyprowadzenia IOBUS są wewnętrznie podciągane do napięcia zasilającego układ, dzięki czemu nie ma potrzeby stosowania dodatkowych rezystorów zasilających.
Tryb UART
W tym trybie wyprowadzenie IOBUS0 pełni funkcję wyjścia TxD, a wyprowadzenie IOBUS1 wejścia RxD. Możliwa jest transmisja z szybkościami w zakresie od 300 bps do 6 Mbps. Wyprowadzenia można dołączyć bezpośrednio do portów UART zewnętrznego kontrolera albo do konwertera poziomów np. MAX232. Dodatkowo dostępne są sygnały sprzętowej kontroli przepływu RTS i CTS. Układ może także pracować z interfejsem RS485. W tym wypadku sygnał ACTIVE z wyprowadzenia IOBUS4 będzie służył do przełączenia pomiędzy odbiorem a nadawaniem. Na rysunku 3 pokazano schemat połączeń w trybie UART. Wyprowadzenia IOBUS5…IOBUS6 nie są używane.
Tryb PWM
Ten tryb służy do generowania na wybranych wyjściach IOBUS0…IOBUS3 przebiegów o regulowanym okresie i wypełnieniu (rysunek 4). Okres impulsów jest wspólny dla wszystkich 4 kanałów i może być ustawiany w przedziale od 1 do 250 ms. Z kolei wypełnienie można oddzielnie dla każdego kanału zmieniać w zakresie od 5% do 95% lub wyłączyć generowanie przebiegu, ustawiając wartość 0%.
Tryb I²C
W tym trybie wykorzystane są tylko wyprowadzenia IOBUS0 i IOBUS1. Zgodnie z wymaganiami standardu transmisji I²C linie danych i zegarowa powinny być podciągnięte poprzez dodatkowy opornik do poziomu zasilania. Podłączenie do interfejsu FT311D układu np. pamięci pokazano na rysunku 5. W tym trybie interfejs pracuje jako master. Maksymalna szybkość transmisji danych magistralą może wynieść 125 kbit/s.
Tryb SPI master i slave
W trybie SPI interfejs FT311D może pracować jako master lub slave. Linie IOBUS3…IOBUS6 dostarczają wszystkich przebiegów potrzebnych do pracy w obu trybach. Na rysunku 6 pokazano sytuację, w której interfejs FT311D pracuje jako slave, a na rysunku 7 jako master.
Schemat interfejsu z układem FT311D
Schemat ideowy interfejsu z układem FT311D pokazano na rysunku 8. Gniazdo G1 służy do połączenia interfejsu z portem USB telefonu bądź tabletu. Linie IOBUS wyprowadzono na złącze SV1. Na wydzielonym złączu SV2 wyprowadzono napięcie +3,3 V oraz masę zasilania GND. Linie CNFG służące do wyboru trybu pracy interfejsu połączono ze złączem JP1. Założenie zwór na stykach złącza zeruje linie CNFG, a pozostawienie styków rozwartych – ustawia. Przycisk S1 służy do ręcznego zerowania interfejsu.
Napięcie do zasilania interfejsu można podać na gniazdo G2 lub G3. Z wyjścia stabilizatora IC4 napięcie +5 V podawane jest na gniazdo USB współpracującego telefonu lub tabletu. Jeżeli akumulator dołączonego telefonu będzie częściowo rozładowany, napięcie +5 V będzie służyło do jego ładowania.
Ponieważ prąd ładowania może być dosyć duży, nawet rzędu kilkuset miliamperów stabilizator IC4 może się mocno nagrzewać. Dlatego napięcie zasilania interfejsu, gdy telefon się ładuje, powinno być możliwe niskie, rzędu 6 V.
Aplikacje współpracujące z interfejsem FT311D
Do sterowania układami podłączonymi do wyprowadzeń IOBUS potrzebne są aplikacje androidowe. Są one uruchamiane na urządzeniu mobilnym, do którego przyłączono interfejs FT311D. Zależnie od wybranego trybu pracy interfejsu aplikacja musi obsłużyć transmisję (np. odbiór i wysłanie danych poprzez UART) lub steruje poszczególnymi wyprowadzeniami w przypadku ustawienia trybu GPIO lub PWM. Firma FTDI udostępnia pliki źródłowe przykładowych aplikacji dla wszystkich trybów pracy interfejsu oraz dokumentację z opisem poszczególnych procedur. Linki do wspomnianych materiałów zamieszczam na końcu artykułu.
Korzystając z podanych przykładów, można napisać własną aplikację do obsługi interfejsu w interesującym nas trybie. Generalnie musi ona zawierać procedurę ustanowienia połączenia pomiędzy urządzeniem androidowym (smartfonem lub tabletem) a interfejsem FT311D oraz procedurę transmisji danych.
Na rysunku 9 zamieszczono zrzut ekranu aplikacji firmowej FTDI o nazwie PWMDemo. Służy ona do ustawienia okresu i wypełnienia dla 4 kanałów PWM odpowiadających IOBUS0-3. Aplikacja uruchamia się samoczynnie po dołączeniu interfejsu ustawionego w trybie PWM do telefonu.
Ograniczenia układu FT311D
Oprócz niewątpliwych korzyści, które daje stosowanie interfejsu FT311D, w czasie eksperymentowania z tym układem dostrzegłem pewne ograniczenia związane z jego działaniem.
Wszystkie wyprowadzenia IOBUS muszą pracować w tym samym trybie. Dlatego nie można np. jednocześnie uruchomić transmisji UART i sterować dwoma niewykorzystanymi liniami IOBUS5, IOBUS6. Do zmiany trybu jest konieczna zmiana konfiguracji wyprowadzeń CNFG, wyzerowanie interfejsu i ponowna inicjacja w nowym trybie pracy.
Dla ustanowienia komunikacji pomiędzy urządzeniem androidowym a interfejsem jest niezbędne podanie na pierwszy styk gniazda USB napięcia +5 V, które może służyć do ładowania akumulatora telefonu. Ze względu na duży prąd potrzebny podczas ładowania sensowne jest rozdzielenie zasilania telefonu od zasilania samego interfejsu lub zasilania interfejsu FT311D napięciem ładowania samego telefonu np. z dołączonego na stałe zasilacza sieciowego.
Wariant interfejsu FT312D
Oprócz opisanego interfejsu FT311D jest dostępny jego wariant o nazwie FT312D. Różni się ograniczeniem dostępnych trybów pracy do jednego obsługującego transmisję UART.
Ryszard Szymaniak, EP
http://www.ftdichip.com/Android.htm
Dokumentacja techniczna interfejsu FT311D: www.ftdichip.com
Dokument opisujący sposób tworzenia aplikacji dla Androida i poszczególnych trybów pracy interfejsu: www.ftdichip.com
Strona, z której można pobrać pliki źródłowe przykładowych aplikacji: www.ftdichip.com
Dokument opisujący przykładowe aplikacje: www.ftdichip.com