ST7735のSPI TFTモジュールを使う
買ってずっと放置していましたが、ST7735ドライバーを使ったSPI-I/FのTFTモジュールを試してみました。
データシートを確認したら、ILI9340/9341とよく似ていたので、こちらで
紹介しているプログラムを試したら
あっさり動きました。
左から
2.2 inch 240x320 ILI9340
1.44 inch 128x128 ST7735S
1.44 inch 128x128 ST7735S
1.8 inch 128x160 ST7735S
TFTの解像度はtft.confに設定します。
ST7735にはST7735/ST7735S/ST7735Rの3種類のドライバーが有ります。
ST7735とST7735Sは0x04のレジスタを読み出すことで識別することができますが、reg(0x04) = 0x7C89F0で
全てST7735Sでした。
ST7735Rはそもそも初期化コードが全く違うそうですが、持っていないので分かりません。

上の写真は全て同じプログラムで動いていますが、面白いことが分かります。
・ILI9340とそれ以外では、上下の向きが逆になっています。
ST7735Sではメモリー・アクセス方向を指定する初期化コードが正しく動きません。
・1.44インチのST7735Sと1.8インチのST7735Sでは四隅の色が違います。
1.8インチのST7735ではPixelフォーマットを指定する初期化コードが正しく動きません。

上の写真はどちらも1.44インチのST7735ですが、左側のTFTは左と下に余白があることが分かります。
調べてみると、左側のTFTは左に2ドット、下に1ドットの余白があることが分かりました。
これも、コントローラ側のメモリとTFTの描画領域のマッピングが違っているからです。
tft.confにGRAMのオフセットを設定すると、表示位置を補正することができますが、左のTFTに合わせると、右のTFTに余白ができま
す。

小型のTFTは奥が深いです。
続く...