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をデフォルトの”0”に戻します。
(CH32V003 Reference Manual V1.5 より)
とても詳しく書かれたWebページがありましたので,参考にさせて頂きました。
→ elchika CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること
[テストプログラム]
・Remap レジスタは0x40010004にあります。
・第15bitだけを"0"にするため, レジスタ値と0xFFFF7FFFとの&をとります。
・Pinへのクロックの供給は設定し直さなくても大丈夫でした。
[出力結果」
上記のプログラムの出力をロジアナでみてみました。
・まずは8Pinでみてみました。
・PA1とPA2からの出力波形です。
上記のようにPA1とPA2をGPIOとして使う事ができるようになり,20pinでも同じ結果でしたV(^^)。
まだまだ分からない事だらけですが,ぼちぼちとですができる事を増やしていきたいですね。
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をデフォルトの”0”に戻します。
(CH32V003 Reference Manual V1.5 より)
とても詳しく書かれたWebページがありましたので,参考にさせて頂きました。
→ elchika CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること
[テストプログラム]
・Remap レジスタは0x40010004にあります。
・第15bitだけを"0"にするため, レジスタ値と0xFFFF7FFFとの&をとります。
・Pinへのクロックの供給は設定し直さなくても大丈夫でした。
[出力結果」
上記のプログラムの出力をロジアナでみてみました。
・まずは8Pinでみてみました。
・PA1とPA2からの出力波形です。
上記のようにPA1とPA2をGPIOとして使う事ができるようになり,20pinでも同じ結果でしたV(^^)。
まだまだ分からない事だらけですが,ぼちぼちとですができる事を増やしていきたいですね。