Arduinoで動くRISC-VマイコンCH32V003では,PA1とPA2は外部クロックをつなぐPinの役目もあるためかデフォルトではGPIOとして使えません。

8pinは当然として20Pinでも一般的な出力Pinなどに使いたいので,設定法を探してみました。

機材
・MPU:CH32V003J4M6 (8pin) とCH32V003F4P6 (20pin)
・Boards;CH32 MCU EVT Boards by WCH Ver. 1.0.3
・書き込み機:WCH-LinkEエミュレーター
です。


8PinのPA1とPA2の位置です。




[ 設定するレジスタ]
ArduinoではPinにクロックは供給されているようなので,設定は一つだけです。

Remap Register 1 (AFIO_PCFR1 )の第15bitにあるPA12_RMをデフォルトの””に戻します。



(CH32V003 Reference Manual V1.5 より)


とても詳しく書かれたWebページがありましたので,参考にさせて頂きました。
elchika CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること





[テストプログラム]
 
Remap レジスタは0x40010004にあります。
第15bitだけを"0"にするため, レジスタ値と0xFFFF7FFFとの&をとります。
・Pinへのクロックの供給は設定し直さなくても大丈夫でした。






[出力結果」
 上記のプログラムの出力をロジアナでみてみました。

・まずは8Pinでみてみました。



・PA1とPA2からの出力波形です。





上記のようにPA1とPA2をGPIOとして使う事ができるようになり,20pinでも同じ結果でしたV(^^)。

まだまだ分からない事だらけですが,ぼちぼちとですができる事を増やしていきたいですね。