YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

【組込みRust】RustでM5Stamp C3U MateからLCD表示する

はじめに

M5Stamp C3U MateにLCDを接続して、フェリス*1を表示させました。

フェリス

環境

www.yu2ta7ka-emdded.com
の環境とハード/ソフト共に同じです。
ここにST7735のLCDを接続します。


サンプルコード

ST7735のクレートがあるため、利用します。さらにサンプルコードもあるため、以下をクローンして利用します。
github.com

初期値の修正

サンプルコードをそのまま利用すると、表示範囲と色に誤りがありました。そのため、以下の修正をしています。本件は、issueで連絡しています。

--- a/esp32c3-examples/examples/draw_ferris.rs
+++ b/esp32c3-examples/examples/draw_ferris.rs
@@ -35,10 +35,10 @@ fn main() -> Result<()> {
     let rst = PinDriver::output(peripherals.pins.gpio3)? ;
     let dc = PinDriver::output(peripherals.pins.gpio4)? ;

- let rgb = false;
+ let rgb = true;
     let inverted = false;
     let width = 128;
- let height = 128;
+ let height = 160;

ビルドコマンド

以下でビルドおよびFWの書き込みを行います。

git clone https://github.com/sajattack/st7735-lcd-examples.git
cd st7735-lcd-examples/esp32c3-examples
cargo espflash flash --example draw_ferris

配線

GithubのREADME.mdに記載の通りに配線します。ただし、LEDは3.3Vに配線する必要があります。そうしないとLCDが点灯しません。このLED配線はLCDのバックライトへの給電のようです。動作確認用のLEDというわけではありません。

ST7735R Pin M5Stamp C3U Pin
LED 3V3
SCL/SCK gpio8
SDA/MOSI/SI gpio10
DC/A0 gpio4
RES/RST gpio3
TCS/CS GND
GND GND
VCC/3V3 3V3

動作確認


いくらか手こずりましたが、無事に表示ができました。

おわりに

2023年5月にパソコンが故障して、新しいPCを急遽購入して、ようやくここまで戻ってこれました。もう少しLCDクレートをいじったら、マイク接続して音データ取得してFFTさせたいなと思っています。

気になっていること

上記のように期待動作はしているのですが、cargo espflash flash でFW書き込み時にしょっちゅうタイムアウトで書き込み失敗が発生します。数度試行すると成功するので、事なきを得ていますが、気になっています。。何かアドバイスお持ちの方いらっしゃたらコメント/ご連絡いただけると幸いです。


*1:フェリスはRustコミュニティの非公式マスコットです。