STM32Cube konfiguriert LTDC für die Ansteuerung von RGB-LCD

Verwenden Sie das Entwicklungsboard punctual Atom Polaris STM32H750, um das 4,3-Zoll-RGB-LCD von punctual Atom anzusteuern.

1. Einführung von LTDC

LTDC gehört zu DPI (Display-Pixel-Schnittstelle, Display-Pixel-Schnittstelle, auch RGB-Schnittstelle genannt), die für MCU zum Ansteuern von TFT-Bildschirmen verwendet werden kann. Gleichzeitig ist es im Allgemeinen mit DMA2D für die Grafikbeschleunigung der Anzeige ausgestattet.

STM32H750 unterstützt maximal RGB888 (1600 W Farbe), die Signalleitung ist wie folgt:

RGB888 ist abwärtskompatibel mit RGB666 und RGB565.

Der RGB-Bildschirm verfügt im Allgemeinen über zwei Antriebsmodi: DE-Modus und HV-Modus. Der DE-Modus verwendet das DE-Signal, um gültige Daten zu bestimmen (wenn DE hoch/niedrig ist, sind die Daten gültig), während der HV-Modus Zeilensynchronisation und Feldsynchronisation erfordert, um die gescannte Zeile und Spalte anzuzeigen.

2. Beschreibung von STM32 LTDC

Der LTDC von STM32H750 weist die folgenden Eigenschaften auf:

⚫ 24-Bit-RGB-Parallelpixelausgabe; 8-Bit-Daten pro Pixel (RGB888)

⚫ 2 Anzeigeebenen mit dedizierten FIFOs (FIFO-Tiefe 64x32 Bit)

⚫ Unterstützt Farbnachschlagetabellen (CLUT), bis zu 256 Farben pro Ebene (256 x 24 Bit).

⚫ Programmierbares Timing für verschiedene Anzeigefelder

⚫ Programmierbare Hintergrundfarbe

⚫ Programmierbare Polarität der HSync-, VSync- und Data Enable (DE)-Signale

⚫ Bis zu 8 Farbformate pro Ebene zur Auswahl: ARGB8888, RGB888, RGB565, ARGB1555, ARGB4444, L8 (8-Bit-Luminanz oder CLUT), AL44 (4-Bit-Alpha + 4-Bit-Luminanz) und AL88 (8-Bit). Alpha+ 8

Bit-Luminanz)

⚫ Die niedrigen Bits jedes Kanals verwenden eine pseudozufällige Jitter-Ausgabe (die Jitter-Breite von Rot, Grün und Blau beträgt 2 Bit).

⚫ Flexible Überblendung zwischen zwei Ebenen mithilfe von Alphawerten (pro Pixel oder konstant)

⚫ Chroma-Key (transparente Farbe)

⚫ Programmierbare Fensterposition und -größe

⚫ Unterstützt TFT-Farbdisplays (Thin Film Transistor).

⚫ Die AHB-Master-Schnittstelle unterstützt Bursts mit 16 Wörtern

⚫ Bis zu 4 programmierbare Interrupt-Ereignisse

veranschaulichen:

ARGB8888 (4B): 8-Bit Ein Wert (Alpha) wird auf Basis von RGB888 hinzugefügt, 0x00 bedeutet vollständig transparent, 0xFF bedeutet undurchsichtig;

ARGB1555 (2B): Ein Bit wird auf Basis von RGB565 abgeschnitten und als A-Wert verwendet. 0 bedeutet vollständig transparent, 1 bedeutet undurchsichtig;

Der LTDC von STM32H750 besteht aus insgesamt drei Schichten: der Hintergrundschicht, der ersten Schicht und der zweiten Schicht. Unter diesen kann die Hintergrundschicht nur einfarbig (d. h. monochrom) sein, und die erste Schicht und die zweite Schicht kann zum Anzeigen von Informationen verwendet werden. Die beiden Schichten verfügen jeweils über einen FIFO, und es müssen zwei Videospeicherpuffer geöffnet werden, um den anzuzeigenden Inhalt auf der ersten und der zweiten Schicht zu speichern. LTDC ruft die Pufferdaten in den FIFO ab Die Mischeinheit mischt die drei Schichten für die Anzeige. Die Beziehung ist wie folgt:

Aus der Abbildung ist ersichtlich, dass sich die zweite Ebene oben und die Hintergrundebene unten befindet. Die Mischeinheit mischt zuerst die erste Ebene mit der Hintergrundebene und dann das gemischte Farbergebnis der zweiten Ebene mit der ersten Schicht und der zweiten Schicht. Mischen Sie es erneut und senden Sie es nach Abschluss des Mischens an das LCD-Display.

STM32 LTDC verfügt über eine AXI-Schnittstelle zum Anschließen eines externen SDRAM zum schnellen Lesen und Speichern von Videospeicherdaten. Berechnung des Videospeichers: Wenn Sie ein 4,3-Zoll-LCD mit 800 * 480 verwenden, nehmen Sie RGB565 (16 Bit) als Beispiel, ein Pixel ist 16 Bit (2 Byte) und ein einschichtiger Videospeicherpuffer hat 800 * 480 * 2 = 768000 Byte = 750 KB; Nehmen Sie RGB888 (24 Bit) als Beispiel, ein Pixel ist 24 Bit (3 Byte) und es gibt keine 24-Bit-Definition im Mikrocontroller, es können nur 32 Bit (4 Byte) verwendet werden, und das Einzel- Der Layer-Videospeicherpuffer hat 800 * 480 * 4 = 1536000 Byte = 1500 KB

3. Wichtige Timing-Parameter von LTDC

Unter den oben genannten Parametern wird HSW auch als HPW bezeichnet, und VSW wird auch als VPW bezeichnet. Einzelheiten finden Sie in der Handbuchbeschreibung für LCD.

In diesem Artikel wird der 4,3-Zoll-RGB-Bildschirm von Punctual Atom verwendet. Die korrekten LTDC-Arbeitsparameter lauten wie folgt:

Wie aus der obigen Abbildung ersichtlich ist, beträgt die maximale Betriebsfrequenz des Bildschirmtakts 50 MHz und die herkömmliche Verwendung 30 MHz. LCD-Bildwiederholfrequenz = Betriebsfrequenz des LTDC-Takts / ((HSW + HBP + HFP -1) * (VSW + VBP +VFP -1)) , 30 MHz liegt nahe an einer Bildwiederholfrequenz von 60 Hz.

HSW(HPW) = 48 Pixel

HBP = 88 Pixel

HFP = 40 Pixel

VSW(VPW) = 3 Zeilen

VBP = 32 Zeilen

VFP = 13 Zeilen

Aktive Breite = 800 Pixel

Aktive Höhe = 480 Zeilen

4. Codebeispiel

1. Hardware-Umgebung: punktuelles Atom Polaris STM32H750 Entwicklungsboard, punktuelles Atom 4,3-Zoll-RGB-LCD

2. Hardware-Verbindungsdiagramm:

3. Technische Konfiguration

Dieses Projekt verwendet LTDC + SDRAM + DMA2D-Peripheriegeräte. (Informationen zur Verwendung von SDRAM finden Sie im SDRAM-Treibercode.)

PB5 ist der Pin für die LCD-Hintergrundbeleuchtung. Er muss im Code konfiguriert und aktiviert werden, sonst ist das LCD immer schwarz! ! !

Achten Sie darauf, die Pin-Flip-Geschwindigkeit von LTDC auf „Sehr hoch“ zu ändern.

Die Arbeitsparameter von LTDC sind oben aufgeführt, füllen Sie sie einfach aus. Wenn Sie hier gleichzeitig eine bestimmte Hintergrundfarbe benötigen, müssen Sie die Parameter Rot, Grün und Blau ändern (Bereich 0-255). Wenn Sie beispielsweise Rot = 255 einstellen, wird der Bildschirm danach rot Der LTDC ist eingeschaltet und läuft erfolgreich.

Als nächstes legen Sie die Ebene fest, derzeit ist nur eine Ebene festgelegt, der Anzeigebereich liegt zwischen (0, 0) und (800, 480), die Farbe ist RGB565, die gemischte Transparenz der ersten Ebene und des Hintergrunds beträgt 255 (undurchsichtig) und bei Gleichzeitig ist die feste Transparenz gemischt, die Standardfarbtransparenz der ersten Ebene ist 0 (im Grunde nutzlos, sie wird durch die gemischte Transparenz beeinflusst), die RGB-Standardfarbe der ersten Ebene ist reines Blau und die erste Adresse der Der Videospeicher beträgt 0xC0000000 (da die Zuordnungsadresse der Peripherieschnittstelle SDRAM 1 0xC0000000 ist) und der Videospeicherplatz beträgt 800 * 480 Pixel (hier ist die Einheit Pixel, die tatsächliche Größe finden Sie in der Berechnungsmethode oben).

Öffnen Sie den LTDC-Interrupt nicht.

DMA2D empfiehlt die Verwendung von Registern als punktuelle Atome, da es in LTDC gleichzeitig zwei neue Formen von Memory to Memory (Speicher zu Speicher) und Register to Memory (Register zu Speicher) gibt. Schalten Sie also einfach DMA2D ein.

Es ist wichtig zu beachten, dass der DMA2D-Interrupt hier konfiguriert werden muss, da er sonst auf den Abschluss der Übertragung wartet, wenn DMA2D zum Übertragen von Daten verwendet wird.

Die Uhrkonfiguration ist in der Abbildung dargestellt.

Klicken Sie nach Abschluss der Konfiguration auf „Generieren“.

4. Code-Ergänzung

SDRAM muss Initialisierungscode hinzufügen. (Informationen zur Verwendung von SDRAM finden Sie im SDRAM-Treibercode.)

Fügen Sie in der Datei main.c nach der Funktion MX_LTDC_Init(); Folgendes hinzu:

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_SET); //Schalten Sie die Hintergrundbeleuchtung ein

Solange das SDRAM-Laufwerk erfolgreich ist, klicken Sie auf „Herunterladen“. Das LCD wird blau und zeigt an, dass das LTDC-Laufwerk erfolgreich ist. (Das Blau wird aus der Standardfarbkonfiguration der ersten Ebene darüber erhalten, und durch Änderung hier können unterschiedliche Anzeigefarben erhalten werden.)

Supongo que te gusta

Origin blog.csdn.net/weixin_39457767/article/details/131898271
Recomendado
Clasificación