Home Componentes Treiberlose Grafiksteuerung

Treiberlose Grafiksteuerung

So richten Sie einen virtuellen Controller ein, um beim Rendern von Grafiken Kosten und CPU-Zeit zu sparen

Eine der häufigsten Methoden zum Erstellen von Anwendungen mit eingebetteten Grafiken ist das Hinzufügen eines internen oder externen Grafikcontrollers. Das Problem ist, dass es Kosten hinzufügt, Layouts unnötig komplex machen kann und in den meisten Fällen für eine einfache GUI diese Treiber nicht benötigt werden.

Eine Alternative besteht darin, die Mikrocontroller-Peripherie zu verwenden, um einen virtuellen Grafikcontroller zu erhalten, der Grafiken rendert, ohne viel CPU-Zeit zu benötigen, die tatsächlich weniger als 5 % betragen kann.

Im Allgemeinen muss ein Grafiksystem ohne Controller einen Rahmen von Pixelinformationen mit einer bestimmten Rate an ein Anzeigeglas senden. Diese Bildwiederholfrequenz beträgt normalerweise 60 Hz. Dazu muss das System ständig Rasterdaten an das LCD-Display senden. Von Anfang an scheint es, dass diese Aufgabe die meiste CPU-Zeit auf einem Mikrocontroller beanspruchen wird. Dies ist jedoch bei Mikrocontrollern wie der PIC32-Familie von Microchip nicht der Fall, die ein Peripheriegerät mit direktem Speicherzugriff (DMA) für die Datenübertragung integrieren. Mit einem DMA, der die Pixeldaten überträgt, werden weniger als 5 % der CPU-Zeit benötigt, um einen virtuellen Grafikcontroller zu erhalten.

Das DMA-Peripheriegerät kann Daten ohne Eingriff der CPU von einem Punkt zum anderen übertragen. Bei einem graphischen Verfahren ohne Controller kann der DMA so eingestellt werden, dass er eine Zeile von Rahmendaten durch den Parallel Master Port (PMP) überträgt. Jede Linie besteht aus vielen Punkten. DMA würde während einer Übertragung einen Teil des Rahmenpuffers senden. Eine PMP- oder Timing-Interrupt-Anforderung löst dann die nächste DMA-Übertragung aus, bis eine Zeile übertragen wurde. Bei Geräten mit nicht-persistenten Interrupts kann ein Timer als DMA-Triggerquelle verwendet werden.

Für Geräte mit externer Busschnittstelle (EBI) kann dieses Modul als Pixeltaktquelle verwendet werden. Eine solche Taktquelle kann höhere Pixeltaktraten erreichen als das PMP-Peripheriegerät, obwohl der EBI die gleichen Pinbelegungen wie der PMP hat.

Während der Datenübertragung gibt der PMP oder EBI ein Lese- oder Schreibsignal aus, nachdem jedes Pixel übertragen wurde. Die Lese- und Schreibsignale wirken als Pixeltakt für den Anzeigekristall. Nachdem jede Pixeldatenzeile übertragen wurde, unterbricht DMA die CPU und bestimmte Taktsignale wie HSYNC, VSYNC und DEN (Datenaktivierungsleitung), die zum Aktualisieren von LCD-Anzeigen erforderlich sind. Dies wird ständig wiederholt, bis ein vollständiger Plot gezeichnet ist. Das Raster wird in einem flüchtigen Speicher gespeichert, sodass das Bild dynamisch sein kann.

In dieser Anordnung wird SRAM-Speicher verwendet, und die Konfiguration ist die Grundlage für ein steuerungsloses Grafiksystem. Das System kann für die Verwendung von internem oder externem SRAM konfiguriert werden, wie in den Abbildungen 1 und 2 gezeigt.

TFT-LCD-Displays 

Obwohl die steuerungslose Grafikmethode für die Arbeit mit TFT-LCD-Displays entwickelt wurde, kann sie mit geringfügigen Änderungen auch mit CSTN- oder MSTN-Quarzen funktionieren.

Die Datenzeilen bestehen aus Informationen über die Farbe des Pixels. LCD-Displays haben typischerweise 8 bis 24 Zeilen Farbdaten, abhängig von der Farbtiefe des LCD. Diese Datenleitungen versorgen das LCD mit den rohen Farbdaten für jedes Pixel.

Die HSYNC-, VSYNC-, DEN- und PCLK-Taktsignale synchronisieren die Grafikpixel- und Rasterdaten und das LCD. Sync-Zeilen teilen dem LCD mit, ob sich die Daten am Anfang oder Ende einer Zeile (HSYNC) oder eines Rahmens (VSYNC) befinden. Die DEN ermöglicht es dem LCD zu wissen, wann gültige Pixeldaten an das LCD und einige TFT-LCD-Anzeigen gesendet werden, aufgrund der Zeit, die erforderlich ist, um das LCD für die nächsten Pixelpositionen zu konfigurieren.

Die Daten werden Zeile für Zeile gesendet, bis der gesamte Plot gezeichnet ist. Das PCLK-Signal ist die Taktquelle für das gesamte System. Ein PCLK-Taktimpuls aktualisiert die LCD.

Die verbleibenden Taktleitungen müssen für eine ordnungsgemäße Bildausgabe mit dem Pixeltakt synchronisiert werden. LCDs, die keine HSYNC- und VSYNC-Signale enthalten, können auch mit der treiberlosen Grafikkonfiguration verwendet werden.

Die kostengünstige controllerlose PICtail Plus-Grafiktochterkarte (LCC-Grafikkarte) von Microchip wurde entwickelt, um diese Technik zu demonstrieren, und funktioniert mit vielen vorhandenen PIC32-Starterkits. Der LCC-Softwaretreiber kann bei der Synchronisation helfen, die von bestimmten zeitlichen Parametern benötigt wird, wie z. B. Impulsbreite, Vor- und Nachlauf des Impulses in horizontalen und vertikalen Impulsen. Sobald diese Werte in den LCC-Grafikcontroller kompiliert wurden, zeigt das LCD das Raster an.

Abb. 3 zeigt, was im PIC32-Mikrocontroller passiert, wenn ein Grafikframe an das Display gesendet wird. Der DMA- und PMP-Block zeigt an, dass die DMA- und PMP-Peripheriegeräte, die sich den Datenbus mit der CPU teilen, betriebsbereit sind.

Der CPU-Block gibt die Aufgaben an, die zum Rendern von Grafiken erforderlich sind. Die DMA Interrupt Service Routine (ISR) ist der einzige Code, der zusätzlich zur DMA- und PMP-Peripheriekonfiguration geschrieben werden muss, um einen Grafikrahmen an die Anzeige zu senden.

Rendern neuer Pixel

Das Rendern neuer Pixel im Framebuffer ist ebenso wichtig wie die Bildschirmaktualisierung. Dies wird von der CPU durchgeführt, die in den Anzeigepuffer schreibt. Wenn der Rahmen extern gespeichert wird, wird die DMA-Übertragung ausgesetzt, während der Rahmen aktualisiert wird. Dies ist notwendig, weil es nur ein PMP-Peripheriegerät gibt und es vom virtuellen Grafikcontroller oder der DMA-Übertragung gemeinsam genutzt wird. Diese Methode wirkt sich auf die Bildschirmaktualisierungsrate aus. Die Anzahl der Pixelaktualisierungen muss überwacht werden, um eine zu lange Änderung der Aktualisierungsrate zu vermeiden; andernfalls wird die Änderung vom menschlichen Auge wahrnehmbar sein. Dies erfolgt unter Verwendung eines variablen Pixelzählers, der in dem virtuellen Grafikcontroller enthalten ist, der bei jedem Pixelschreibvorgang aktualisiert und bei jedem DMA-Interrupt gelöscht wird.

Das EBI-Peripheriegerät ermöglicht es, die pro Rahmenaktualisierung erforderliche Hängezeit erheblich zu reduzieren. Wenn der EBI zum Schreiben verwendet wird, werden weniger Daten zum Speichern und Wiederherstellen benötigt, da die PMP-Register nicht zwischen Lese- und Schreibvorgängen geteilt werden. Außerdem ist das EBI-Modul ein effizienteres Peripheriegerät, wenn es mit einem externen SRAM-Speicher kommuniziert.

Software

Das interne SRAM-Speicherverfahren verwendet das PMP-Schreibsignal für den Pixeltakt. Dazu müssen die Steckerreihen eins und zwei der LCC-Grafikkarte konfiguriert werden. Bei diesem Setup sind alle Farben 8BPP und es wird kein externer SRAM verwendet. Das im Mikrocontroller eingebaute SRAM schreibt kontinuierlich seine Pixelwerte in den PMP.

Für 8BPP-Farben wird ein 332-RGB-Farbformat verwendet, das drei Farbwerte für Rot, drei für Grün und zwei für Blau hat. Dies ist ein gängiges Farbformat, da Rot eine Farbe ist, die für das menschliche Auge leichter erkennbar ist als Blau.

Das externe SRAM-Verfahren verwendet ein Lesesignal vom PMP für den Pixeltakt. Die Reihen zwei und drei der LCC-Grafikkarte müssen konfiguriert werden. In dieser Anordnung sind alle Farben 16 BPP und das externe SRAM enthält den Grafikrahmen, der kontinuierlich gelesen wird. Für eine 16BPP-Farbe wird ein 565-RGB-Format mit fünf Farbwerten für Rot, sechs für Grün und fünf für Blau verwendet.

Bei beiden Verfahren entsprechen bei Anschluss an ein LCD mit mehr als 16 Farbleitungen die unbenutzten Farbleitungen den höchstwertigen Bits des zuletzt verwendeten Farbbits. Dadurch wird sichergestellt, dass eine vollständige Farbskala von Weiß bis Schwarz erhalten werden kann.

Fazit

Dieser Artikel hat gezeigt, wie man ein kostengünstiges Grafiksystem ohne Controller mit Mikrocontroller-Peripherie implementiert, um einen virtuellen Grafikcontroller zu erstellen, der nur wenig CPU-Zeit benötigt.



Stichworte
Grafiktreiber