Produkty Novinky Články Návody Kontakty

SAM9260 a grafický TFT displej - 3. schéma zapojení

V prvních dvou dílech jsem se zabýval výběrem a nákupem TFT displeje u nás v České republice. Jak si možná pamatujete, nakonec jsem kvůli příznivé ceně koupil TFT displeje hned dva. Jeden s integrovaným řadičem displeje SSD1963 s označením INT070ATFT-TS od firmy Displaytech a druhý, označený jako AM-800480R3TMQW-TB2H/R, bez řadiče displeje, vyráběný firmou AMPIRE. Oba TFT displeje se vešly s cenou pod 2.000,-Kč s DPH.
Rozhodl jsem se nejprve zprovoznit pod Linuxem TFT displej Displaytech INT070ATFT-TS s integrovaným řadičem displeje SSD1963 spolu s naším procesorovým modulem SAM9260. Měl jsem za to, že pak bude snazší rozchodit i náš prototyp samostatného modulu s řadičem displeje SSD1963. Navíc mě lákal i integrovaný řadič touch panelu MAX11802. TFT displej AMPIRE AM-800480R3TMQW-TB2H/R přijde na řadu někdy později.
Pro přehlednost stručně shrnu své vybavení: základní deska BaseBoard (bastlířův nezbytný základ:)), v ní procesorový modul SAM9260, který byl už po předchozích pokusech zapojený, oživený a bootu-do-mé-vlastní-distribuce-Linuxu-schopný a to nejlepší na konec - TFT displej INT070ATFT-TS.
Základní a zcela nehamletovská otázka zněla: ”Jak to všechno propojit?”. Začnu napájením. Z datasheetu TFT displeje (měl jsem verzi 1.1) jsem vyčetl, že napájení potřebuje TFT displej hned tři: 3.3 V, 1,2 V a 5 V. I když těch 5 V bylo zapeklité najít. V popisu rozhraní TFT panelu tato napájecí hladina zmíněna nebyla, stejně jako v tabulce s maximálními odběry na jednotlivých napěťových hladinách. Pouze na výkresu s rozměry TFT displeje byl v popisu konektorů vývod č. 38 označen jako VCC (5V). I požádal jsem pány z Displaytechu o doporučené zapojení a hle - 5 V musí být přivedeno na vývod č. 38 neb napájí měnič podsvícení!
Jako majitel základní desky BaseBoard jsem měl situaci lehkou - hladiny 3.3 V a 5 V jsou na ní dostupné v potřebné ”síle” (rozumněj v možnosti proudového zatížení). Hladinu 1.2 V jsem na pájecím ”bastl” poli základní desky vyrobil snadno s pomocí lineárního regulátoru LE12CZ koupeného v GME, 1 kusu blokovacího kondenzátoru 100 nF a jednoho elektrolytu 10 uF/16 V na výstupu regulátoru.
Blokové schéma řadiče displeje SSD1963
Tak, napájení mám z krku a teď jak propojit modul SAM9260 a TFT displej, resp. jeho integrovaný řadič displeje SSD1963 (viz Blokové schéma obvodu SSD1963), aby si oba prvky mohly vyměňovat obrazová data? O co jde? Mikrokontrolér je zdrojem obrazových dat vytvářených např. pomocí nějaké grafické knihovny nebo grafické okenní nadstavby nad použitým OS. V těchto obrazových datech je už obsažena informace o barvě každého bodu na TFT panelu (zobrazovacím elementu), tzv. pixelu. Tato data je třeba co nejrychleji přenést do řadiče displeje (v našem případě obvodu SSD1963), resp. do jeho vnitřní vyrovnávací video paměti, tzv. framebufferu. Odtud si je řadič displeje bere a několikrát za sekundu je znovu a znovu vykresluje na TFT panel (zobrazovací element). TFT panel totiž funguje na principu náboje a velmi rychle ztrácí informaci o barvě jednotlivých pixelů. Proto se tato informace obnovuje min. 60x za sekundu.
Konec teorie a zpět do praxe. Podle datasheetu (nejde přímo stáhnout, musíte se registrovat) nabízí řadič SSD1963 pro komunikaci s mikrokontrolérem až 24bitovou datovou sběrnici plus čtyři řídící signály. Bohužel u Displaytechu si řekli, že budou šetřit a na vývodech TFT displeje INT070ATFT-TS je dostupných jen osmnáct datových vodičů. Což mě při pohledu do tabulky SSD1963 - Pixel Data Format (viz obrázek) nepotěšilo (originál tabulky je na stránce 17 v datasheetu verze 1.3 řadiče SSD1963 uveden pod názvem Table 7-1 Pixel Data Format).
SSD1963 - Pixel Data Format
18bitová datová sběrnice totiž nutně vede buď k redukci barevné hloubky z původních 24 bitů (= 16,7 miliónů barev), které mimochodem zvládá i osazený TFT panel SDT070ATFT-TS, na 18bitovou barevnou hloubku (= 262 tisíc barev), což je doména levných TFT displejů, nebo ke snížení přenosové rychlosti, kdy se bude 24bitová barevná informace přenášet na několikrát.
Po chvíli googlování a mudrování jsem variantu přenosu 24bitové informace ve více přenosových cyklech zamítnul, protože je z mého pohledu větším zlem. Přenosová rychlost je totiž kritická pro plynulost zobrazení při změnách obrazu - tzv. snímková frekvence neboli fps. Menší rozsah barev je pro běžné činnosti vyhovující a bude mě trápit rozhodně méně, než případně trhané vykreslování. Nakonec jsem se rozhodl dokonce jen pro 16bitovou sběrnici a barevný formát RGB 565. Když už jít dolů s kvalitou, tak mezi 18 bity (RGB 666) barevné informace a 16 bity (RGB 565) není viditelný rozdíl a aspoň ušetřím dva I/O piny.
Schéma zapojení
Výsledné zapojení TFT displeje INT070ATFT-TS k modulu SAM9260 je patrné ze schématu. Vrchních šestnáct I/O pinů brány PIOC využívám pro datovou sběrnici spolu se čtyřmi piny PC8PC11 pro řídící signály /CS, /RS, E(RD), R/W(/WR). Řadič touch panelu MAX11802 jsem připojil na SPI rozhraní SPI1 a SPI chipselect SPI1_NPCS0 (piny PB0PB3). Signál TP_IRQ pro indikaci události (stisk, inicializace) na touch panelu jsem zapojil na pin PC15. Ostatní vývody TFT displeje jsem nechal nezapojené, včetně nevyužitých signálů datové sběrnice, které řadič SSD1963 sám stáhne do log. 0. Signál /RESET jsem připojil na jednoduchý RC článek a tlačítko SW dostupné na základní desce. Zatím mi stačilo manuální ovládání resetu.
Pozn.: Schématická značka TFT displeje je kreslena z pohledu 40pinového konektoru, kterým je ukončen plochý kabel připájený k vývodům na desce plošných spojů TFT displeje.
Jak jsem výsledné zapojení realizoval a oživil, se dozvíte přístě.

Seznam dílů seriálu SAM9260 a grafický TFT displej