<< Zpět

 

  Česky: , English:

DispHSTX

Driver DVI (HDMI) a VGA displeje pro Pico2 RP2350, s užitím HSTX periferie

verze 1.01, březen 2025

(c) Miroslav Němeček

https://github.com/Panda381/DispHSTX

Manuál k DispHSTX v PDF

 

Základní popis
Licence
Schéma zapojení
Soubory a kompilace
Dělená obrazovka
Test
Odkazy
Historie verzí

Základní popis

DispHSTX je ovladač pro mikrokontrolér Pico2 RP2350, v režimu ARMv8 i RISC-V Hazard3, umožňující generovat DVI (HDMI) a VGA videosignál pomocí periferie HSTX. Podporuje 40 různých obrazových formátů - 9 režimů pixelové grafiky, 2 textové režimy, atributovou kompresi, kompresi RLE a HSTX. Pro 8 základních grafických režimů jsou k dispozici funkce pro kreslení geometrických tvarů, obrázků a textů. Kreslící knihovna podporuje back buffer - aktualizuje hranice označující modifikovanou oblast. Při nedostatku paměti lze back buffer použít v režimu pruhů. Různé grafické obrazové formáty lze kombinovat na jedné obrazovce dělením obrazovky na pruhy a sloty. V obou režimech, DVI (HDMI) i VGA, je možné barevné rozlišení až 16 bitů na pixel. Ačkoli v režimu VGA je výstup pouze přes 6bitový převodník RGB, vyššího barevného rozlišení je dosaženo pomocí pulzní modulace PPM (Pulse Pattern Modulation), zobrazení se vizuálně blíží 15bitovému displeji. Časování generovaného videosignálu je omezeno pouze možnostmi přetaktování použitého mikrokontroléru. Obvykle je možné dosáhnout rozlišení až 1440x600 pixelů.

DispHSTX je určen především pro knihovnu PicoLibSDK, ale je připraveno i rozhraní pro originální knihovnu Raspberry PicoSDK.

Licence

Zdrojový kód ovladače DispHSTX je zcela volně k použití pro jakýkoli účel, včetně komerčního využití. Je možné používat a upravovat celý zdrojový kód ovladače nebo jeho části bez omezení.

Schéma zapojení

Konektory DVI (HDMI) a VGA jsou připojeny ke stejným pinům procesoru, GPIO 12 až GPIO 19. Výběr pinů 12 až 19 je určen procesorem a nelze jej změnit. V konfiguraci ovladače jsou 3 možnosti pořadí pinů pro výstup DVI (HDMI), ale po úpravě kódu lze zvolit jakékoli jiné pořadí pinů. Doporučuje se používat defaultní konfiguraci 0 (viz schéma), která vychází ze zapojení populárního Pico DVI socketu. Podobně je možné zvolit libovolné pořadí pinů pro konektor VGA, ale doporučuje se zachovat pořadí použité ve výše uvedeném schématu, aby byl umožněn výstup signálu VGA z řadiče PIO, který vyžaduje zachování pořadí pinů.

Rezistory 400 a 800 ohmů použité pro výstup VGA by měly být použity v toleranci 1 %. V případě potřeby lze použít i bližší hodnoty, např. 390 a 820 ohmů, ale u vícebarevných režimů (12 až 16 bitů na pixel) může dojít ke zhoršení plynulosti přechodu gradientu.

Na výstupech RGB konektoru VGA se používají kondenzátory 220pF pro filtraci pulzní modulace PPM (Pulse Pattern Modulation). U režimů videa s nízkou systémovou frekvencí může být přínosem zvýšit hodnotu kondenzátorů, aby se snížilo případné zrnění obrazu. U video režimů s vysokou systémovou frekvencí může být vhodnější zvýšit hodnotu kondenzátorů, aby se zvýšila ostrost obrazu.

Pro přepínač volby režimu VGA/DVI lze použít libovolný pin GPIO, případně není nutné přepínač používat. Pokud se přepínač nepoužije nebo je ve střední poloze, lze k výběru režimu použít automatickou detekci připojení monitoru VGA.

Soubory a kompilace

Driver DispHSTX je primárně připraven pro použití s knihovnou PicoLibSDK. Hlavní soubory driveru naleznete ve složce _display/disphstx. Soubory disphstx_dvi.* poskytují podporu pro výstup DVI (HDMI). Soubory disphstx_vga.* slouží k obsluze výstupu VGA. Soubory disphstx_vmode_time.* obsahují definice časování video režimu - můžete je použít k definici vlastního video režimu. Soubory disphstx_vmode_format.* obsahují definice grafických formátů. Vykreslování grafických formátů se provádí v souborech *_render.* v kódech C - tyto funkce slouží pouze jako odkaz na správné funkce kódu. Vlastní vykreslování se provádí pomocí funkcí optimalizovaných assemblerem v souborech *.S.

Soubor _config.h obsahuje výchozí definice nastavení parametrů ovladače. Pokud potřebujete změnit konfigurační přepínač, zadejte jej v souboru config.h ve složce projektu. Pokud se v souboru config.h projektu nenacházejí, použijí se výchozí přepínače. Hlavní přepínač, který je třeba do souboru config.h zahrnout, je "#define USE_DISPHSTX 1". Tím zajistíte, že budou zkompilovány a zpřístupněny funkce ovladače DispHSTX. Druhý důležitý přepínač, který můžete potřebovat zahrnout, je "#define USE_DRAWCAN 1". Ten zajistí přístup k funkcím kreslící knihovny DrawCan. Další informace o konfiguračních přepínačích projektu najdete v kapitole „Konfigurace“.

Ovladač HSTX je ve výchozím nastavení spuštěn ve druhém jádře procesoru. To je vyžadováno tím, že provoz ovladače nesmí být ničím rušen, aby nedocházelo k vypadávání generovaného signálu. Z tohoto důvodu nesmí být ve druhém jádru procesoru spuštěna žádná jiná přerušení než to z ovladače HSTX. Všechny časově náročné operace musí být vykonávány z paměti RAM, nikoliv z paměti Flash - linker musí pro tento účel poskytnout v paměti RAM sekci "time_critical".

Funkce ovladače jsou k dispozici jak pro režim procesoru ARMv8, tak pro režim RISC-V Hazard3. Je však třeba vzít v úvahu, že kód pro režim RISC-V je o něco pomalejší (asi o 15 %), a tak ovladač HSTX v režimu RISC-V může procesor zatěžovat o něco více než v režimu ARM.

Ovladač v základním plném nastavení může zabrat poměrně hodně paměti RAM pro funkce a pomocné buffery (asi 50 KB). Paměťové nároky můžete snížit omezením funkcí - vypnutím režimu VGA, snížením maximálního rozlišení nebo vypnutím nepoužívaných obrazových formátů. Podrobnosti naleznete v kapitole "Konfigurace".

Dělená obrazovka

Driver DispHSTX umožňuje dělení obrazovky na více částí. Vertikálně lze obraz rozdělit na pruhy (strips). Každý pruh lze v horizontálním směru rozdělit na sloty. Každý slot může obsahovat jiný obrazový formát.

V určitých případech, pokud se např. liší formát generovaných dat slotu, může být nutné mezi sloty vložit oddělovací mezeru, která zajistí potřebný čas k předefinování registrů řadiče.

Ukázka grafiky s knihovny DrawCan:

Porovnání stupňů atributové komprese (měřítko zobrazení 100%):

Test

Zde je připraveno několik testovacích programů, které zobrazí testovací obrazec na DVI nebo VGA výstup přes HSTX interface RP2350. Je použito implicitní zapojení pinů pro DVI Sock nebo pro VGA, podle schématu výše. Výstup DVI nebo VGA se vybírá volbou programu - konfigurační přepínač ani jiný hardware není potřebný. Jsou připraveny videomódy 640x480, 800x600, 1024x768, 1280x720 a 1440x600. Zdrojové soubory programů jsou k dispozici v knihovně PicoLibSDK, zařízení Pico2.

Download programů

Odkazy

Download knihovny DispHSTX (zdrojové kódy a ukázkové programy)

Download manuálu ke knihovně DispHSTX (formáty DOC, ODT, PDF)

Manuál k DispHSTX v PDF

DispHSTX na Github: https://github.com/Panda381/DispHSTX

DispHSTX demo příklad v PicoLibSDK: https://github.com/Panda381/PicoLibSDK/tree/main/Pico/DispHSTX/HSTXDemo

Historie verzí

Miroslav Němeček

<< Zpět