中国製RISC-Vマイコン CH32V307V-EVT-R1 の開発環境構築とサンプルプログラムの実行
はじめに
中国の組み込み業界では西側諸国のプロセッサIP独占を打破するため, 積極的にRISC-VのプロセッサIP開発を行っています[1].
高機能な中国製RISC-Vマイコンを知るためにCH32V307V-EVT-R1の開発環境構築を行ったので, サンプルプログラムの実行までの手順をメモとして残します.
CH32V307V-EVT-R1について
CH32V307Vは32ビット 144MHz動作のRISC-Vマイコンであり, ハードウェアスタック領域と高速割り込みを備えています.
標準のRISC-Vと比較して, 割り込み応答速度が大幅に向上, 単精度浮動小数点命令セットが追加され, スタック領域, UART数, モータータイマー数が拡張されています. そして, USB2.0高速インターフェース(480Mbps)とPHYトランシーバーを内蔵しています[2].
購入方法
CH32V307VはLCSCもしくはAliExpressで購入することが出来ます.
22年5月現在のLCSCでの価格はIC単体で¥562, 開発ボードで¥1510です. 円安の影響もあってか少し割高ですが, マイコンの入手性が悪い現在でも購入できました.
データシートのダウンロード
CH32V307Vの英語版データシートは参考文献3のリンクからダウンロードできます.
電気的特性はCH32V20x_30xDS0に記載されており, 周辺機能の説明, 使用方法, レジスタ構成についてはCH32FV2x_V3xRMに記載されています.
開発環境のダウンロードとインストール
以降の内容は参考文献4の内容をベースに記載しています.
一次情報を確認したい方は参考文献4をご確認ください. また、本記事では開発環境の機能の一部分のみ紹介するので, より詳細な使用方法については参考文献5をご参照ください.
CH32V307Vは無償で利用できるMounRiver Studioで開発できます. 参考文献6のリンクから公式サイトに移動し, 下記の図の赤枠で示すリンクをクリックしてインストーラをダウンロードしてください.
解凍したフォルダに格納されているexeファイルを起動してインストールを行います.
インストールフォルダのパスにスペースが入っているとインストールに失敗するので, 特にこだわりが無い場合はインストール先はデフォルトのままにしておく事をお勧めします.
プロジェクトファイルの作成
インストール後の最初の起動時は下記の画面が表示されるので, 赤枠で示す「New MounRiver Project」を選択します.
(1)使用するマイコンのシリーズ(CH32V307)を選択します.
(2)詳細な形名(CH32V307VCT6)を選択します.
(3)Project Nameを入力します.
(4)保存するフォルダのパスを変更する場合はチェックを外し, フォルダを選択する
プログラムの作成
Lチカのサンプルプログラムを作成します.
Project ExplorerからUser→main.cを選択し, メインプログラムを表示します. 初期状態のプログラムはprintfのサンプルが記述されています.
初期状態のプログラムにGPIOポートを初期化するコードを追加します. 下記のプログラムをint main(void)より前にコピぺして下さい.
/******************************************************************************* * Function Name : GPIO_INIT * Description : Initializes GPIOA.0 * Input : None * Return : None *******************************************************************************/ void GPIO_INIT(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); }
参考文献4より引用
main関数の中にIOポートを制御するコードを追加します. 初期状態で入力されているmain関数を削除して, 下記のコードをコピペしてください.
/******************************************************************************* * Function Name : main * Description : Main program. * Input : None * Return : None *******************************************************************************/ int main(void) { u16 i=0; Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n",SystemCoreClock); GPIO_INIT(); while(1) { Delay_Ms(250); GPIO_WriteBit(GPIOE, GPIO_Pin_11, (i==0) ? (i=1) : (i=0)); GPIO_WriteBit(GPIOE, GPIO_Pin_12, (i==1) ? 0 : 1); } }
参考文献4より引用
プログラムのビルド
ビルドは下記の画像に示す部分をクリックすることで実行されます.
ビルドを実行すると下記のエラーが発生する事があります. 「Save as UTF-8」を選択してください.
ビルドが成功するとConsoleに下記の表示され, プロジェクトフォルダの下のOBJフォルダにプロジェクトファイル名のHEXファイルが生成されます.
マイコンへの書き込み
CH32V307-EVT-R1のWCH-LinkインターフェースをUSBケーブルでPCと接続し, CH32V307-EVT-R1の電源をONします.
下記の赤枠部分に示すDownloadボタンをクリックすると書き込みが開始します.
書き込みが完了するとConsoleに下記の表示されます.
動作確認のための配線
WCH社が公開している下記の回路図に記載されている通り, CH32V307V-EVT-R1にはユーザーが動作確認に使用できるLEDが2個実装されています.
LEDを使用するにはジャンパ線などを使用してLEDのピンとマイコンピンを接続する必要があります.
作成したサンプルプログラムではPE11, PE12をON/OFFさせているので, 開発ボードのPE11とLED1, PE12とLED2をジャンパ線で接続します.
配線完了後にWCH-LinkインターフェースをUSBケーブルでPCと接続し, CH32V307-EVT-R1の電源をONして動作を確認します.
補足情報
書き込み設定の変更
Download設定を変更する場合はDownloadボタン横の三角マークを選択してConfigrationをクリックしてください.
設定画面ではプログラムの削除, Verifyなどが選択できます.
おわりに
開発環境の構築が容易かつEclipseベースの統合開発環境で開発できるので非常に使い製品でした. 本記事で紹介したCH32V307は高機能な製品でしたが, 低価格版のCH32V203であればIC単体を¥100程度で購入できるので価格を重視する趣味用途にもお勧めです.
参考文献
[1] 电子电路开发学习, ‘‘RISC-V当真是中国处理器产业的最后一次机会?, ” https://mp.weixin.qq.com/s?__biz=MzUzNzk2NTMxMw==&mid=2247484055&idx=1&sn=149af2be86e491c7e0fbfb139834aa84&chksm=fadfa4f9cda82defc37ed5f51b5b5ef7d944296201e104e668cb6402e09a44a8250eb4eda10d&scene=21#wechat_redirect.
[2] openwch, ‘‘32-bit Interconnected RISC-V MCU CH32V307, ” https://github.com/openwch/ch32v307/blob/main/README.md.
[3] openwch, ‘‘Datasheet and Reference Manual, ” https://github.com/openwch/ch32v307/tree/main/Datasheet.
[4] Xy_, VeriMake, ‘‘CH32V307教程 [第一集] [开发环境-MRS], ” https://verimake.com/d/12-ch32v307-mrs.
[5] DengCJ96, ‘‘MounRiver Studio 笔记(1.IDE安装), ” https://www.bilibili.com/read/cv10971816.
[6] MounRiver Studio, ‘‘Embedded RISC-V IDE, ” http://mounriver.com/download.