Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CH32Vシリーズを楽しもう(74thの場合) / enjoy ch32v series

CH32Vシリーズを楽しもう(74thの場合) / enjoy ch32v series

Suzuno32RV発売記念 スズの基板パーティ 2024-09-29
ゲストトーク
https://twitter.com/verylowfreq/status/1839142852518948913

クリック可能なスライドはこちら(Google Slide)
https://docs.google.com/presentation/d/1ktIus_RgQXSofsDz8EDW0a616kaxwzjx6HyQXOP7zBc/edit?usp=sharing

74th(Atsushi Morimoto)

September 29, 2024
Tweet

More Decks by 74th(Atsushi Morimoto)

Other Decks in How-to & DIY

Transcript

  1. Atsushi Morimoto @74th • 本職 データエンジニア・バックエンドアーキテクト • ハードウェア、マイコン知識はアマチュア • 著書

    『改訂新版 Visual Studio Code実践ガイド』 • 技術書典3-17 サークル参加 ◦ 『USB完全に理解した』(技術書典16) • M5Dialをトラックパッド化した 自作キーボードキットSparrowDial ◦ HHKB Life で紹介 『ぺかそ&びあっこが厳選! 2024年最新クセ強自作キーボード』 ◦ M5Stack Japan Creativity Contest 2024 商業アイデア賞
  2. CH32Vシリーズとは • WCH社が提供するRISC-Vマイコン • STM32シリーズと同じピン配置、機能群がSTM32F1と同様っぽい • とにかくお安い(WCH公式ストア) ◦ CH32V203C8T6: 88円/pcs(購入単位20)

    ◦ CH32X035G8U6: 54円/pcs(購入単位20) ◦ CH32V003J4M6: 21円/pcs(購入単位50) • Aliexpressに公式ショップがあって手に入りやすい • 秋月でも買える! • 安いわりに、それなりにちゃんと動く • USBデバイス/ホスト機能を持つのもある • USBデバイスのあるものは、 USB経由でプログラムを書き込めて、他のプログラマが不要
  3. CH32V003 • RV32EC (E: レジスタが少ない命令セット) • Flash: 16K、SRAM: 2K •

    10セントマイコンで、50個単位で買うと安い ◦ SOP8 21円/pcs (秋月40円) ◦ TSSOP20 30円/pcs (秋月50円) • コンデンサ1個付けとけば動作する • 書き込みに必要なピンが1つ • ちょっと組み込むだけだったら結構十分 • I2C、SPI、UART、ADCなど機能を持つ https://ja.aliexpress.com/item/ 1005005036714708.html
  4. コミュニティでCH32V003の開発環境が登場 • https://github.com/cnlohr/ch32v003fun • レジスタを直接たたくことを基本とし、 使いやすくなるようマクロが組まれている、よってプログラムが小さくなる • ユーザが多く、exampleが豊富でひとまず動くコードがからスタートできる 動くので、レジスタ操作も怖くない!! •

    利用ツール群は、パッケージマネージャ、Homebrewのgccを使い、 専用の環境構築がほぼ不要 • 書き込みCLIツール minichlink をプロジェクト内で開発 • プログラムビルド、書込、シリアルモニタまでのフローが makeコマンド一発で完結 • WCH-LinkE経由で、printfのシリアルモニタが使える • CH32V20xなどもサポート
  5. CH32V003はやはり小さい • Blink + SerialでのHello World ◦ 公式SDK: 32% (5.2/16kB)

    https://github.com/74th/test-ch32v003/tree/main/20240127-usb_keyboard-rv003usb ◦ Arduino(公式SDK使用): 59% (9.5/16kB) https://github.com/74th/test-ch32v003/tree/main/20240929-lchika-arduino ◦ ch32v003fun: 4.3% (0.70/16kB) https://github.com/74th/test-ch32v003/tree/main/20240929-lchika-ch32003fun
  6. CH32V003のextralibsも便利 • GPIOデジタル操作 ch32v003_GPIO_branchless.h ◦ GPIOの操作が簡単に。 ◦ GPIO_port_enable(GPIO_port_C); ◦ GPIO_pinMode(

    GPIOv_from_PORT_PIN(GPIO_port_C, 0), GPIO_pinMode_O_pushPull, GPIO_Speed_10MHz); ◦ GPIO_digitalWrite( GPIOv_from_PORT_PIN(GPIO_port_C, 0), high);
  7. I2Cスレーブデバイス作成も簡単 • examples/i2c_slave/i2c_slave.h を使えば、 I2Cでレジスタを読み書きする実装は2行で完結できる。 • volatile uint8_t i2c_registers[32] =

    {0x00}; • SetupI2CSlave( 0x9, // I2Cアドレス i2c_registers, // レジスタアドレス sizeof(i2c_registers), // レジスタサイズ onWrite, // ホストから書き込み後コールバック NULL, // ホストから読み込まれ後コールバック false);
  8. CH32Vシリーズの開発で便利なもの① • 公式SDKでの開発にはPlatformIOが便利 ◦ パッケージがコミュニティで運用されている https://github.com/Community-PIO-CH32V/ platform-ch32v ◦ EclipseベースのMounRiverStudioを 使わずに済む

    • 公式SDKにはサンプルコードが多数あるが、 少し残念なコード(初期化だけして使ってないとか)もある • 公式SDKや、マイコンの使い方はSTM32の解説書(右)が 便利 • 私自身はch32v003funがメインになっていて、 公式SDKはあまり使い込んでいないが、 マイコン使う作法を→の本から吸収 https://www.amazon.co.jp/dp/ 4789849864
  9. CH32Vシリーズの開発で便利なもの② • Rust製のツールが活発 ◦ wchisp: USB経由書込 ◦ wlink: WCH-Link経由書込 ▪

    現在は minichlink で用が足りることが多い ◦ バイナリ1つで、CLIで使えるので、便利 ◦ Windowsしかない公式ツールを使う必要はない
  10. 作品1 自作キーボードデバイス StickPointV • I2Cデバイスとして動作、 既存I2Cトラックボールモジュールと同じプロトコルを採用 • 自作キーボード用のファームウェアの設定を記述するだけ で、利用可能に •

    firmware: https://github.com/74th/stickpoint-firmware • 専用自作キーボードキット Sparrow60C を頒布中 RP2040 QMK Firmware CH32V 003 I2C ジョイ スティック 可変抵抗 ADC https://booth.pm/ja/items/5404009 https://booth.pm/ja/items/5525726 ※ QMK Firmware: 自作キーボード用の超機能の多くカスタマイズ可能な オープンソースファームウェア
  11. 作品2 リレーでのUSB切り替え機能をもつUSBHub • スイッチによるリレー制御に使用 • Grove I2Cによって、 リモートボタンを追加可能で、 リモートボタン側にも組み込み。 CH32V

    003 リレー1 USB1 USB2 USB3 USB4 リレー2 リレー3 リレー4 USBハブ IC CH334 USB1 USB2 USB3 USB4 SW1-4 CH32V 003 SW1-4 ホスト側 デバイス側 Grove I2C https://74th.booth.pm/items/5080690 https://github.com/74th/relay-switch-usbhub
  12. 作品3 SparrowTV • ESP32-C3採用のキーボードに IOエキスパンダ、ADCとして採用 • kicad, firmware: https://github.com/74th/tv-side-keybo ard-SparrowTV

    ESP32-C3 CH32V 003 I2C スイッチマトリクス ジョイスティック (可変抵抗) https://booth.pm/ja/items/5309546 USBキーボード エミュレータ CH9329 UART PC