Seeed Studio XIAO用円形ディスプレイをLovyanGFXで使う

スイッチサイエンスでSeeed StudioのXIAO用ディスプレイを買いました。

Seeed Studio XIAO用円形ディスプレイ - 1.28インチwww.switch-science.com

タッチパネルだけじゃなくRTCやTFカードスロットなどもついており、裏にXIAOが接続できるのでコンパクトで組み込みも楽そうです。

丁寧なGetting Startedも用意されており、LVGLを使ったサンプルを動かすところまであっという間にできちゃいます。

wiki.seeedstudio.com

このままでも色々作れそうですが、やっぱりLovyanGFXを使いたいのでポーティングしておきます。このLCDを使うその時のために・・

仕様

私の探し方が悪いのかパネル部分のデータシートが見当たらないので、ソースコードから使い方を調べます。

LCD

TFT_eSPI ライブラリの Setup66_Seeed_XIAO_Round.h でドライバやポートの設定がわかります。

github.com

こちらをみる限りドライバは GC9A01 のようです。これはLovyanGFXで対応されているので楽チンです。

ポートの接続は以下の通り。

ピン(XIAO) GPIO
SCLK D8 7
MISO D9 8
MOSI D10 9
CS D1 2
DC D3 4
BL D6 43
RST N.C. N.C.

SPIのクロックは

クロック
書き込み 40MHz
読み込み 20MHz

タッチパネル

タッチパネルの実装はここから読み取れます。

github.com

定数や関数名をみる限り CHSC6xというデバイスなんでしょうか・・? データシート探したけど見つからなかったのでコードの内容だけを頼りに実装します。

ピン(XIAO) GPIO
SDA D4 5
SCL D5 6
INT D7 44

INTのピンがLOWに落ちた時がタッチ状態で、I2Cで座標を取得します。
仕様はよくわかりませんが、 アドレス 0x2E から 5バイトの読み込みを行い、1バイト目が1の時に座標を取得しています。
3バイト目がX座標、4バイト目がY座標になります。

実装

これらの仕様を実装した例です。
円形のディスプレイなので、タッチしてグリグリすると画像が回るサンプルになっています。
チャタ除去で10msの待ちを入れてますが滑らかに動いてます。さすがLovyanGFXですね!

ソースコード