SAM9260 a grafický TFT displej - 1. výběr displeje
Zadání znělo jasně: ”Vyber, kup a zprovozni pod Linuxem nějaký větší dotykový TFT LCD displej na našem procesorovém modulu SAM9260. Jak to vše dopadlo se dozvíte v několika dalších dílech tohoto seriálu.
První část úkolu ”vyber a kup” se zdála být jednoduchá, prostě se mrknu na stránky Farnellu (na GME či GES se nemá smysl dívat, nemají nic), vyberu nějaký druhý, třetí nejlevnější TFT displej a bude vymalováno. Opak byl pravdou. Netušil jsem, jak široký je sortiment TFT displejů, kolik různých rozhraní podporují apod. Rychle mi došlo, že si nejprve musím ujasnit, co přesně chci a pak teprve vyrazit na nákupy.
Tady si dovolím menší vsuvku. V oblasti TFT displejů panuje značný zmatek ohledně pojmů. Pod pojmem TFT panel budu vždy myslet samotný zobrazovací element - po staru obrazovku. Pojem TFT LCD modul (angl. TFT LCD display module) bude označovat TFT panel s něčím navíc - např. s invertorem podsvícení, řadičem dotykové vrstvy apod. V dalším textu budu pod pojmem TFT displej (je to prostě kratší a zažitý termín) myslet TFT LCD modul. Uff. A mám to za sebou.
Moje situace byla navíc trochu specifická tím, že jsem měl k dispozici prototyp modulu s řadičem displeje SSD1963. To je obvod, který se vkládá mezi samotný TFT displej a samotný mikrokontrolér, který je zdrojem grafických dat. Tento obvod na jedné straně poskytuje rozhraní vhodné pro mikrokontroléry, na straně druhé má rozhraní pro připojení TFT displeje (viz obrázek). Navíc obsahuje i framebuffer, což je paměť typu SRAM, do které se ukládají přijatá data z mikrokontroléru a a odkud se ve vhodný moment posílají do TFT displeje. Framebuffer vlastně obsahuje kompletní grafická data pro každý pixel displeje, včetně určení barvy daného pixelu.
Výhoda použití řadiče displeje je nasnadě. Zjednoduší se nám zapojení, ale především samotná softwarová obsluha TFT displeje, protože se můžeme soustředit na optimalizaci toku dat do řadiče displeje (resp. do jeho framebufferu) a zcela vypustit řízení procesu zobrazování na TFT displeje. Přesto lze na internetu najít řadu řešení, kdy je TFT displej připojen přímo na mikrokontrolér.
Zpět k výběru TFT displeje. Fakt, že mám k dispozici modul s řadičem SSD1963, vylučoval koupi TFT displeje s integrovaným řadičem displeje. Proč platit za něco, co už mám, že. Zároveň použití obvodu SSD1963 předurčovalo vlastnosti TFT displeje. Řadičem podporované max. rozlišení displeje je 864 x 480 s až 24bitovou barevnou hloubkou. Toto omezení je dáno velikostí framebufferu v SSD1963 (1215kBytů = 864 x 480 x 24 / 8). Nejbližší nižší dostupné rozlišení je 800 x 480. Jako rozumná uhlopříčka s tímto rozlišením se mi jevilo 7 palců. V datasheetu obvodu SSD1963 jsem se dočetl, že podporované rozhraní pro připojení TFT displejů je 18/24bitové digitální RGB rozhraní a 8bitové sériové RGB rozhraní. Aha, takže na TFT displeje s rozhraním LVDS apod. mohu zapomenout. Dále jsem požadoval, aby displej obsahoval dotykovou vrstvu, tzv. touch panel nebo také touch screen. Cenově dostupnější jsou touch panely odporového typu. Kapacitní typy jsou dražší (musí být napařeny na skle) a hůře se shání. Po krátkém průzkumu jsem zjistil, že také není vůbec od věci, aby TFT displej obsahoval i tzv. LED driver, což není nic jiného než step-up (zvyšuje napětí) DC-DC měnič zapojený jako proudový zdroj cca 9,9 V pro napájení LEDkového podsvícení. Aspoň si tak ušetřím bastlení zdroje někde bokem a bude mi stačit běžných 5 V pro napájení TFT LCD modulu.
Souhrn požadovaných vlastností TFT displeje:
- barevný TFT panel s LEDkovým podsvícením
- uhlopříčka 7”
- rozlišení 800 x 480 pixelů
- 18bitová barevná hloubka (262 tisíc barev) nebo 24bitová hloubka (16,7 miliónů barev)
- rozhraní 18/24 bit digital RGB případně 8bit serial RGB
- s dotykovou vrstvou (tzv. touch panel nebo touch screen) odporového (rezistivního) typu
- ideálně s LED driverem napájeným 5 V
- bez integrovaného řadiče displeje SSD1963 apod.
Toť pro dnešek vše. Už vím, co potřebuji, takže přístě se vyráží na nákupy. Můžu už teď prozradit, že za TFT displej rozhodně celou výplatu neutratíme.