WCH社のマイコンで単純なUSBデバイスを作るときに,どのICを使うと便利かを考えてみた.
まず,WCH社の代表的なマイコンは,CH55xシリーズとCH32シリーズに大きく分けられる.
これらはCPUのコアなどに違いがあるのだが,USBデバイスを作るハードという観点では,電源の違いが大きい.
CH55xシリーズでは,コンデンサを付ければ3.3Vを作ってくれるので,ピンが一つ減ってしまうが,マイコン以外に余分な部品無しでUSBを扱える.
一方,CH32シリーズでは,USBの5Vから三端子レギュレータなどで3.3Vを作って,それをマイコンの電源として使わなければならない.
秋月で入手可能なWCH社の安価なICについて,USBを使う時の機能などについて比較して,表にまとめてみた.
ピン数の少ないものは省いたが,似た型番のものとほぼ同じ性能と考えれば良い.
データシートなどを見て,まとめたものなので,ミスなどはあるかもしれないが,ご容赦いただきたい.
このpin数のところではUSBのデータ線の2本を引いてある.
この表の中のデータ以外にも,細かい違いもあるので,私が理解している範囲で説明したい.
| IC | CH552T | CH559T | CH559L | CH32V203K8T6 | CH32V305FBP6 | CH32V003F4P6
|
| 価格(円) | 70 | 180 | 150 | 120 | 250 | 50
|
| pin数 | 20 | 20 | 48 | 32 | 20 | 20
|
| GPIO数 | 16-2 | 16-2 | 40 | 26-2 | 17-2 | 18-2
|
| flash | 16k | 64k | 64k | 64k | 128k | 16k
|
| RAM | 256+1k | 256+6k | 256+6k | 20k | 32k | 2k
|
| default clock | 6M | 12M | 12M | 8M | 8M | 24M
|
| USB version | 2.0FS | 2.0FS | 2.0FS | 2.0FS | 2.0HS | 1.1LS
|
| EP番号 | 0-4 | 0-4 | 0-4 | 0-15 | 0-15 | 0-2?
|
| EP size | 64 | 64 | 64 | 合計512 | 1024 | 8?
|
先日,CH552を使ってUSBデバイスを作ってみたが,ICとコンデンサ二つとUSBコネクタだけでUSB機器が作れて,クセはあるが有用なICだと感じた.
同じCH55xには,より高性能なCH559もあり,ほぼ同様の使い方ができるだろう.
これらのマイコンは,MCS51と互換性のあるコアを使っており,フリーのコンパイラが限定されるために,C言語は使えるが,C++が使えない.
Arduinoでは,ch55xduinoを組み込むことで使うことができる.
32bitマイコンであるCH32では,高性能なものはUSBを扱う機能が組み込まれている.
最も安価なCH32V003では,それ自体にはUSBを扱う機能は無いのだが,rv003usbを使うとLow SpeedでUSBを使えるようになる.
CH32V003F4P6については,rv003usbを使う場合について表中に書いてあるが,まだ理解できていない部分も多いので,間違っているかも知れない.
これらのマイコンは,CH32Vサポートを組み込むと,Arduinoからも使えるようになる.
当然,C++も使える.
特に,USB機能のあるマイコンは,TinyUSBライブラリを使ってプログラムすることができる.
まとめると,その目的に応じて,以下のようにマイコンを選択すると良いと思う.
安く少ない部品点数でUSBデバイスを作りたいときには,CH55xをch55xduinoから使うと良いだろう.
プログラムにはコア特有のクセがあり,C言語で書かないといけないが,モードを切り替えればUSBからプログラムを書き込めるので,楽である.
とにかく安く作りたいときには,CH32V003+rv003usbが選択肢として考えられる.
コンパイル環境を整えたり,rv003usbをある程度理解する必要があるが,Low Speedで良い場合には十分に使えると思う.
そうでなければ,USB機能のあるCH32Vを使うと良いだろう.
ArduinoでのTinyUSBの使い方に関する文章が少ないが,例を参考にすれば,比較的短いコードで,プログラムを書くことができる.
raspberry pi picoの搭載されているRP2040やRP2350も,非常に安価に売られていることに気がついた.
このICはUSB1.1のLow Speedには対応しているらしいが,リードピンの無いパッケージなので半田付けが非常に難しいらしい.
一方,このICを搭載したマイコンボードとしては,raspberry pi picoはサイズが大きいのでこれまで使おうとは思っていなかったが,非常に小型のRP2040-ZeroやRP2350-Zeroというものも発売されている.
小型のマイコンボードなら,今後使う候補として考えていこうと思う.