1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CH32V203をI/O担当MCUとして使ってみる(自作ポケコンを例に)

Posted at

ESP32-S3をコアとしたポケコンを自作したのですが、そのときにI/O担当MCUとしてCH32V203を使ってみました。

自作のポケットコンピューター

この記事はアドベントカレンダー「CH32V203」の10日目です。

制作したポケコンの概要

クラシックな横長の筐体を意識しつつ、中身はモダンに、というのをテーマにして制作しました。

  • メインMCU: ESP32-S3 240MHz DualCore
    • ROM 8MB / RAM 520KB
    • WiFi, Bluetooth
  • サブMCU: CH32V203C8T6
  • 外部コネクタ: x8 GPIO, x1 UART, x1 I2C
  • 電源: x2 単3型電池
  • プログラミング言語: MicroPython
  • ディスプレイ: モノクロキャラクタ液晶 20文字4行
  • キーボード: 独自配列62キー

ESP32-S3にはMicroPythonのファームウェアを書き込み、テキストエディタなどの環境はMicroPythonプログラムとして実装しています。

CH32V203には独自開発のファームウェアを書き込んでいます。

詳細は技術書展19にて頒布した「令和のポケコン製作記」にて解説しています。

自作ポケコンでのCH32V203の役割

I/O担当MCUとして、キーボード読み取りとディスプレイの制御を担いました。高速な動作が必要なわけではないので、メインMCUとはI2Cで通信しています。

キーボードは62キーのキーマトリクスを構成しています。オーソドックスなマトリクス構成です。読み取りは簡単ですが、とにかくピン数がたくさん必要です。

ディスプレイはHD44780互換のパラレルインターフェースです。データバスを4bitにしても合計6ピンは必要となります。

ESP32-S3へ直接つなぐには必要ピン数が多いこと、制御の役割分担を明確にしてメインMCUでの処理を簡潔にしたかったため、細かい実装はCH32V203側へ集約する構成としました。

CH32V203のファームウェアのソースコードはこちら。

まとめ

今回の構成により、MicroPythonの動くESP32-S3ではI2Cを通じてキーボードの読み取り結果だけを受け取り、ディスプレイで表示したい文字列を送信するだけ、というシンプルなコードで書けるようになりました。

このくらいのタスクであればCH32V203である必然性はさほどないのですが、今後の展開としてUSBキーボードを接続して使えるようにすることを考えています。この場合はUSBホスト機能が必要になるので、CH32V203の特長を生かせるものと思います。(USB通信はCH32V203で完結して、メインMCUとはI2C通信のまま)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?