ArduinoでCH32X035のi2c


CH32X035はWCH社の比較的新しいマイコンで、安いのにflashやメモリもそれなりにあり、USBも使える。 このマイコン用にArduinoからI2Cを使おうとしたら、少し苦労したので、その解決法について書きたい。

ArduinoでCH32マイコンを使うには、WCHサポートをインストールする必要がある。 それを使うと、CH32X035も使えるようになるのだが、I2Cなどはまだ対応できていないようで、そのままではエラーが出て使うことが出来無かった。

WCHサポートの最新のリリースは2023年12月に出たもので、それ以降はリリースされていないものの、それ以降にも若干の更新が行われている。 いくつかのファイルを最新版に入れ替えると、CH32X035でもWireを使ったプログラムのコンパイルができることが分かった。 入れ替える必要のあるファイルは、 arduino_core_ch32/variants/CH32X035/CH32X035G8U/ のvariant_CH32X035G8U.hとPeripheralPins.c、 arduino_core_ch32/cores/arduino/ch32/ のPinNamesTypes.hとanalog.cppとanalog.hとtimer.cとtimer.h である。 これらで ~/.arduino15/packages/WCH/hardware/ch32v/1.0.4の 対応するファイルを上書きするのである。 動作は確認していないが、きっと動くと信じることにする。

Toneなども最新のリリースには無いので、同じところから最新版を取って来る必要があった。 もしかすると、すべてのファイルをgithub上の最新版に入れ替えた方が良いのかも知れない。 ch32x035については、まだusbをArduinoから使えていないので、その方法を探そうと思う。