2024年3月4日月曜日

aitendoの丸形液晶(M128GC9A01A, GC9A01)をm5で試す<失敗>

追記:この後UI FLOWでこの液晶を動かそうとしたが、ライブラリを読み込むとメモリ溢れで落ちることが判明。UI FLOWは諦めて、raspberry pi picoで動かすよう方針転換。

後日、RP2040-ZERO+Thonnyでうまく動いたので、動作例が知りたい方はこちらをご覧ください。
https://matsu-log.blogspot.com/2024/03/aitendom128gc9a01a-gc9a01rp2040-zero.html

-------

aitendoの丸形液晶 M128GC9A01Aも買ったので、m5atom matrixで表示できるよう試験する。
商品リンク:https://www.aitendo.com/product/20938


この液晶、中身はGC9A01というコントローラを使ったもので、価格もサイズも手ごろで見た目も綺麗なためか、aitendoだけでなくadafruitやsparkfunなどいろいろな会社からdip化基板セットやタッチパネル、rp2040と組み合わせたセットが出ていて面白い。

■SPIとI2Cのどちらで繋ぐか?

このボードはSPIとI2Cの両方で繋げるようだが、グラフィック関係は帯域の問題からSPIを使うのがよさそう。このサイト(https://emb.macnica.co.jp/articles/8191/)で分かりやすくまとめられているが、bpsの桁が違う。SPIは50Mbpsを狙えるが、I2Cは1Mbpsとのこと。

atom liteは240MHzで、SPIは最大80MHz対応とのこと。
例えば128x128dot、フルカラー8+8+8=24bitを20Hzで更新したいとき、1フレームは128*128*3Byte=49,152Byte=48kBとなり、これを1秒に5枚転送するので、240kB/s=1,920kbps=1.875Mbpsとなる。
I2Cだと1MHzでも1Mbps未満なので、完全に帯域不足。

I2Cは帯域で劣るものの、2線で済むのが一番のメリットで、バイト単位のR/Wで十分なセンサ類と繋ぐのがよい。

■m5atomとの接続

先人のコードを参考に、どこに何を繋げばいいのか読み解いていく。
m5側はUIFLOWだとこんな名前になっているので、それぞれどれと繋げばよいかが問題。


他の液晶の例だが、https://lang-ship.com/blog/work/m5stickc-spi/を参考に何を繋げばよいか検討する。
  1. BLK … 不要 ※バックライトの制御用
  2. CS … GND ※他に繋ぐものが無ければ、L固定でOK
  3. DC … MISO ※RのみでOK
  4. RES … 任意のW ※画面リセット用
  5. SDA … MOSI ※WのみでOK
  6. SCL … SCK
  7. VCC … 3.3V
  8. GND … GND
今回は順番に以下のように接続した。
  1. BLK … n/a
  2. CS … GND
  3. DC … G22
  4. RES … G19
  5. SDA … G23
  6. SCL … G33
  7. VCC … 3.3V
  8. GND … GND
atomはRead Onlyなどで迷うことが無いので楽。
結果、ブロックの設定は次のようになる

そうこうするうちに遅くなってしまったので、続きはまた次回。

0 件のコメント:

コメントを投稿