概要
これまでデバッカーが一体になっているCH32V103を利用していましたが、USB PDに対応しているCH32X035を触ってみました。WCH-LinkEを利用して接続するため若干面倒になります。
CH32X035とは?
WCH社が開発しているRISC-V搭載のチップになります。いろいろな種類があるのですがCH32X035は低速なのですが、USB PDに対応しているモデルとなります。
開発ボードは何種類かあるのですが上記のCH32X035C8T6を利用しています。本体のみで900円ぐらいで、書き込み機のWCH-LinkEをセットして送料込で2,000円ぐらいになります。
WCHの開発ボードの特徴として、どこに接続すればよいのかまったくわからないことです。開発ボードにUSB端子がありますが、USBホストやUSB PDなどに利用するためのものであり、開発環境からは書き込みには利用できません。
SWDを利用するので接続自体は楽なのですが、どこにSWDを接続するのかが書いてありません。まずはデータシートを確認して接続先を探すところからが必要になります。
また、USB端子からもWCHISPToolを使ってプログラムを書き込むことが可能です。D+(PC17)をVDDに接続した状態でパソコンとUSB接続をしてからD+(PC17)の接続をはずすことでUSBからのプログラム転送モードで起動します。ただし、転送するプログラムのバイナリを準備して、ツールから手でアップする形になるのでちょっと面倒です。可能であればWCH-LinkEを使うことをおすすめします。
詳しい書き込み方法はEVTの中に入っているPDFに書いてあります。USB_P(PC17)をHIGHにしてから起動することでダウンロードモードになって、USBかシリアルでプログラムを転送できます。
データシートの確保
中国語サイト
中国語サイトの方が情報が多いので、まずはこちらを確認します。
英語サイト
英語サイトも確認をして、情報がある場合には英語版のデータシートの方が私はわかりやすくて好きです。ただ、英語でよくわからないときには中国語のデータシートを見るとより理解できるところもあると思います。
SWD接続先の確認
まずは図1のSystem Block Diagramから左上にある文字を確認します。微妙にシリーズによってここの名称が違います。
通常はSWCLKとSWDIOのはずですが、CH32V003だとSWIOになります。
SWCLKで検索してもピン番号がわかりません。上記がひっかかりまして、DCKとDIOの名称を使っていることがわかります。他のシリーズだとそのままSWCLKとSWDIOですがCH32X035は違う名前を使っていました。
DCKとDIOを検索することでSWCLKがPC19、SWDIOがPC18なのがわかりました。
シリアル接続先を探す
またSystem Block Diagramを確認します。CH32シリーズは非同期のみのUARTではなく、非同期と同期の両方に対応できるUSARTが利用できます。システムブロック図をみるとUSART1から4までの4つありますね。デフォルトは一番番号の若い1から利用されるはずです。USART1のTXとRXを探します。USART1で検索してもピンがわかりません。。。
USARTで検索するとまたしても上記がひっかかりました。TX2がUSART2_TXなので、TX1とRX1を探せば良さそうですね。
TX1はPB10、RX1はPB11のようです。一番左側に数字が並んでいますが、パッケージ別のピン番号です。-でピンがないパッケージもありますね。
上記がパッケージ一覧なので、右から2つのパッケージではTX1とRX1が使えませんね。ピン番号は変更できますが、設定には制限があります。TX1のかわりに使えるピンはTX1_もしくはTX1_2かTX1_3などと書かれています。
ただし、TX1とTX1_2が同じピンです。同じようにRX1とRX1_2が同じピンなのでかわりには使えません。
そのためTX1_3がかわりに選択可能な唯一のピンになります。すべてのパッケージで使えてPA7なのがわかります。
RX_3はPB2に設定されています。しかしながら右から2つのパッケージではピンがありません。QFN20はTX1_3とRX1を利用する必要があり、TSSOP20の場合にはUSART1自体が利用できません。この辺はハマりそうなので注意が必要ですね。
WCH-LinkEとの接続
CH32X035 | WCH-LinkE |
---|---|
PC19(DCK/SWCLK) | SWCLK |
PC18(DIO/SWDIO) | SWDIO |
PB10(TX) | RX |
PB11(RX) | TX |
VCC | 3V3 |
GND | GND |
上記で配線を行いました。CH32X035の電源は3.3Vか5Vなので、5Vを接続しても動くはずです。
動作実験
基本はCH32V103とかわりません。Arduinoを利用して動作実験をしてみました。ただ、WCH-LinkEのバージョンが古い場合があるのでWCH-LinkUtilityか、MounRiverで接続までためすと更新ができる場合があります。CH32V103も私のは古かったので更新しておきました。
まとめ
この開発ボードは接続先がわからないので、自分で調べて上記のように開発ボードに貼り付けておきました。また、パッケージ違いによりUSART1が利用できないものがあったりと、ちょっと注意が必要そうなボードになります。
使い勝手を考えるとWCH-LinkEを接続するよりは、最初から内蔵しているタイプの開発ボードがやっぱり便利に感じました。
コメント