verylowfreq が 2023年11月09日11時08分47秒 に編集
サンプルコードを修正。
本文の変更
話題の激安RISC-V MCU、CH32Vを利用したUNO形状の自作マイコンボードを紹介します。120円のチップながらとてもパワフルで探求しがいのあるチップを、慣れ親しんだ基板形状に収めました。 BOOTHにて販売中です! 基板単品や、部品セットオプション、実装オプションもあります。 ==**[BOOTHショップ「スズの宝箱」はこちら](https://suzu3tsu.booth.pm/)**== この記事は動画の補足記事です。本記事だけでも内容はひととおりわかりますが、ぜひ動画もご覧ください! @[youtube](https://www.youtube.com/watch?v=GX-387QzcMI) ## 概要 ![Suzuduino UNO V1b](https://camo.elchika.com/e08ff09f9ecfb34ef7f5f2afb9728459606a6f8e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32376633303665652d656131352d343334662d626333342d6162343139336638333839392f64383863636439372d626162352d346663342d616339352d393231333861363264363862/) WCH社のRISC-Vマイコン、CH32V203シリーズの、CH32V203K8T6を採用した、Arduino UNO形状のプロトタイピングボードです。 | | | |---|---| | CPU | 144MHz 32bit RISC-V RV32IMAC | | FlashROM | 64KB | | RAM | 20KB | | GPIO | 22 | | Interface | I2C, SPI, UART, CAN, etc | | I/O voltage | 3.3V | 2023年9月時点では、CH32V203K8T6は秋月電子で120円で買えます。この値段にしてはとてもパワフルだと思います。もちろんRaspberry Pi PicoのRP2040もチップ単体では同価格帯ではありますが外付け部品がたくさん必要ですので、チップのみで動作できるCH32V203の安価っぷりは圧倒的です。 ++**[わたしのGitHubレポジトリ https://github.com/verylowfreq/suzuduino-uno-v1](https://github.com/verylowfreq/suzuduino-uno-v1)** に、基板の情報を置いています。部品表やサンプルプログラムもありますので、参考にしてください。++ ## 組み立て方 ![部品の例](https://camo.elchika.com/2cb40983c226e125b58d5376302a11a8058f8753/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32376633303665652d656131352d343334662d626333342d6162343139336638333839392f63633133303439662d386634652d343864312d623762652d383132623638663131313539/) ほとんどの部品はスルーホールですが、ICだけLQFP32です。0.5mmピッチですので、ちょっと難しいです。 **Type-Cコネクタは変換基板が利用できます**。ただし表面実装のパターンもありますので、腕に自信のある方は挑戦してみてください。ICと違って手作業での位置合わせは不要なので、コネクタのほうが楽という説もあります。ピンは小さいので、気をつけてしっかり温める必要はあります。 ## 開発環境 WCH社ではMounRiver Studioを案内していますが、Arduino IDE移植も進められています。 [arduino_core_ch32](https://github.com/openwch/arduino_core_ch32) ボードマネージャにURLを追加して、インストールするだけです。 書き込みは **WCH-LinkE**と**USB経由** の2通りが利用できます。 WCH-LinkEを使う場合は、**WCH-LinkUtility**で最初だけモード切替が必要です。 USB経由では、BOOT0ボタンを押しながらリセットすることで、USBダウンロードモードに遷移できます。**WCHISPStudio**で書き込めます。 ## Lチカするコード PA5ピンにLEDが接続されています。わりと一般的なArduinoコードでできます。
**追記**:初出時、下記コードでdelay()ではなくdelayMicroseconds()を利用していて、目視で点滅が確認できませんでした。
``` // Build-in LED is connected to PA5 pin. const int PIN_LED_BUILTIN = PA5; void setup() { // Initialize the pin as OUTPUT pinMode(PIN_LED_BUILTIN, OUTPUT); } void loop() { // Make the LED emitting. digitalWrite(PIN_LED_BUILTIN, HIGH);
delayMicroseconds(500);
delay(500);
// Make the LED blanking. digitalWrite(PIN_LED_BUILTIN, LOW);
delayMicroseconds(500);
delay(500);
} ``` ## 基板設計のあれこれ - 自分が設計した基板が使われている様子を見るのはとってもうれしい!! - はじめての基板の頒布でしたが、とてもうれしい。 - 販売していない "V1" 基板のエラッタ - Type-CコネクタとICのGNDの配線忘れがあった。かろうじてジャンパ線を飛ばして動作確認はできたが、なぜそうなったのか…… - 初版 "V1a" 基板のエラッタ - "RESET"ボタンと"BOOT0"ボタンの位置が逆。これは単なる確認不足。 - SMD Type-CのVBUSがポリスイッチを経由していない。回路図を間違えていた。 - GPIOピン配置の感想 - 秋月電子で取り扱っている CH32V203K8T6 32pinでは、Arduino UNOピンレイアウトにはギリギリ。BOOT0兼務のPB8ピンも引き出しているが、これは出力専用ピンなので、ちょっといまいち。どのみちピン数が足りないんだけど、どうすれば良かったのだろうか。 - Arduino UNO基板の単位 - インチ単位で設計されているので、とってもわかりずらい(メートル法の住民なので)。本家データシートだとUNO R3まではインチ・ミリの併記、UNO R4ではミリメートル単独表記なんだけど、インチベースで設計されていることには変わりなし。 ## まとめ まだまだ発展途上のチップではありますが、とてもワクワクします! 実のところ、ARM系のSTM32チップのCPUコアをRISC-Vに置き換えただけのような構造なので、情報としてはSTM32界隈のものもけっこう参考になります。 ネット上の情報はまだ少ないですが、かといって手がかりがないわけではないので、挑戦するには手ごろだと思います。