ディスプレイコントローラー¶
概要¶
ディスプレイコントローラー(LCDC)は、選択したインターフェースを通じて描画済みのピクセルをパネルに転送します。対応するデバイスと構成では、出力時にTurboPixelフレームバッファーを展開することもできます。LCDCには、単色背景に出力レイヤーを重ねる限定的なアルファブレンディング機能があります。資料にはレイヤー0とレイヤー1が記載されていますが、SF32LB52xはレイヤー1に対応していません。この機能は、汎用的なUI描画やePicassoによる画像合成の代わりにはなりません。eZipアセットのデコードも別の処理です。
一次資料:SiFli LCDC HALドキュメント。
上記リンクはSiFli-SDKの特定コミットに固定されています。記載内容が示すのはそのリビジョンにおけるHALの動作であり、すべてのSF32デバイスやパッケージ、別のSDKリリースで各インターフェース、レイヤー、機能が利用できることを保証するものではありません。プロジェクトで使用するデバイス、パッケージ、SDKリリースの組み合わせで確認してください。
リソースからパネルまでの完全なフローについてはグラフィックス概要を参照してください。この記事は、コントローラー、パネル接続、ドライバー統合に焦点を当てています。
パネルインターフェースの選定、LVGLでの描画データ転送経路の設計、新しいパネルの立ち上げを行う際に参照してください。コントローラーによる画面出力と、アセットのデコードやピクセル合成を分けて説明しているため、表示の問題を適切な層で切り分けられます。
ディスプレイインターフェースを選定する¶
EPDやMemory-in-Pixelはパネル技術や画素の更新方式を表すもので、相互に置き換えられるバス規格ではありません。EPDモジュールはSPIで外部コントローラーに接続する場合があります。SF32LB57xでは、LCDCによるEPD直接駆動モードも資料に記載されています。JDIにはシリアルとパラレルの方式があり、それぞれ信号が異なります。表示技術の名称だけで判断せず、パネルの電気的インターフェースと保守要件を確認してください。
パネルの選択は、帯域幅、バッファー戦略、ピンの使用、電力、初期化の複雑さ、PCBリスクに影響します。選択したデバイスとパッケージの正確なインターフェース一覧を確認してください。
| インターフェースまたはパネル技術 | 一般的な用途 | 設計上の注意 |
|---|---|---|
| 3線/4線SPI | 小型のTFTまたはAMOLEDパネル、シンプルなHMI | ピン数が少なく配線もシンプルだが、全画面アニメーションには帯域幅が限られる。 |
| Dual-SPI / Quad-SPI | ウェアラブルAMOLEDおよびコンパクトなディスプレイ | 基本的なSPIよりも帯域幅が優れており、ピン数も中程度に抑えられる。 |
| 8080 MCUインターフェース | パラレル方式のディスプレイパネル | シリアルSPIよりも高帯域幅だが、より多くのピンを使用する。 |
| RGB / DPI | 大型または高リフレッシュレートのディスプレイ | ピクセルを連続出力するため、帯域幅と使用ピン数が増え、厳密なタイミング制御が必要。 |
| MIPI DSI | 高密度AMOLEDまたは高度なパネル | 少ないピン数で高帯域幅だが、初期化とシグナルインテグリティがより複雑。 |
| EPDパネル技術 | 電子ペーパーおよび超低リフレッシュレートのディスプレイ | ホスト側インターフェースはモジュールとコントローラーによって異なります。静止画の保持中はパネルの消費電力を抑えられる場合がありますが、更新は遅く、パネル専用の波形制御と電源制御が必要です。 |
| JDI(シリアルまたはパラレル) | 低消費電力の反射型パネル | JDIの各方式では信号が異なります。選択したパネルの電気的インターフェースと保守要件を確認してください。 |
| Memory-in-Pixelパネル技術 | 常時表示や屋外での視認性を重視するUIを含む、低消費電力の反射型ディスプレイ | 画素メモリーをパネルに内蔵する技術で、更新動作はTFT/AMOLEDとは異なります。パネルのデータシートに従ってください。 |
例えば、小型のSPI/QSPIパネルは部分更新を優先できますが、RGB/DPIパネルは持続的なスキャンアウト帯域幅の予算を必要とします。理論上のスループットだけでインターフェースを選定しないでください。ピクセルフォーマット、解像度、リフレッシュの挙動、パネルGRAM、その他のPSRAM利用者を含めて検討してください。
デバイスごとのインターフェースマトリクス¶
以下のマトリクスはファミリー選定の参考情報であり、ピン割り当て表ではありません。各SF32ファミリーまたはシリコンバリアントについて、資料で確認できるディスプレイインターフェースを示しています。ダッシュは、その行の資料に当該インターフェースの記載がないことを表します。GPIOで制御する外部コントローラーや、基板固有の実装が不可能という意味ではありません。回路図を確定する前に、正確な注文型番、パッケージ、ピン多重化、SDKのバージョン、パネルドライバーを必ず確認してください。
| SF32ファミリー/バリアント | 文書化されているLCD/パネルインターフェース | パッケージ/バリアントの制約 | 実践的な選定の方向性 |
|---|---|---|---|
| SF32LB52x | 3線/4線SPI、Dual-SPI、Quad-SPI、MCU/8080(MIPI DBI)、シリアル/パラレルJDI。SPI接続のEPDに加え、52B/D/E/G/Jのハードウェアガイドには8ビットパラレルEPDの信号インターフェースも記載されています | 記載されている52xの各モデルはQFN68Lです。52B/D/E/G/Jのハードウェアガイドには信号割り当てとTPS PMIC制御が記載されていますが、これだけではLCDCのEPD直接駆動モードに対応するとは言えません。ドライバーと対象バリアントを確認してください。 | 小型SPI/QSPI、8080、JDI設計に適します。パラレルEPDでは、対象品番におけるGPIO、タイミング、TPS電源制御の実装を確認してください。 |
| SF32LB55x | 3線/4線SPI、Dual-SPI、Quad-SPI、MCU/8080、DPI/RGB、シリアル/パラレルJDI、MIPI DSIコマンドモード | 文書化されている2レーンMIPI DSIはBGA145/169パッケージで利用できます。JDIとMIPI DSI + SPI/DSPIによるデュアルディスプレイ動作は557VD3A6のみ記載されています。コマンドモードには内部SRAM/GRAMを持つパネルコントローラーが必要です。 | 互換性のあるBGAパッケージとMIPIコマンドモード対応パネルを使うウェアラブル機器や、ディスプレイを備えたその他のコネクテッドデバイス。 |
| SF32LB56xU | 3線/4線SPI、Dual-SPI、Quad-SPI、シリアルJDI | 記載されているUバリアントはQFN68Lです。正確な型番とピンの多重化を確認してください。 | QSPIの帯域幅を確保しつつピン数を抑えたい、小型シリアルパネルの設計に適します。 |
| SF32LB56xV | 3線/4線SPI、Dual-SPI、Quad-SPI、DBI 8080、DPI/RGB、シリアル/パラレルJDI | 記載されているVバリアントはWBBGA175です(チップ型番ガイドではBGA175)。正確な型番で必要なピンと基板配線を確認してください。 | 8080、DPI/RGB、パラレルJDIのいずれかを使う、高解像度または高リフレッシュレートの設計に適します。 |
| SF32LB57x | 3線/4線SPI、Dual-SPI、Quad-SPI、8/16ビット8080/DBI、DPI/RGB、JDI、直接駆動EPD | QFN68、QFN80、BGA112などのパッケージがあります。正確な型番、パッケージで利用できるピン、パネルの駆動経路を確認してください。 | 多様なパラレル/シリアル接続、JDI、EPDを必要とするグラフィックス重視の設計に適しています。 |
| SF32LB58x | 3線/4線SPI、Dual-SPI、Quad-SPI、MCU/8080、DPI/RGB、シリアル/パラレルJDI、2レーンMIPI DSIコマンドおよびビデオモード | 記載されている型番はすべてBGA256です。コマンドモードには内部SRAM/GRAMを備えたパネルコントローラーが必要で、ビデオモードではRAMレスのパネルコントローラーも利用できます。型番ガイドにはMIPI DSI + SPI/DSPI/QSPIによるデュアルディスプレイも記載されています。対象設計のLCDコントローラーとピン多重化を確認してください。 | デュアルディスプレイ構成や、コントローラーRAMの有無を問わないMIPI DSIパネルを含む、高解像度・高帯域幅のUI設計に適しています。 |
SF32LB56xでは、UとVを互換品として扱わないでください。SF32LB55xまたはSF32LB58xでMIPI DSIを使う場合は、正確なパッケージ、DSIピン、パネルのレーン数と動作モードをすべて確認してから回路図に反映してください。特にSF32LB55xはコマンドモードのみのため、RAMを搭載しないビデオモードパネルには対応しません。EPDの設計にはパネル固有のタイミング、駆動波形、電源設計も必要です。インターフェース名だけでは設計条件を満たせません。
SF32LB52xの2つのハードウェアガイドでは、JDIの記載が一致していません。概要ではシリアルJDIを挙げていますが、詳細なJDIの節ではパラレル信号の割り当てを示しています。そのためマトリクスには両方の記載を残していますが、特定品番でのピン利用を保証するものではありません。設計を確定する前に、対象バリアントのLCDCマッピング、SDK/ドライバー、パネル信号を確認してください。
SiFliのチップ型番ガイドでは、SF32LB55xファミリーのインターフェースとしてDPI/RGBが挙げられていますが、型番別の表では掲載SKUごとのDPI対応が示されていません。ファミリー全体の記載だけで個別SKUの対応を判断せず、DPIを前提とする場合は正確な型番と必要なピンの利用可否を確認してください。SF32LB56xのU/Vの区別は、それぞれのハードウェア設計ガイドに基づきます。ファミリー全体を対象とするHALの表をそのまま適用しないでください。
SF32LB52xでは、文書に記載された8ビットパラレルEPD信号インターフェースと、LCDCのEPD直接駆動モードを区別してください。52B/D/E/G/JのハードウェアガイドにはパラレルEPD信号とTPS PMIC制御が記載されています。一方、SiFli-SDK v2.5.1のリリースノートには、SF32LB57xのLCDC EPD直接駆動対応が記載されています。52xで57xと同じLCDC直接駆動経路を使えると推定せず、対象品番のドライバーとタイミング実装を確認してください。
インターフェースの資料:SiFliチップ型番ガイド、SF32LB52x電池駆動版ハードウェアガイド、52B/D/E/G/Jハードウェアガイド、SF32LB55x、SF32LB56xU、SF32LB56xV、SF32LB58x、SF32LB57xのSDK対応情報。
コントローラー、バッファー、描画データの転送経路¶
LCDCの参照図では、パネルの表示領域、更新ウィンドウ、ソースバッファー領域が区別されています。パネルの列・行オフセットは一貫して適用してください。更新ウィンドウはソースバッファーの一部にしか重ならない場合があります。ウィンドウ内でソースデータに覆われていないピクセルには背景色が表示されます。両者が同じ領域だと決めつけず、ウィンドウ座標、バッファーの原点、ストライドを合わせて確認してください。
UIフレームワークは変更されたピクセルを生成し、ディスプレイドライバーとコントローラーがそれをパネルに配信します。適切なパスはパネルによって異なります。
- SPI/QSPIまたは8080のドライバーは通常、パネルウィンドウを設定し、変更された領域のみを転送します。
- フレームバッファーをスキャンするコントローラーは、ディスプレイのタイミングに従ってメモリーからピクセルデータを読み出します。
- TurboPixel対応のパスは、圧縮された最終ビットマップを読み取り、ディスプレイコントローラーの段階でそれを展開します。
LVGLでは、描画データを転送するflushコールバックがレンダリングと画面出力の境界になります。更新領域を考慮して適切なDMAまたはコントローラー処理を開始し、描画バッファーを安全に再利用できる状態になってから完了を通知します。CPUとハードウェアがバッファーを共有する場合は、キャッシュのclean/invalidate処理を明確にしてください。
バッファーの再利用時点は、実際の転送経路で判断します。パネル内の表示メモリーへ転送する場合は、ハードウェアが描画バッファーを読み終えてから解放します。連続走査では、フレーム割り込みだけで表示中のフレームバッファーを解放できるわけではありません。バッファー切り替えが完了し、コントローラーが旧バッファーを読まなくなったことを確認してから再利用してください。転送完了とパネル上の表示更新は別の事象です。ティアリングを防ぐ必要がある場合は、パネルの仕様に従ってTE信号やフレームタイミングを使います。
キャッシュ可能な共有メモリーでは、ハードウェアが読み取る前にCPUが書き込んだソースデータをcleanします。ハードウェアが書き込む前には、プラットフォームのキャッシュ管理規則に従って転送先を準備し、後からダーティなキャッシュラインが書き戻されて結果を上書きするのを防ぎます。ハードウェアの処理完了後、CPUが読み取る前に転送先をinvalidateしてください。キャッシュライン境界への整列と所有権を管理し、同じラインを共有する隣接データも考慮します。
| 判断 | 検証すべき方向性 |
|---|---|
| 転送領域 | パネルとドライバーが対応している場合は、変更部分だけを転送する。 |
| バッファリング | レイテンシとメモリー要件から、部分、全フレーム、シングル、またはダブルバッファリングを選ぶ。 |
| 同期 | ハードウェアが読まなくなってからバッファーを解放・再利用する。連続走査ではバッファー切り替えの完了を確認する。 |
| ピクセルフォーマット | ホットパスでの変換を避けるため、パネル、ドライバー、レンダラー、任意のアクセラレーターパスを一致させる。 |
| キャッシュ | ハードウェアが読み取る前にCPUが書き込んだバッファーをcleanし、CPUが読み取る前にハードウェアが書き込んだバッファーをinvalidateする。 |
部分更新と更新対象領域¶
部分描画とパネルへの部分転送は別の最適化です。メモリーの一部しか変更していなくても、RGB/DPIやDSIビデオモードの連続出力では全フレームを送る場合があります。EPDでは、部分更新用の駆動波形、温度依存性、残像、必要な全画面更新間隔を確認します。更新領域を小さくすれば常に正常に動作するとは限りません。
ほとんどの組み込みUIでは、毎フレーム画面全体を再描画する必要はありません。LVGLは無効化された領域を追跡し、ドライバーは変更部分だけをパネルへ転送できます。この方法は、SPI/QSPIパネル、バッテリー駆動のウェアラブル、表示値が少しずつ変わる静的な画面、EPDやJDIディスプレイで特に有効です。
全画面リフレッシュは、アニメーションの多い画面、遷移、または全フレームバッファーから自然にスキャンするパネルに適しています。この選択は、UIフレームワークの設定だけでなく、ディスプレイインターフェースの帯域幅、パネルの挙動、使用可能なメモリー容量に依存します。
パネル立ち上げシーケンス¶
ウィジェットやアプリケーションの挙動をデバッグする前に、段階を追ってパネルを立ち上げてください。
- 電源レール、リセットのタイミング、バックライト/イネーブルピン、基本的な消費電流を確認する。
- パネルベンダーの初期化シーケンスを提供された通りに正確に送信する。
- 単色画面を表示し、バイト順、ピクセル形式、インターフェース配線に誤りがないか確認する。
- 単純な図形を描画し、ストライド、ウィンドウアドレス、座標を確認する。
- 画像リソースとテキストを追加し、色変換、フォント、リソースの配置を確認する。
- 部分リフレッシュ、DMA、TurboPixel、グラフィックスアクセラレーションを1つずつ有効にする。
- スリープ、ディスプレイオフ、ウェイク、再初期化のパスをテストする。
まず、目的のパネルインターフェースを最小構成で動かし、単色画面と図形を確認します。DMA、圧縮、アクセラレーションを追加した後は、それぞれの新しい経路で同じテストを繰り返してから、LVGLの画面全体をテストしてください。
ディスプレイパスの失敗を切り分ける¶
各段階を独立した境界として扱います。パネルコマンド、LVGLコード、バッファー配置、DMA設定を一度に変えると、表示の問題を再現しにくくなります。
| 症状 | 最初に確認すべき境界 | 焦点を絞ったテスト | 考えられる原因の種類 |
|---|---|---|---|
| パネルが空白のまま | 電源、リセット、パネル初期化 | レール/リセットを測定する。ベンダーの初期化シーケンスを実行する。単色塗りつぶしを送信する。 | 電源シーケンス、リセットの極性、初期化コマンド、または物理インターフェースの接続。 |
| 単色画面は表示できるが色が違う | レンダラーからパネルへのピクセル形式 | 赤、緑、青、黒、白のテストバーを表示する。 | RGB/BGRの並び、バイト順、色深度の設定、または形式変換。 |
| 画像がずれる、欠ける、またはティアリングが発生する | アドレッシングと同期 | グリッドを描画し、その後1つの固定更新領域を繰り返しテストする。 | ウィンドウ座標、ストライド、パネルタイミング、バッファーの再利用、または不完全なDMA同期。 |
| 静止画面は正常だがアニメーションが途切れる | レンダリング、転送、メモリーの各段階 | レンダリング時間とパネルへの転送完了時間を分けて測定する。 | 再描画領域が広すぎる、PSRAMの競合、インターフェースが遅い、バッファー戦略が不適切。 |
| スリープ/ウェイク後にのみアーティファクトが現れる | 電力状態の遷移 | サポートされているすべてのディスプレイオフとウェイクのパスの後に、塗りつぶし/グリッドテストを再実行する。 | パネル状態の喪失、リセット/初期化の省略、レールのシーケンス、または古いキャッシュ/バッファーの状態。 |
| ある機能が有効な場合にのみ失敗する | 特定のオプションパス | DMA、部分リフレッシュ、ePicasso、またはTurboPixelを1つずつ有効にする。 | サポートされていない構成、アラインメント/キャッシュのルール、またはドライバー統合のエラー。 |
パネル固有のガイダンス¶
SPIおよびQSPI AMOLED/TFT¶
部分更新を優先し、適切な場合はRGB565を使い、アニメーション領域を必要最小限にします。小さな変更のために画面全体を再描画せず、変更部分をパネルへ転送する前にレンダリングと合成を済ませてください。
RGB / DPIパネル¶
CPU、ePicasso、DMA、その他のメモリートラフィックと並行して、連続走査に必要な帯域幅を確保してください。必要なリフレッシュレートに対してフレームバッファー戦略を選び、メモリーが許せばダブルバッファリングを検討し、PCB設計においてタイミングとシグナルインテグリティを考慮してください。
MIPI DSIパネル¶
部品を確定する前にパネルモードを選んでください。SF32LB55xはMIPI DSIコマンドモードのみをサポートするため、パネルコントローラーは更新された画像を保持する内部SRAM/GRAMを提供しなければなりません。SF32LB58xはコマンドモードとビデオモードの両方をサポートします。コマンドモードのパネルはコントローラーRAMを必要としますが、ビデオモードは連続的なピクセルストリームからRAMレスのパネルコントローラーを駆動できます。初期化を早期に検証し、低消費電力状態とウェイクのタイミングをテストし、必要なデータレートをインターフェースの実効転送速度以下に抑えてください。プロトコルのオーバーヘッド、タイミング制約、他のメモリーアクセスを考慮して余裕を確保します。
EPDディスプレイ¶
低頻度の更新を前提に設計し、サポートされていて視覚的に許容できる場合にのみ部分更新モードを使用してください。アニメーションの前提を避け、ディスプレイPMIC、VCOM、波形要件を計画してください。
JDIインターフェースとMemory-in-Pixelパネル¶
ここでのJDIは、パネル接続のシリアルまたはパラレル方式を指し、Memory-in-Pixelはパネル技術を指します。低消費電力ディスプレイで併用される場合はありますが、同じ意味ではありません。MIPパネルでは、小さな領域の更新やUIレイアウトにより、通電中に画素状態を保持する特性を活用できます。これは不揮発性画像保存やシステム待機電力ゼロを意味しません。COM反転などは対象パネルのデータシートに従い、製品条件で更新動作、屋外での視認性、消費電力を測定してください。
量産引き継ぎチェックリスト¶
ディスプレイパスを完了したものとして扱う前に、他のエンジニアが再現しなければならない選択を記録してください。
- 正確なSF32デバイス、パッケージ、SDKリリース、ボードリビジョン、パネルの型番、パネルコントローラーのリビジョン。
- インターフェースモード、ピン割り当て、ピクセルフォーマット、バイト/カラー順、目標とするリフレッシュの挙動、パネル初期化のソース。
- 描画バッファーとフレームバッファーの位置、サイズ、アラインメント、キャッシュメンテナンスの所有者、DMA/コントローラーの完了シグナル。
- 部分リフレッシュポリシー、パネルウィンドウのルール、アーティファクトを避けるために一緒にリフレッシュしなければならない領域。
- 代表的なUI状態についての、測定されたレンダリング時間、転送時間、該当する場合のピーク/平均PSRAMトラフィック、電流。
- スリープ、ディスプレイオフ、ウェイク、復旧のテスト結果。失敗または中断された転送後の挙動を含む。
この記録は、ディスプレイのサポートを一度限りの立ち上げ結果から、再現可能な製品統合に変えます。パネル、SDK、メモリーレイアウト、ピクセルフォーマット、ディスプレイドライバーが変更されるたびに再検証してください。
要点のまとめ¶
- ディスプレイコントローラーはパネルへの出力を担い、ePicassoのピクセル合成やeZipのアセット展開とは別の役割です。
- インターフェースの選択は、帯域幅、バッファー、電力、ピン、PCB設計の多くを決定します。
- 描画データの転送経路、同期、キャッシュ管理、パネル初期化を、ファームウェア設計の重要項目として扱ってください。
- より高レベルのUI、DMA、TurboPixel、アクセラレーション機能を有効にする前に、単純なパターンでパネルを検証してください。
- 表示経路の境界を一つずつ確認して原因を切り分け、検証済みの構成と測定結果を量産引き継ぎ用に保管してください。
最終更新: