安価なRISC-VマイコンCH32V003が秋月でも発売され,Arduino IDE で動くとの事なので試してみました。
まだまだ分からない点や問題がありますが,普通のデジタル出力までは来ましたのでその概略のメモです。
[ハードの準備]
今回手に入れた物です。
1. CH32V003J4M6 8pin SOP
2. CH32V003F4P6 20pin TSSOP
3.それぞれのピッチ変換基板
4. WCH-LinkE エミュレーター (プログラムダウンロード用)
![](https://stat.ameba.jp/user_images/20230721/21/pta55/b3/76/j/o1200107115315209673.jpg?caw=800)
8PinのMPUは1個40円,20Pinが1個50円,専用のエミュレータは750円でしたV(^^)。
ハンダ付けで変換基板に装着し,ブレッドボード上でPinをつけたところです。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/be/ce/j/o1200090315315209670.jpg?caw=800)
8PinのICの足はSOPで1.27mm間隔ですし,ATtiny202や1604などで慣れているのもあってスムーズにできました。
老眼での問題は20Pin HTSSOP 0.65mm間隔の方で,手ハンダではどうしても2,3箇所,足間にブリッジを作ってしまいます。
ブリッジ部分はもう一度ハンダを溶かして吸うか,私の場合は先細のハンダごてをブリッジ部に当てて溶けたところを掻き出しました(^^;;;;;
なんとかできて,導通テストでもショートはありませんでした(^^)。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/39/4d/j/o1280072015315209656.jpg?caw=800)
8Pinと20Pinの両方にL チカをダウンロードして実行しているところです。
電源はエミュレーターから提供しています。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/c1/c6/j/o1200078115315209669.jpg?caw=800)
[必要なソフトと準備]
・エミュレーターの設定ソフト(Windows専用)
WCH-LinkUtilityをダウンロードし、1回だけ起動して,RISC-Vモードにします。
https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html
・ボードマネージャ
Arduino IDE にCH32V用のボードマネージャを入れておきます。
https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json
☆準備と設定の参考
とても親切に書かれていて助かります。
40円RISC-Vマイコン(CH32V003)をArduino IDEでLチカをしてみました きょうのかんぱぱ
[デジタル出力のチェック]
まずはデジタル出力を試してみました。
(7/24 digitalWriteFast()を追記しました)
1. digitalWrite() での出力
普通のLチカのディレイ無し版です(^^)。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/05/5b/j/o0782044515315209666.jpg?caw=800)
概ね4uSぐらいのパルス幅で出るようです。まずまずの速さですかね。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/11/c5/j/o0727023915315209664.jpg?caw=800)
2. digitalWriteFast()での出力
STM32やATtiny202などと同様に用意されています。
Fastの場合,ピンは"PD6"(ピン名)ではなく"PD_6"のようにピン番号で指定するのが注意点ですね。
![](https://stat.ameba.jp/user_images/20230724/07/pta55/fc/c4/j/o0633035115316217173.jpg?caw=800)
500nsぐらいのパルスが出せます。
もう少し速くならないかなと思いますが,,なかなかの速度です。
![](https://stat.ameba.jp/user_images/20230724/07/pta55/f6/9b/j/o0971023415316217171.jpg?caw=800)
3.ポートコントロールでの出力
CH32V003のリファレンスマニュアルをチラ見するとESP32のように出力用のレジスタがあるようなので,試してみました。
https://www.wch-ic.com/downloads/CH32V003RM_PDF.html
これで良いのかどうかまだ分からないプログラムです(^^;;;;;;。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/0a/86/j/o0810047815315209662.jpg?caw=800)
上記プログラムのようにポートを触ると100nS幅ぐらいのパルスは出るのですが,,,,,。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/d0/3d/j/o0833025215315209660.jpg?caw=800)
このままでパラレル出力はできるでしょうが,今のところポートコントロールだけで出力コマンドをベタに連続させてもNeoPixel 系LEDのコントロールに必要な300nSとか600nSとかに加工できないのです,,,。
何かが違う,何か私が勘違いをしている,,という現状です。
いろいろと当たってみないといけませんね。求むヒント! です。
Arduino IDEでのCH32V003はATtiny202や1604系ほどはキビキビしていない感じですが,何しろ安価ですし活用できたら良いですね。
まだまだ分からない点や問題がありますが,普通のデジタル出力までは来ましたのでその概略のメモです。
[ハードの準備]
今回手に入れた物です。
1. CH32V003J4M6 8pin SOP
2. CH32V003F4P6 20pin TSSOP
3.それぞれのピッチ変換基板
4. WCH-LinkE エミュレーター (プログラムダウンロード用)
![](https://stat.ameba.jp/user_images/20230721/21/pta55/b3/76/j/o1200107115315209673.jpg?caw=800)
8PinのMPUは1個40円,20Pinが1個50円,専用のエミュレータは750円でしたV(^^)。
ハンダ付けで変換基板に装着し,ブレッドボード上でPinをつけたところです。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/be/ce/j/o1200090315315209670.jpg?caw=800)
8PinのICの足はSOPで1.27mm間隔ですし,ATtiny202や1604などで慣れているのもあってスムーズにできました。
老眼での問題は20Pin HTSSOP 0.65mm間隔の方で,手ハンダではどうしても2,3箇所,足間にブリッジを作ってしまいます。
ブリッジ部分はもう一度ハンダを溶かして吸うか,私の場合は先細のハンダごてをブリッジ部に当てて溶けたところを掻き出しました(^^;;;;;
なんとかできて,導通テストでもショートはありませんでした(^^)。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/39/4d/j/o1280072015315209656.jpg?caw=800)
8Pinと20Pinの両方にL チカをダウンロードして実行しているところです。
電源はエミュレーターから提供しています。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/c1/c6/j/o1200078115315209669.jpg?caw=800)
[必要なソフトと準備]
・エミュレーターの設定ソフト(Windows専用)
WCH-LinkUtilityをダウンロードし、1回だけ起動して,RISC-Vモードにします。
https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html
・ボードマネージャ
Arduino IDE にCH32V用のボードマネージャを入れておきます。
https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json
☆準備と設定の参考
とても親切に書かれていて助かります。
40円RISC-Vマイコン(CH32V003)をArduino IDEでLチカをしてみました きょうのかんぱぱ
[デジタル出力のチェック]
まずはデジタル出力を試してみました。
(7/24 digitalWriteFast()を追記しました)
1. digitalWrite() での出力
普通のLチカのディレイ無し版です(^^)。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/05/5b/j/o0782044515315209666.jpg?caw=800)
概ね4uSぐらいのパルス幅で出るようです。まずまずの速さですかね。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/11/c5/j/o0727023915315209664.jpg?caw=800)
2. digitalWriteFast()での出力
STM32やATtiny202などと同様に用意されています。
Fastの場合,ピンは"PD6"(ピン名)ではなく"PD_6"のようにピン番号で指定するのが注意点ですね。
![](https://stat.ameba.jp/user_images/20230724/07/pta55/fc/c4/j/o0633035115316217173.jpg?caw=800)
500nsぐらいのパルスが出せます。
もう少し速くならないかなと思いますが,,なかなかの速度です。
![](https://stat.ameba.jp/user_images/20230724/07/pta55/f6/9b/j/o0971023415316217171.jpg?caw=800)
3.ポートコントロールでの出力
CH32V003のリファレンスマニュアルをチラ見するとESP32のように出力用のレジスタがあるようなので,試してみました。
https://www.wch-ic.com/downloads/CH32V003RM_PDF.html
これで良いのかどうかまだ分からないプログラムです(^^;;;;;;。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/0a/86/j/o0810047815315209662.jpg?caw=800)
上記プログラムのようにポートを触ると100nS幅ぐらいのパルスは出るのですが,,,,,。
![](https://stat.ameba.jp/user_images/20230721/21/pta55/d0/3d/j/o0833025215315209660.jpg?caw=800)
このままでパラレル出力はできるでしょうが,今のところポートコントロールだけで出力コマンドをベタに連続させてもNeoPixel 系LEDのコントロールに必要な300nSとか600nSとかに加工できないのです,,,。
何かが違う,何か私が勘違いをしている,,という現状です。
いろいろと当たってみないといけませんね。求むヒント! です。
Arduino IDEでのCH32V003はATtiny202や1604系ほどはキビキビしていない感じですが,何しろ安価ですし活用できたら良いですね。