SPI通信の実験にMSP3520を使いました。以下の資料を参考にしています。資料1*1、資料2 *2、
液晶ディスプレイ
MSP3520
MSP3520とは3.5インチのタッチキー付き液晶ディスプレイボードです。ディスプレイドライバ(ILI9488)を使用したLCDモジュール(QD3503)、タッチキーコントローラ(XPT2046)、接続用端子(14pin)等で構成されています。解像度は320x480 ピクセルです。SPI通信でマイコンと接続します。
色のつくりかた
色は「光の3原色」でつくります。LCDモジュールのバックライトから出た光は、液晶とRGBカラーフィルタを通して「色」として認識されます。RGBフィルタへの各光量の調整により色をつくります。例えばR(赤)とG(緑)をONとしてB(青)をOFFとすると、R(赤)とG(緑)が重なり黄色に見えます。R(赤),G(緑),B(青)それぞれ6bitの情報を持てば(RGB666)、 色 (262K colors) 表示できます。
インターフェイス
ドライバIC ILI9488とのSPI通信によるインターフェイスは、MIPI-DBI Type C と呼ばれています。Option1とOption3 があります。Option1とOption3の切替は、QD3503のIM0~IM1のHigh/Lowで行います。(資料2の3.2.1 System Interface)
資料3の「QD3503の仕様書」(TFT-LCM Interface Specification)と資料4の「回路図」のFPC接続部見ると、IM2=39pin,IM1=40pin,IM0=41pin となっており、全て3.3[V]と接続されています。実機も39pin~41pinは3.3[V]に接続されています。このため、このMSP3520では「DBI Type-C Option 3」を使用することになります。
DBI Type-C Option3では、D/CX制御線によりコマンドとパラメータ(またはGRAMへの画像データ)を判別しています。D/CX = Lowの場合はコマンド、D/CX = Highの場合はコマンドのパラメータ、またはGRAMへの画像データとなります。(資料2の4.2.1 Write Cycle Sequence)
表示に必要な制御線は、クロック、マスタ送信データ、スレーブセレクト、D/C、Resetの5本となります。
SPI通信
仕様
通信するために、ILI9488のSPI通信仕様に合わせる必要があります。ILI9488の書き込み時、最小クロック周期は50[nsec]、最大クロックj周波数は20[MHz]です。(資料2の17.4.3)
マイコン側のRSPCKの最大周波数は16[MHz]なので、クロックは16[MHz]となります。
SPI通信にはクロックの極性(Clock Polarity:CPOL)とクロックの位相(Clock Phase:CPHA)により4つのモードがあります。
図7より、ILI9488ではアイドル時はクロック=High、クロックの立ち上がり時にデータを取り込むので、SPIモード3(CPOL=1,CPHA=1)を使用します。
RSPI初期化フロー
RSPIの初期化と転送フォーマットの設定処理です。
出力波形の確認
RSPIの設定通りに波形が出力されているか、LCDを接続せずにCPUボードだけで確認します。
マイコンとの接続
アダプターボード
LANケーブルで接続するためのアダプターボードを作成します。
画像データ(RGB111)
DBI Type-C Option3では、RGB111とRGB666が使用できます。(資料2の4.7.2) 初期化時、Interface Pixel Format(0x3A)コマンドで指定します。
資料6のサンプルプログラムではRGB666(18 bits/pixel)を使用していました。
RGB666では1ピクセルの表示に3バイトのデータが必要です。これに対してRGB111(3 bits/pixel)では、1バイトで2ピクセル表示できます。6倍も差があるのでこの実験ではRGB111を使用しています。
ILI9488へのデータ送信処理
送信処理はコマンドとパラメータを送信する場合と、画像データを送信する場合で異なります。
コマンドとパラメータ送信する場合は、割り込みを使用しません。これはコマンドとパラメータでD/C制御線をH/Lと切り替える必要があるため、「送信バッファエンプティ割り込み」での送信が難いためです。画像データを送信する場合は、「送信バッファエンプティ割り込み」を使用します。
ILI9488への初期化コマンド
資料6 を解凍してできるフォルダ Demoにサンプルがあります。ここではスマホと同じような向きで表示を行います。表示色は8色です。
カラーバー表示
波形
8色のカラーバーを表示して波形をみました。LANケーブルは15cmですが、CPU端子から液晶モジュールまでは約30cm離れています。
(注: オシロのプローブが不良でした。CLKの波形は正確ではありません。2022年11月26日)
フロー
プログラム
・ルネサス提供ファイルの修正(割り込み処理のコメント化)
本プログラムで使用する割り込み処理は、spi.cで記述するようにしました。
ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。
(ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。)
GitHub登録場所: https://github.com/vABCWork/test_colorbar
*1:資料1「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0120 Rev.1.20)」
*2:資料2「ILI9488 ドライバデータシート」 "www.lcdwiki.com/res/MSP3520/ILI9488%20Data%20Sheet.pdf "
*3:資料3「3.5 inch TFT Specifications」"//www.lcdwiki.com/res/MSP3520/QD3503_Specification_V1.1.pdf"
*4:資料4「3.5インチ SPIモジュール回路図」"www.lcdwiki.com/res/MSP3520/3.5%E5%AF%B8SPI%E6%A8%A1%E5%9D%97%E5%8E%9F%E7%90%86%E5%9B%BE.pdf "
*5:資料5「3.5inch SPI Module MSP3520 User Manual」"www.lcdwiki.com/res/MSP3520/3.5inch_SPI_Module_MSP3520_User_Manual_EN.pdf"
*6:資料6「3.5 inch SPI Module Package(ILI9488)」 "www.lcdwiki.com/3.5inch_SPI_Module_ILI9488_SKU:MSP3520#Program_Download"