by @ctes091x
文化祭後の代休に秋月電子通商に赴き、その場で一目惚れして(?)購入した32ビットRISC-VマイコンCH32V003J4M6でLチカをしました。
https://www.wch-ic.com/products/WCH-Link.html からWCH-LinkUtility.ZIP
をダウンロードして展開します。直下のWCH-Linkutility.exe
の初回起動時にデバイスドライバを含むなんか色々なモノが入ります。
PCのUSBポートにWCH-LinkEエミュレータを挿入し、Connect WCH-Link
ボタンを押すとWCH-LinkEが認識され、状態が確認できるようになります。購入時の状態ではARM用となっているためこれを変更する必要があります。画面下部のプルダウンでWCH-LinkRV
を選択しSet
ボタンを押下すると設定が変更され、エミュレータ胴部の青ランプが消えます。
Query Chip info
ボタンを押すと、エミュレータに接続されているマイコンチップの情報を取得できるようです。
Preferences
->Additional Board Manager
に https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json を追加します。
ボードマネージャーでch32
と検索、出てきたものをインストールします。
マイコンをDIP変換基板に実装します。ブリッジしても気にせず半田を流し込み、後から吸い取り線で過剰分を除去するという方法をとりました。
ピンヘッダの実装はブレッドボードに刺して行いました。もたつくとブレッドボードが溶けるとも噂されていましたが無事乗り切りました。
エミュレータから引き出した3V3
、GND
、SWDIO
をマイコン本体のピンアサインにしたがって配線します。
1番ピンにLEDと抵抗を接続し、マイコンの出力によってLEDが光るようにします。
//TODO: ブレッドボードの写真と回路図をそのうち入れる!!
https://kanpapa.com/today/2023/06/blink-risc-v-ch32v003-arduino.html のプログラムを、delay時間を変更した上で使用しました。
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(PD6, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(PD6, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(PD6, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second
}
Arduinoに書き込む場合と同様に検証を行った上でコンパイル&書き込みを行います。
書き込みが完了するとプログラムの実行が開始され、無事にLEDが点滅してくれました。
Lチカに成功したあとシリアルモニタへのHello, world!
の出力も行おうとしましたが、何か必要な手順を怠ったためかチップを1つ殺してしまったようです。
文化祭後の片付けで倉庫内の物の配置がいくらか変わってしまったので、更なる発掘調査の必要がありそうです。暇な方がいたら手伝ってください。HAKKOの半田ごてを見つけてくれたら泣いて喜びます。
活動報告書の執筆はこれが初めてですが、正直ボリュームが大きすぎたかなと反省しています。こんなものを活動後に毎回書ける気がしませんが、きっと他の部員の皆様もなにか書いてくれることでしょう。いつか蓄積された怪文書活動報告書がなんかの役に立つことを祈っています。