概要
ch32vを使うときにdebug printをするまでの手順を備忘録として残します。
ch32vからprintをする方法は
- SWDIOピンからdebug print
- UARTのTXピンから print
- USBからprint
の3つがあるようです。今回はSWDIOピンからのdebug printをします。
この記事を読まなくてもここに書いてあります。
https://github.com/cnlohr/ch32fun/wiki/Installation#windows
シリアルモニタの準備
minichlinkを使います1。PlatformIOを使っている場合はplatformio.iniのupload_protocol=minichlink
とすればインストールされます。手動で入れてもいいと思います。
WindowsにWCH-LinkEを接続した状態でminichlinkを使うとポートが開けないとエラーが出ます。そこで、ch32funのinstallationにある通り、Zadigを使ってWinUSBのドライバをWCH-Link(Interface 0)が接続されているUSBポートにインストールします。
Zadigを起動してすぐはデバイス一覧が表示されていないと思うのでOptionsから"List All Devices"を選ぶと下の画像のように一覧が出てくるのでWCH-Link (Interface 0)を選んでから WinUSBをinstallします。
WCH-LinkEとch32vの接続
以下の通りに接続してください。
WCH-LinkEのピン | ch32vのピン |
---|---|
SWDIO/TMS | SWDIO |
SWCLK/TCK | SWCLK |
GND | VSS |
3V3 | VDD |
ch32vのDebug printのコード
ch32v003fun.hを使用します。
#include "ch32v003fun.h"
#include <stdio.h>
int main(){
SystemInit();
SetupDebugPrintf();
while(1)
{
printf("Hello World\n");
Delay_Ms(100);
}
}
#ifndef _FUNCONFIG_H
#define _FUNCONFIG_H
#define FUNCONF_USE_DEBUGPRINTF 1
#define FUNCONF_DEBUGPRINTF_TIMEOUT (1<<31) // Wait for a very very long time.
#endif
funconfig.hに関しては無くてもdebug printされましたが一応メモとして残します。
シリアルモニタを開く
minichlink -T
このコマンドで開けます。おそらくminichlinkへのパスが通っていないと思うのでパスを通すなり、minichlinkがあるディレクトリ上でコマンドを実行するなり、フルパスを指定するなりすればOKです。
PlatformIOでminichlinkをinstallした場合はC:\Users\[user name]\.platformio\packages\tool-minichlink\minichlink.exe
にあります。
-
pio device monitor
でシリアルモニタを開いた場合はWCH-LinkEのRX, TXに入ってきたUART信号がUSB変換されたデータが出てくるので今回のdebug printをするのには使えません。 ↩