Shujima Blog

Apple製品,技術系の話をするブログ

CH32V203G6U6 + MounRiverでLチカ

環境

SW

  • Windows 11
  • MounRiver v1.90
  • WCH-Link v1.80

HW

  • WCH-Link E

CH32V203G6U6について

CH32V20xはCH32シリーズの中でも高性能な部類のマイコンであり、秋月で取り扱いのあるCH32V203K8T6(120円)が特に人気だと思います。

CH32V203G6U6(以下G6)はLCSCにて2023年9月現在唯一取り扱いのあるQFN28サイズのWCHマイコンであり、上記と多くの機能が共通ながら、フットプリントは4mm*4mmと極めて小さいのが特徴です。

私はQFNサイズのマイコンを選びたかったため、選定しました。

ただし、K8T6とはいくつかの性能が異なります。

CH32V203DS0.PDF - NanjingQinhengMicroelectronics

Flash、SRAMのサイズがそれぞれ半減しているほか、ピン数がことなるために一部I/Oも減少しています。

これらに伴い、WCHが公開しているK8T6向けのサンプルプログラムでは動かないため、注意が必要です。

サンプルプログラムの改変

プロジェクトフォルダ内のLd / Link.ldを開きます

Link.ldの一部を切り取ったものが以下です。

MEMORY
{  
/* CH32V20x_D6 - CH32V203F6-CH32V203G6-CH32V203K6-CH32V203C6 */
/*
   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K
   RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K
*/ 

/* CH32V20x_D6 - CH32V203K8-CH32V203C8-CH32V203G8-CH32V203F8 */
/**/
    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
    RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
 
  
/* CH32V20x_D8 - CH32V203RB
   CH32V20x_D8W - CH32V208x
   FLASH + RAM supports the following configuration
   FLASH-128K + RAM-64K
   FLASH-144K + RAM-48K
   FLASH-160K + RAM-32K

   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 160K
   RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
*/
}

MounRiverの画面だと色分けされず分かりにくいのですが、G6用のコードがコメントアウトされていることが分かります。 K8向けのコードをコメントアウトし、逆にG6向けのコードを復活させます。

MEMORY
{  
/* CH32V20x_D6 - CH32V203F6-CH32V203G6-CH32V203K6-CH32V203C6 */
    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K
    RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K 

/* CH32V20x_D6 - CH32V203K8-CH32V203C8-CH32V203G8-CH32V203F8 */
/*
   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
   RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
*/ 
  
/* CH32V20x_D8 - CH32V203RB
   CH32V20x_D8W - CH32V208x
   FLASH + RAM supports the following configuration
   FLASH-128K + RAM-64K
   FLASH-144K + RAM-48K
   FLASH-160K + RAM-32K

   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 160K
   RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
*/
}

その後"Rebuild"を行います。私の場合、通常のBuildでは反映されませんでした。

後は以下記事同様に(必要であればConfigulationの設定などをし)ダウンロードすればOKです。

www.shujima.work

CH32V203とMounRiver StudioでLチカ

MoonRiverかと思ってた

ameblo.jp

qiita.com

qiita.com

MounRiver Studio

472MBあり重いです。

accept, OKと選ぶだけ

サンプルのダウンロード

CH32V20xEVT.ZIP - 南京沁恒微电子股份有限公司 (マイコンのページからリンクが切れており直打ちした)

ダウンロードしてきたファイルを展開し

\EXAM\GPIO\GPIO_ToggleGPIO_Toggle.wvproj

を開きます。 この際、Explorerからファイルをクリックしてもなぜか開けず、MounRiverからLoad Project/Solutionをすると開けました。

次に、Downloadの中にあるConfigulationを押します

TargetModeの横にある Queryボタンを押すと

上記のように、"WCH-LinkRV"と出てくればOKです。

Configulationの設定は、WCH LinkEの挿抜のたびに行う必要がある場合があります

この際、私はConfigulationに接続しているハードウェアの選択肢が現れず、WCH-LinkUtilityの方でもWCH Link Eにアクセスできなくなっていることが分かりました。

この状態からの復帰は別の記事にて。

www.shujima.work

また"WCH-LinkRV"以外の文言が出てくる場合はWCH-Linkの設定が行われておらず、この先のステップに支障をきたす恐れがあります(ためしていないので何とも言えないが)。

以下の記事中のWCH-LinkUtilityの章をやれば大丈夫だと思います。

www.shujima.work

"WCH-LinkRV"が出ていることを確認したうえで、"Apply & Close"を押して閉じます。

Buildをします

正常にビルドできたようです。

ここで今一度Configulationを確認します。

WCH Linkと正しく接続できていることを確認します。

また、書き込むTarget Fileが目的のファイルであることを確認します。

特に複数のプロジェクトを開いていたりすると、まったく違うファイルを書き込もうとしていたりして、トラブルの原因になります。

Downloadボタンを押すと書き込みが行われます。

このように正常に完了すると、マイコンへの書き込みが完了し、Lチカが行われました。

WCH-LINKが認識されなくなった

  • WCH-LINK E が認識されなくなった
  • WCH-LinkUtility V1.80をインストールして使えていた
  • 当初Arduino IDEから書き込んだりできていたが、MounRiver環境に切り替えようと思い、MounRiverをインストールしたところArduino IDEでも書き込めなくなった
  • WCH-LinkUtilityでも認識されなくなった

解決策

Drv_Link\WCHLinkDrv_WHQL_S.exe

をダブルクリックして起動する。

すると瞬時に解決した。

CH32V203+Arduino IDEでLチカ

おおよその手順

  • Arduino IDEにボードマネージャをインストール

注意点

  • Macだとできませんでした。→原因調査予定

材料

回路図

WCH LinkUtilityのインストールおよびWCH LinkE内設定の書き換え

https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html 私はV1.80をダウンロードしました。

基本的にはこちらの方のままで操作を行いました(ただし、CH32V003の話なのでほんの少しだけ違う) 40円RISC-Vマイコン(CH32V003)をArduino IDEでLチカをしてみました - きょうのかんぱぱ

先ほどのリンクの方同様

  • Getを押す
  • WCH-LinkRVを選択する
  • Setを押す
  • Getを押す

の手順を踏むことで"WCH-Link is at RISC-V mode! と出てきます。

これで必要な設定は完了です。

次にターゲット側(CH32V203側)と正しく通信できているかを確認するために以下を行います(この手順を行わなくても特に問題ありません)。

  • "Series:" をCH32V20Xに設定する
  • "Query Chip Info"(左上から3番目のアイコン)を押す(私の場合1度目はアップデートを行う旨の表示「WCH need to update. go on?」が出てきたのでアップデート操作をしました。その後1分ほど待機するとアップデートが終了し、その後もう一度押すと問題なく反応しました)
  • 右上のテーブルにMCU UIDなどの情報が出れば通信ができています。

Arduino IDEにボード情報を追加する

基本的にはこの方の手順そのままで実行しました。 CH32V003をArduinoで使おう(CH32V203も) - Qiita

Arduinoのプログラムを書く

void setup() {
  // put your setup code here, to run once:
  pinMode(PB5,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(PB5,HIGH);
  delay(500);
  digitalWrite(PB5,LOW);
  delay(500);
}

ピン番号の指定は PB5PB_5 などの書式が使えるようです。

arduino_core_ch32/variants/CH32V20x/CH32V203G8/variant_CH32V203G8.h at main · openwch/arduino_core_ch32 · GitHub

このシンプルなプログラムで問題なくLチカできることを確認しました。

他のピンのLチカ

なお、今回はたまたまPB5(28ピン)を使いうまくいきましたが、他のピンについても調査しました。

データシートより

以下のプログラムを用いて、GPIOのすべてのピンをLチカさせてみます。

const int pins[32] = {PB0,PB1,PB3,PB4,PB5,PB6,PB7,PB8,PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PA8,PA9,PA10,PA11,PA12,PA13,PA14,PA15,PD0,PD1};
//X : PA15,PA13,PA14,PB8,PD2,PD3

void setup() {
  for(int i = 0; i < 26 ; i ++){
    pinMode(pins[i],OUTPUT);
  }
}

void loop() {
  for(int i = 0 ; i < 26 ; i ++ ){
    digitalWrite(pins[i],HIGH);
  }
  delay(500);
  for(int i = 0 ; i < 26 ; i ++ ){
    digitalWrite(pins[i],LOW);
  }
  delay(500);
}

結果は PA : PA13~14が機能しない PB : PB8が機能しない PD : PD0~1が機能しない

というものでした。

このうちPA13、14に関してはこちらにある関数を実行することで、ファンクションの切り替えをできました。

ただし、以降WCHからの書き込みができなくなるので、気楽に実行しないようにしましょう。

↓以下のコメントアウト部分は気軽に実行しない

const int pins[32] = {PB0,PB1,PB3,PB4,PB5,PB6,PB7,PB8,PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PA8,PA9,PA10,PA11,PA12,PA13,PA14,PA15,PD0,PD1};
//X : PA13,PA14,PB8,PD0,PD1

void setup() {
  //pinV32_DisconnectDebug(PA_13);
  //pinV32_DisconnectDebug(PA_14);
  for(int i = 0; i < 26 ; i ++){
    pinMode(pins[i],OUTPUT);

    
  }
}

void loop() {
  for(int i = 0 ; i < 26 ; i ++ ){
    digitalWrite(pins[i],HIGH);
  }
  delay(500);
  for(int i = 0 ; i < 26 ; i ++ ){
    digitalWrite(pins[i],LOW);
  }
  delay(500);
}

【2022年1月更新】Macに合うLG製4Kモニタの選び方【USB-C】

f:id:masa_flyu:20220123023501p:plain

LGはMacにこそふさわしい

LGは世界トップクラスのシェアを持つ液晶ディスプレイメーカーです。

ディスプレイの品質の高さは有名で、特に高解像度ディスプレイでは圧倒的なシェアを持っています。

Appleも,Apple Store限定のLG製ディスプレイを販売しているなど、LGのディスプレイやブランドに信頼を置いているようです。

LGはMacBookに最も合う外部ディスプレイメーカーと言って差し支えないのではないでしょうか。

さて、そんなLGのディスプレイですが、公式サイトを見ると...f:id:masa_flyu:20220106002814p:plain

4Kに絞った上でも、20種類以上の製品があります。

本記事では、そんなLGの4Kディスプレイについて,どのように点に着目して選べば良いかを調べてまとめてみました。

  • LGはMacにこそふさわしい
  • どのディスプレイを買えばいいのか?
    • 27インチ (597 x 336 mm)
      • 27UL500
      • 27UP600
      • 27UP550
    • 31.5インチ (698 x 393 mm)
      • 32UN500-W
      • 32UP550-W
    • その他
      • LG UltraFine 4K Display(Apple Store 限定 23.7インチ)
      • 43UD79T (42.5インチ)
  • 性能一覧
    • 表の順番
    • 型番の法則
    • 方式
      • VA方式
      • IPS方式
    • HDR(明るさ)
      • HDR10
      • HDR400, 600
    • 応答速度
    • HDMI / DP
    • USB-C
    • 縦向
    • 校正
    • PBP / PIP
  • 私の「LG 27UL500-W」購入体験記(2019年時点)
  • 私のおすすめ
    • 提案1: USB Type-Cもついた超コスパディスプレイ 27UP550
    • 提案2: HDR400や高演色規格 DCI-P3 95%対応を掲げる高性能ディスプレイ
  • おまけ UHD-BDの再生環境
続きを読む
当ブログをご利用いただく際には免責事項をお読みください。