STM32MP1 - LTDCLCD-TFT ディスプレイコントローラ
1.0 版

こんにちは、STM32 LCD TFT ディスプレイコントローラのプレゼンテーションへようこそ。このプレゼンテーションでは、TFT ディスプレイとのインタフェースに使用する LTDC コントローラのすべての機能について説明します。

1

概要

2

• LCD TFT ディスプレイコントローラ• 柔軟に設定可能• 標準パラレル RGB インタフェース

アプリケーション側の利点• 柔軟性のあるプログラム可能なディスプレイパラメータ• 統合されたピクセル・フォーマットコンバータとブレンダ• オンチップメモリまたは外部メモリをフレームバッファとして使用可能

LCD-TFT は、液晶ディスプレイ-薄膜トランジスタ(Liquid CrystalDisplay-Thin Film Transistor)の略です。コントローラは柔軟に設定可能であり、標準のパラレル R G B インタフェースと接続します。
LCD TFT ディスプレイコントローラの利点には、柔軟性の高いプログラム可能なディスプレイパラメータ、統合ピクセル・フォーマッ
トコンバータ、ブレンダなどがあります。
LCD TFT ディスプレイコントローラ（LTDC）のフレームバッファは、パネルの解像度に応じて、オンチップメモリまたは外部メモリに配置できます。

2主な機能3• 24bit RGB パラレルピクセル出力• ピクセルあたり 8bit (RGB888)• 任意のシステムメモリへの 16ダブルワードのバーストアクセスが可能な AXI マス
タインタフェース
• レイヤごとの専用 64ダブルワード FIFO

• プログラム可能なタイミングと極性により、さまざまなディスプレイパネルと接続が可能• タイミング：HSYNC 幅、VSYNC 幅、VBP、HBP、VFP、HFP• 極性：HSYNC、VSYN、 非データイネーブル、ピクセルクロック• TFT のみサポート（STN は対象外）

LCD-TFT ディスプレイコントローラは、24bit パラレルデジタル
RGB （赤、緑、青）インタフェースを提供し、水平および垂直同期用の追加信号も備えています。
LTDC は AXI バスマトリックスのマスタであり、内部 Flash、SRAM1、SRAM2 などの内部メモリ、または FMC/QUADSPI インタフェースを経由して外部メモリにアクセスできます。
また、レイヤごとに専用の 64ダブルワード FIFO も備えています。
プログラム可能なタイミングと極性パラメータをサポートし、さまざまなディスプレイパネルと相互接続を行います。

3

柔軟性の高い LTDC パラメータ4

さまざまなディスプレイパネルに適合• プログラム可能なウィンドウ位置とサイズ• プログラム可能なバックグラウンドカラー• ボトムレイヤとのブレンドに使用される、LTCD レジスタ LTDC_BCCR にプログラムされた
24bit の RGB 値• 2 レイヤブレンディングによるマルチレイヤサポート• カラーチャネルごとに 2bit のディザリング（RGB では 2、2、2）• 新しいプログラム値は、実行時または垂直ブランキング中にすぐにロード可能

LTDC は、さまざまなディスプレイパネルをサポートできる柔軟でプログラム可能なパラメータを提供します。
• プログラム可能なディスプレイサイズ。例えば：QVGA、WQVGA、VGA• プログラム可能なバックグラウンドカラー• ボトムレイヤとのブレンドに使用される、LCD コントローラレジ
スタ（LTDC_BCCR）にプログラムされた 24bit の RGB 値• 2 レイヤブレンディングによるマルチレイヤサポート• カラーチャネルごとに 2bit のディザリング（RGB では 2、2、2）疑似乱数ディザリングを使用して各ピクセルカラーチャネル（R、G、または B）値に小さな乱数値（閾値）を加えて 18bit
ディスプレイで 24bit データを表示するため、場合により最上位ビットが切り上げられます。
• 新しいプログラム値は、実行時または垂直ブランキング中にすぐにロードできます。

4

Layer1
FIFO

PFC

64x32b

ブレンディング

LCD_HSYNC

Layer2
FIFO
64x32bLCD_CLKLCD_VSYNC

PFC

ディザリングLCD_DELCD_R[7:0]

LCD パネル

AHB マスタインタフェース

5

LCD_G[7:0]
設定とステータスレジスタ

APB インタフェース

AXI インタフェース

LCD-TFT のブロック図

LCD_B[7:0]
同期タイミング生成

これは、LCD TFT コントローラのブロック図です。

5

LTDC クロックドメイン6• 3 つのクロックドメイン：• AXI クロックドメイン（ACLK）• メモリからレイヤ FIFO とフレームバッファにデータを転送• APB クロックドメイン（PCLK）• グローバル設定および割込みレジスタにアクセス• ピクセルクロックドメイン（LCD_CLK）• LCD-TFT インタフェース信号、ピクセルデータ、およびレイヤ設定を生成• LCD_CLK 出力は、パネルの要件に従って設定する必要があります。

LTDC には 3 つのクロックドメインがあります：• メモリからレイヤ FIFO およびフレームバッファにデータを転送する AXI クロックドメイン（ACLK）• グローバル設定および割込みレジスタにアクセスするためのAPB クロックドメイン（PCLK）• LCD-TFT インタフェース信号、ピクセルデータ、およびレイヤ設定を生成するピクセルクロックドメイン（LCD_CLK）LCD_CLK 出力は、パネル要件に従って設定する必要があります。

6

プログラム可能な LTDC のタイミング
フレーム
開始

HSYNC

HBP

水平有効期間7

HFP

VBP：Vertical back porch （垂直バックポーチ)
VSYNC
VBP

VFP：Vertical front porch （垂直フロントポーチ）
HBP：Horizontal back porch （水平バックポーチ）

D1, L1

HFP：Horizontal front porch （水平フロントポーチ）
HSYNC：Horizontal synchronization （水平同期）

垂直有効期間VSYNC：Vertical synchronization （垂直同期）

Dm,, Ln

これらのタイミングは、ディスプレイのデータシートに基づいています。例：

VFP

TFT パネルと相互接続するため、すべてのタイミングは LTDC
コントローラによりプログラムできます。TFT パネルのデータシー
トに基づくこれらのタイミングは次の通りです：• VBP：Vertical Back porch （垂直 バックポーチ)• VFP：Vertical Front porch （垂直 フロントポーチ)• HBP：Horizontal Back porch （水平 バックポーチ)• HFP：Horizontal Front porch （水平 フロントポーチ)• HSYNC：Horizontal synchronization （水平同期)• VSYNC： Vertical synchronization （垂直同期)

7

LTDC 信号8

柔軟性のある I/O 設定LCD-TFT 信号

説明

LCD_CLK

ピクセル クロック出力

LCD_HSYNC

水平同期

LCD_VSYNC

垂直同期

LCD_DE

非データイネーブル

LCD_R[7:0]8bit の赤のデータ

LCD_G[7:0]8bit の緑のデータ

LCD_B[7:0]8bit の青のデータ

LTDC 出力信号がこの表にまとめられています。
LTDC のピンは、ユーザアプリケーションで設定する必要があります。使用されていないピンは、他の目的に使用できます。

8ピクセルデータマッピングとカラー･フォーマット
8 つのプログラム可能な入力カラー･フォーマット
31:24

23:16

15:8

7:0

ARBG8888

Ax[7:0]Rx[7:0]Gx[7:0]Bx[7:0]

RGB888Bx+1[7:0]

Rx[7:0]Gx[7:0]Bx[7:0]

RGB565
ARGB1555
ARGB4444

Rx+1[4:0]

Ax+1[0]Gx+1[5:3]

Gx+1[2:0]

Bx+1[4:0]

Gx+1[4:3]

Gx+1[2:0]

Bx+1[4:0]

Rx+1[3:0]

Gx+1[3:0]

Bx+1[3:0]

Rx+1[4:0]

Ax+1[3:0]

Rx[4:0]Ax[0]Gx[5:3]Rx[4:0]Ax[3:0]Gx[2:0]Bn[4:0]Gx[4:3]

Gx[2:0]Bx[4:0]Rx[3:0]Gx[3:0]Bx[3:0]

L8

Lx+3[7:0]

Lx+2[7:0]

Lx+1[7:0]

Lx[7:0]AL88

Ax+1[7:0]

Lx+1[7:0]

Ax[7:0]Lx[7:0]AL44

Ax+3[3:0] Lx+3[3:0]

Ax+2[3:0] Lx+2[3:0]

Ax+1[3:0] Lx+1[3:0]

Ax[3:0] Lx[3:0]

レイヤのフレームバッファ内に保存されるデータには、プログラム可能なピクセル・フォーマットが使用されます。
この表は、ピクセルデータマッピングと選択した入力カラー･フォーマットを示しています。
LTDC は、レイヤごとに最大 8 つのプログラム可能な入力カラー･フォーマットで設定できます。
ダイレクトカラー• ARGB8888• RGB888• RGB565• ARGB1555• ARGB4444
インダイレクトカラー• L8（8bit 輝度または CLUT）• AL44（4bit アルファ＋4bit 輝度）• AL88（8bit アルファ 8bit 輝度）

9ピクセル・フォーマット変換（PFC：Pixel Format Conversion）

10

ピクセル・フォーマット変換

RGB565 入力ピクセル・フォーマット
ビット位置

4 3 2 1 0 5 4 3 2 1 0 4 3 2 1 0PFC
ARGB8888 内部ピクセル・フォーマット

ビット位置0 0 0 0 0 0 0 0 4 3 2 1 0 4 3 2

5 4 3 2 1 0 5 4 4 3 2 1 0 4 3 2

ビットマップのカラー･フォーマットを別のフォーマットに変換する
場合、この操作はピクセル・フォーマット変換（PFC:PixcelFormat Conversion）と呼ばれます。
フレームバッファから読み取ったピクセルデータは、次のように内部 ARGB 8888 フォーマットに変換されます。幅が 8bit 未満のコンポーネントは、ビットレプリケーションによって 8bit まで拡張されます。上位 8bit が選択されます。
ダイレクトカラーからインダイレクトカラーまたはインダイレクトカ
ラーからダイレクトカラーに変換するのは簡単ですが、ダイレクトカラーをインダイレクトカラー･フォーマットに変換する際、非常に複雑な操作であるカラールックアップテーブル（CLUT）の再生成が伴います。

10

CLUT - カラーパレット

11

レイヤあたり最大 256 エントリのカラールックアップテーブル（CLUT）• フレームバッファには、各ピクセルのインデックス値が含まれています。
• CLUT には、R、G、B の値をプリロードしておく必要があります。
• L8 および AL88 入力ピクセル・フォーマットの場合、CLUT は 256 色でプリロードします。
• AL44 入力ピクセル・フォーマットの場合、CLUT には 16 色をプリロードします。各色のアドレスは、4bit L チャネルを次のように 8bit に複製することによって埋める必要があります。
• L0（インデックスカラー 0）、アドレス 0x00
• L1、アドレス 0x11
• L2、アドレス 0x22
• ....

カラールックアップテーブル• L1、アドレス 0xFF

0x00 A

ピクセルあたり8bit
L8 、 AL44 、 A8

インデックス

R G B
0x01 A R G B.....
0xFF A R G B

インダイレクト
コーディング

ARGB

カラールックアップテーブルは、入力ピクセル・フォーマットが L8、AL44、および AL88 のインデックスカラーにのみ使用します。
レイヤごとに最大 256 のエントリをサポートします。
フレームバッファには、各ピクセルのインデックス値が含まれています。
CLUT の各ピクセル（インデックスカラー）には元の R、G、B 値を置き換える R、G、B 値を読み込む必要があります。各色（RGB 値）には、それ自体のアドレスがあり、CLUT 内の位置を表します。

11

レイヤのプログラム可能なパラメータ12

柔軟性のあるウィンドウ位置とサイズの設定

START_POS_X

END_X_POS

START_POS_Y

END_POS_Y

すべてのレイヤは配置とサイズを変更できます。
プログラム可能なレイヤの位置とサイズは、ラインの最初と最後の可視ピクセルとウィンドウの最初と最後の可視ラインを定義します。画像フレー
ムの全体を表示、またはその一部だけの表示もできます。

12

レイヤのプログラム可能なパラメータ13

カラーフレームバッファの設定• フレームバッファサイズ、ライン長、およびライン数パラメータを正しく設定する必要があります。
• レイヤが必要とするバイトより少ないバイトが設定されている場合、FIFO アンダーランエラーがセットされます。
• レイヤが必要とするバイトより多くバイトが設定されている場合、不要な読取りデータは破棄されます。不要なデータは表示されません。
レイヤフレームバッファの開始

フレームバッファ

ライン長ピッチ。
。

ライン数すべてのレイヤは、カラーフレームバッファとピッチ用の設定可能なライン数とライン長を持っています。
ピッチとは、1 本のラインの始まりと次のラインの始まりの間の距離（バイト単位）です。
これらのパラメータはバイトで表されます–ピクセルではありません! つまり、距離の値はピクセルあたりのビット数で決まります。
ライン長とライン数のパラメータは、フレームバッファの最後でレイヤ FIFO へのデータのプリフェッチを停止するのに使用されます。

13

レイヤのプログラム可能なパラメータ14

マルチレイヤブレンディング• アルファ値使用のブレンディングが常にアクティブな状態にあります。
• ブレンディングの順序はボトムアップに固定されています。
• ボトムレイヤのバックグラウンドカラーはプログラム可能です。
レイヤ 1

レイヤ 2

単色のバック
グラウンド

LTDC ではブレンディング係数を設定できます。ブレンディングの順序はボトムアップに固定されています。2 つのレイヤが有効になっている場合、レイヤ 1 は最初にバックグラウンドカラーとブレンドされ、次にレイヤ 2 が前回のブレンド結果とブレンドされます。

14

レイヤのプログラム可能なパラメータ15

デフォルト色の設定• デフォルト色（ARGB）は定義したレイヤウィンドウの外や、レイヤが無効のときに使用されます。
• 注意が必要な使用例：• レイヤ 1 が有効• レイヤ 2 が無効で、デフォルト色は黒• ブレンディング係数が定数アルファ（0xFF）に設定されている場合、画像は表示されません。黒いウィンドウのみが表示されます（レイヤ 2 のデフォルト色は黒です）。

• デフォルト色をバイパスするには、ブレンディング係数を透明なアルファ値（0x00）に設定します。

すべてのレイヤは ARGB フォーマットでデフォルト色を設定することができ、デフォルト色は定義したレイヤウィンドウの外またはレイヤが無効のときに使用されます。
注意が必要な使用例：• レイヤ 1 が有効• レイヤ 2 が無効で、デフォルト色は黒ブレンディング係数が定数アルファ（0xFF）に設定されている場
合、画像は表示されません。黒いウィンドウのみが表示されます（レイヤ 2 のデフォルト色は黒です）。
デフォルト色をバイパスするには、ブレンディング係数を透明な値であるアルファ = 0x00 にセットします。

15

レイヤのプログラム可能なパラメータ

16カラーキーイング• LTDC_LxCKCR レジスタでレイヤごとに透明色（RGB）を定義できます。
• カラーキーイングを有効にすると、現在のピクセルがカラーキーと比較されます。
プログラムされた RGB 値と一致した場合、そのピクセルのすべてのチャネル（ARGB）が 0 にセットされます。
• LTDC_LxCR レジスタの各レイヤのカラーキーイングを動作中に有効化できます。

カラーキー（RGB）の設定により、透明なピクセルを表せます。
カラーキーイングを有効にすると、現在のピクセル（フォーマット変換後、ブレンド前）がカラーキーと比較されます。プログラムされた RGB 値と一致した場合、そのピクセルのすべてのチャネル（ARGB）が 0 にセットされます。
カラーキー値を設定することにより、ランタイム時にその値を使用してピクセル RGB 値を置換することができます。
カラーキーイングは、LTDC_LxCKCR レジスタにより有効にします。

16

LTDC 割込み
割込みイベント

17

説明

ライン

ライン割込みは、プログラムされた位置ラインに達したときに生成されます。

レジスタリロード垂直ブランキング期間中にシャドウレジスタのリロードが実行されると、レジスタリロード割込みが生成されます。

FIFO アンダーラン

エンプティのレイヤ FIFO からピクセルがリクエストされると、FIFO アンダーラン割込みが生成されます。

転送エラー

データ転送中に AXI バスエラーが発生すると、転送エラー割込みが生成されます。

ライン割込み：• プログラムされたライン位置に達すると生成されます。
レジスタリロード割込み：• 垂直ブランキング期間中にシャドウレジスタがリロードされると生成されます。
FIFO アンダーラン割込み：• エンプティのレイヤ FIFO からピクセルがリクエストされると生成されます。
転送エラー割込み：• データ転送中に AXI バスエラーが発生したときに生成されます。

17

低電力モード
モード

説明

RUN

アクティブ

SLEEP

アクティブペリフェラル割込みによって、デバイスは SLEEP モードを終了します。

STOP停止。ペリフェラルレジスタの内容は保たれます。

LP-STOP停止。ペリフェラルレジスタの内容は保たれます。

LPLV-STOP停止。ペリフェラルレジスタの内容は保たれます。

STANDBY

パワーダウン状態です。ペリフェラルは、STANDBY モード終了後に再初期化する必要があります。

LTDC は、RUN モードと SLEEP モードでアクティブです。LTDC
割込みにより、デバイスの SLEEP モードを終了させることができます。
デバイスは、STOP モードと STANDBY モードでは通信できません。

18

アプリケーションの例

19• 接続性と HMI を持つ家電機器
BT モジュール

UART
LTDC

Flash
アクセラレータ

Quad-SPIまたはNOR Flash
SPI

ボタン

I/O

USB コネクタUSB

I2C

STM32MP1

タッチパネル

FMC

SDRAM

I2S

オーディオ
コーデック

LTDC

グラフィックアプリケーションには、高品質のユーザインタフェースが必要です。これは、STM32MP1 を使用し LCD-TFT コント
ローラでディスプレイに接続することで実現できます。さらに、FMC または Quad-SPI インタフェースを使用すれば、バックグラウンドイメージ、高解像度アイコン、複数言語をサポートするフォントなど、必要なすべてのグラフィックコンテンツを収めた外部Flash メモリにアクセスできます。

19

関連ペリフェラル

20• 詳細については、LTDC に関連する次のトレーニングを参照してください。
• リセットおよびクロック制御（RCC）• 汎用入力／出力（GPIO）

以下は、LTDC モジュールに関連するペリフェラルのリストです。
詳細については、必要に応じてこれらのペリフェラルトレーニングを参照してください。
• リセットおよびクロック制御（RCC）• 汎用入力／出力（GPIO）

20