ESP-IDFを使ってみる
SPIのTFT
こちらで
M5StackのTFTライブラリを公開していますが、汎用ライブラリとし て作ったので、
以下のドライバーを使っているTFTモジュールでも利用することができます。
ILI9225
ILI9225G
ILI9340
ILI9341
ST7796
ST7735


2.8インチ 230x320 ILI9341
2.4インチ 230x320 ILI9341
どちらも全く同じ制御コードです。
左が2.8インチ 右が2.4インチです。

2.2インチ 230x320 ILI9340
ILI9341と全く同じ制御コードで動きます。
左が2.2インチのILI9340 右が2.4インチのILI9341です。

2.0インチ 176x220 ILI9225
ILI9341とは全く違う制御コードです。
フラットケーブルとピンの取り付け位置が違うので、ILI9341と比べて天地が逆さまになります。
左が2.2インチのILI9340 右が2.0インチのILI9225です。

2.0インチ 176x220 ILI9225G
ILI9225とは初期化コードが違います。
ILI9225と比べて少し遅いです。
左が2.0インチのILI9225G 右が2.0インチのILI9225です。

1.8インチ 128x160 ST7735
ILI9341とほとんど同じ制御コードで動きます。
ST7735には(私の知る限り)ST7735/ST7735S/ST7735Rの3種類のドライバーが有ります。
ST7735とST7735Sは0x04のレジスタを読み出すことで識別することができます。
手元のST7735の0x04のレジスターはreg(0x04) = 0x7C89F0で、全てST7735Sでした。
このモジュールはPixelのフィルター設定値が他のモジュールと違うので左上の赤と青の色が反転します。
左が1.8インチのST7735 右が2.0インチのILI9225です。
どちらも同じ基盤を使って実装されています。

フィルターの指定をRGBフォーマットで指定すると正しい色になります。

1.8インチ 128x160 ST7735 OFFSET有り
どちらのモジュールもよく似ていますが、同じ設定でビルドすると右側のモジュールは画面の左端と上端に余白ができます。
フラットケーブルとピンの取り付け位置が違うので、天地が逆さまになります。

ST7735は最大132x162までの解像度をサポートしてますが、これ以下の解像度のTFTではGRAMのX=0 Y=0からではなく、
GRAMにオフセットが加えられていることがよくあります。
調べてみると、X=2 Y=1からGRAMが使われています。
フィルターの指定と同時に、XとYのオフセットを指定することで正しく表示できるようになります。

1.8インチ 128x160 ST7735 BackLight制御有り
どちらのモジュールもよく似ていますが、右側のモジュールはLEDの+−ピンが有ります。

1.8インチ 128x160 ST7735 BackLight制御有り
フラットーケーブルの取り付け位置が違うだけで同じモジュールです。

1.77インチ 128x160 ST7735
どちらのモジュールもよく似ていますが、左のモジュールにはオフセットが有りません。

1.44インチ 128x128 ST7735
このモジュールのPixelの色フィルターはILI9340と同じBGRフォーマットです。
左が1.8インチ 右が1.44インチです

1.44インチ 128x128 ST7735 OFFSET有り
どちらのモジュールもよく似ていますが、同じ設定でビルドすると左側のモジュールは画面の右端と下端に余白ができます。

menuconfigで解像度同時に、XとYのオフセットを指定することで正しく表示できるようになります。

0.96インチ 80x160 ST7735
X方向に26ドット、Y方向に1ドットのオフセットを加えて正しい位置となりましたが、
色が完全に反転しています。

menuconfigで解像度、XとYのオフセットに加え、反転を有効にすることで正しい色になります。

IPSなので比較的きれいです。
隣の1.44インチのTFTの半分ほどの大きさしかありませんが、長辺方向のドット数が160ドットあるので、こちらの方がはっきりと見えます。

1.3インチ 240x240 ST7789VW
他のモジュールはSPI MODE0で動きますが、このモジュールはなぜかSPI MODE2でしか動きません。
そのためソースは(今のところ)マージせず、こちらで公開していま
す。
裏面のマーキングは2種類ありますが、どちらも同じものです。
このライブラリを利用したユーザがデモビデオを
作って公開してくれました。

IPSなので非常にきれいです。

LILYGO TTGO 1.14インチ 135x240 ST7789
最近よく見かけるLILYGO TTGOブランドの開発ボードで、1.14インチのST7789が実装されています。
このボードのUSBコネクターはType-Cです。
Type-Cを採用する開発ボードが増えてきました。

LILYGO TTGO T8 ESP32-S2 135x240 ST7789
ESP32-S2を使ったLILYGO TTGOブランドの開発ボードで、1.14インチのST7789が実装されています。
このボードのUSBコネクターもType-Cです。

続く...