60歳からの電子工作ノート

生涯学習として取り組んでいます。

I2C通信とSPI通信(LCD表示器MSP3520とのSPI通信)

 SPI通信の実験にMSP3520を使いました。以下の資料を参考にしています。資料1*1、資料2 *2

資料3*3、資料4 *4、資料5*5、資料6*6 

 

液晶ディスプレイ

MSP3520

MSP3520とは3.5インチのタッチキー付き液晶ディスプレイボードです。ディスプレイドライバ(ILI9488)を使用したLCDモジュール(QD3503)、タッチキーコントローラ(XPT2046)、接続用端子(14pin)等で構成されています。解像度は320x480 ピクセルです。SPI通信でマイコンと接続します。

図1. MSP3520の概観



色のつくりかた

色は「光の3原色」でつくります。LCDモジュールのバックライトから出た光は、液晶とRGBカラーフィルタを通して「色」として認識されます。RGBフィルタへの各光量の調整により色をつくります。例えばR(赤)とG(緑)をONとしてB(青)をOFFとすると、R(赤)とG(緑)が重なり黄色に見えます。R(赤),G(緑),B(青)それぞれ6bitの情報を持てば(RGB666)、 2^6 \times 2^6 \times 2^6 = 64 \times 64 \times 64 =262,144 色 (262K colors) 表示できます。

図2. 色の表示法

インターフェイス

 ドライバIC ILI9488とのSPI通信によるインターフェイスは、MIPI-DBI Type C と呼ばれています。Option1とOption3 があります。Option1とOption3の切替は、QD3503のIM0~IM1のHigh/Lowで行います。(資料2の3.2.1 System Interface)

図3. ILI9488のインターフェイス


資料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」を使用することになります。

図4. QD3503のインターフェイス(IM0,IM1,IM2)

DBI Type-C  Option3では、D/CX制御線によりコマンドとパラメータ(またはGRAMへの画像データ)を判別しています。D/CX = Lowの場合はコマンド、D/CX = Highの場合はコマンドのパラメータ、またはGRAMへの画像データとなります。(資料2の4.2.1 Write Cycle Sequence)

図5. DBI Type-C Option3 のインターフェイス

表示に必要な制御線は、クロック、マスタ送信データ、スレーブセレクト、D/C、Resetの5本となります。

図6. マイコンとのインターフェイス

SPI通信

仕様

通信するために、ILI9488のSPI通信仕様に合わせる必要があります。ILI9488の書き込み時、最小クロック周期は50[nsec]、最大クロックj周波数は20[MHz]です。(資料2の17.4.3)

図7. ILI9488 DBI Type-C Option3 のタイミングチャート

マイコン側のRSPCKの最大周波数は16[MHz]なので、クロックは16[MHz]となります。

 SPI通信にはクロックの極性(Clock Polarity:CPOL)とクロックの位相(Clock Phase:CPHA)により4つのモードがあります。

図8. SPI通信のモード

図7より、ILI9488ではアイドル時はクロック=High、クロックの立ち上がり時にデータを取り込むので、SPIモード3(CPOL=1,CPHA=1)を使用します。

RSPI初期化フロー

RSPIの初期化と転送フォーマットの設定処理です。

図9. RSPI初期設定フロー

出力波形の確認

RSPIの設定通りに波形が出力されているか、LCDを接続せずにCPUボードだけで確認します。

図10. RSPIタイミング (資料1 page 1380 図39.64より作成)

 

図11. 1バイトの送信とクロック

図12. RSPCK遅延とSSLネゲート遅延

図13. 連続送信遅延と測定の様子

マイコンとの接続

アダプターボード

LANケーブルで接続するためのアダプターボードを作成します。

図 14. アダプターボード

画像データ(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を使用しています。

図15. RGB111(3bits/pixel)とRGB666(18bits/pixel)

ILI9488へのデータ送信処理

送信処理はコマンドとパラメータを送信する場合と、画像データを送信する場合で異なります。

コマンドとパラメータ送信する場合は、割り込みを使用しません。これはコマンドとパラメータでD/C制御線をH/Lと切り替える必要があるため、「送信バッファエンプティ割り込み」での送信が難いためです。画像データを送信する場合は、「送信バッファエンプティ割り込み」を使用します。

図16  送信処理フロー

ILI9488への初期化コマンド

 資料6 を解凍してできるフォルダ Demoにサンプルがあります。ここではスマホと同じような向きで表示を行います。表示色は8色です。

図17. ILI9488の初期化処理フロー

 

カラーバー表示

波形

 8色のカラーバーを表示して波形をみました。LANケーブルは15cmですが、CPU端子から液晶モジュールまでは約30cm離れています。

(注: オシロのプローブが不良でした。CLKの波形は正確ではありません。2022年11月26日)

図18  RSPI波形

図19. クロック波形とカラーバー表示

フロー

図20. カラーバー表示のフロー

プログラム

図21. ファイル一覧

図22. 使用している割り込み

ルネサス提供ファイルの修正(割り込み処理のコメント化)
本プログラムで使用する割り込み処理は、spi.cで記述するようにしました。

ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。

図23. 割り込み処理のコメント化

(ルネサス提供ファイルとは、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"