Interfejs DCMI w STM32: jak dołączyć kamerę CCD do mikrokontrolerów STM32F2 i STM32F4

 Obsluga_kamery_cyfrowej_CCD_za_pomoca_mikrokontrolera_STM32F4

Przedstawiamy prostą aplikację na mikrokontroler STM32F4 obsługującą kamerę modCAM_2MP_2 i wyświetlacz modTFT32T, które podłączono do zestawu ZL41ARM. Dodatkowo dodano także obsługę komunikacji z komputerem PC przez port USB, dzięki czemu można łatwo konfigurować parametry kamery z poziomu aplikacji i obserwować efekty w czasie rzeczywistym bez konieczności programowania mikrokontrolera.

 

Schemat elektryczny

Schemat elektryczny przedstawiający sposób podłączenia modułu z kamerą oraz wyświetlacza LCD z panelem dotykowym do komputera jednopłytkowego z mikrokontrolerem STM32F417VG przedstawiono na rysunku 1 (pozostała część schematu znajduje się w dokumentacji zestawu ZL41ARM). Obecność dużej liczby połączeń powoduje, że w czasie pracy układu mogą występować w nich zakłócenia mające wpływ zarówno na odbierane dane z kamery jak i wysyłane do wyświetlacza. Jednym ze sposobów ich zmniejszenia jest przeplatanka przewodów połączeniowych jak widać na fotografii 1. Również ważnym jest aby chronić tylną część kamery przed światłem, gdyż w przeciwnym wypadku obraz może być w pewnych miejscach nieprawidłowy (inny kolor, dziwne piksele) lub prześwietlony.

 

Rys. 1. Schemat elektryczny podłączenia kamery i wyświetlacza

Rys. 1. Schemat elektryczny podłączenia kamery i wyświetlacza

 

Do zasilania kamery potrzebne jest napięcie maksymalnie 3 V (na płytce komputera występuje napięcie 3,3 V), dlatego został wykorzystany zewnętrzny stabilizator LM2950. Dodatkowo linie D+ oraz D- z gniazdka USB typu mini A zostały na stałe połączone z odpowiednimi wyprowadzeniami mikrokontrolera poprzez przylutowanie cienkich przewodów, ponieważ fabrycznie takich połączeń nie ma (w tabeli 1 przedstawiono jak to zostało zrobione). Interfejs USB pracuje w trybie Full Speed i nie jest wymaganym umieszczanie zewnętrznego rezystora podciągającego na linii D+ (jest on wbudowany w mikrokontroler).

Tab. 1. Opis zewnętrznych wyprowadzeń gniazdka USB typu mini A

Numer Oznaczenie Opis
1 VCC Napięcie zasilania +5 V
2 D- Linia transmisji danych podłączona do nóżki PA11 mikrokontrolera
3 D+ Linia transmisji danych podłączona do nóżki PA12 mikrokontrolera
4 NC Nie podłączone
5 GND Masa

 

Moduł wyświetlacza modTFT32T posiada kolorowy wyświetlacz z rozdzielczością 240RGBx320 pikseli sterowany przez kontroler SSD1289 oraz panel dotykowy obsługiwany przez kontroler ADS7843. Do komunikacji z kontrolerem SSD1289 wykorzystuje się interfejs równoległy typu (Intel) 8080 w którym transmisja odbywa się asynchronicznie i który posiada następujące linie sterujące/danych:

  • linia wyboru chipu – CS,
  • linia wyboru rejestru/pamięci RAM – RS,
  • linia wyboru trybu zapisu – nWS,
  • linia wyboru trybu odczytu – nRD,
  • linia sygnału zerującego – nRESET,
  • 16-bitowa szyna danych – D0:D15.

Do poprawnej pracy wyświetlacza oprócz zasilania podawanego na wejścia +5 V <–> GND wymagane jest jeszcze włączenie podświetlenia LED: BLVDD(+5 V) <–> BLGND(GND). Brak podświetlenia uniemożliwia zobaczenie jakichkolwiek efektów zapisu do pamięci GDDRAM (Graphics Display Data RAM). Komunikacja z kontrolerem wyświetlacza odbywa się za pośrednictwem kontrolera FSMC (Flexible Static Memory Controller) przeznaczonym do zapisu/odczytu do/z zewnętrznych pamięci takich jak pamięć SRAM lub FLASH, a także do obsługi wyświetlaczy z interfejsem równoległym zgodnym ze standardem 6800 lub i8080.

Rys. 2. Podłączenie wyświetlacza do FSMC

Rys. 2. Podłączenie wyświetlacza do FSMC

 

Komunikacja z komputerem przez USB

Gotowy projekt obsługi komunikacji z wykorzystaniem portu USB został skopiowany z pliku archiwalnego o nazwie STM32F105/7, STM32F2 and STM32F4 USB on-the-go Host and device library (wersja 2.1.0), który jest dostępny na stronie producenta danego mikrokontrolera w zakładce Design support -> Firmware. Jest to projekt urządzenia realizującego funkcję wirtualnego portu COM (znajduje się w katalogu Project -> USB_Device_Examples -> VCP). Część projektu została zmodyfikowana na potrzeby komunikacji z prostą aplikacją PC i zostały dołączone pliki obsługi wyświetlacza LCD minimalnie zmodyfikowane do pracy z kontrolerem SSD1289 (również dostępne w powyższym pliku archiwalnym).

Komunikacja między aplikacją PC, a układem ZL41ARM sprowadza się do zapisu/odczytu rejestrów/zmiennych sterownika kamery, a funkcje które to umożliwiają po stronie mikrokontrolera znajdują się w pliku usbd_cdc_vcp.c:

Funkcja VCP_DataRx() jest wywoływana automatycznie za każdym razem jak tylko zostały odebrane nowe dane z portu USB komputera i wykonywane jest w niej przetworzenie rodzaju komendy (zapis/odczyt, rejestr/zmienna) oraz jej argumentów (adres, dane). Natomiast funkcja VCP_DataTx() jest wywoływana jawnie w celu przekopiowania danych do endpointa IN urządzenia, w wyniku czego zostaną one wysłane do komputera.

 

Do pobrania

O autorze