沁恆 CH32V208(一): CH32V208WBU6 評估板上手報告和Win10環境配置

来源:https://www.cnblogs.com/milton/archive/2023/05/01/17366329.html
-Advertisement-
Play Games

CH32V208系列是沁恆32位RISC-V中比較新的一個系列, 基於青稞RISC-V4C內核, 最高144MHz主頻, 64KB SRAM,128KB Flash, 供電電壓2.5/3.3V. 這個型號的特點: 除了特有的硬體堆棧區、快速中斷入口, 片上集成了2Mbps低功耗藍牙BLE 5.3, ... ...


目錄

CH32V208

CH32V208系列是沁恆32位RISC-V中比較新的一個系列, 基於青稞RISC-V4C內核, 最高144MHz主頻, 64KB SRAM,128KB Flash, 供電電壓2.5/3.3V.

這個型號的特點: 除了特有的硬體堆棧區、快速中斷入口, 片上集成了 2Mbps低功耗藍牙BLE 5.3, 10M乙太網MAC+PHY, USB2.0全速設備+主機/設備介面, CAN控制器.

10M乙太網是帶 PHY 的, 可以直連網口, 省掉焊接LAN8720了

主要參數

  • Qingke V4C processor, up to 144MHz system clock frequency.
  • Single-cycle multiplication and hardware division.
  • 64KB SRAM, 128KB Flash.
  • Supply voltage: 2.5V/3.3V. GPIO unit is supplied independently.
  • Low-power modes: sleep/stop/standby.
  • Bluetooth Low Energy 5.3.
  • 10M Ethernet controller (MAC+PHY).
  • Power-on/power-down reset (POR/PDR), programmable voltage detector (PVD).
  • 2 amplifiers.
  • 16-channel 12-bit ADC, 16-channel TouchKey.
  • 5 timers.
  • USB2.0 full-speed host/device + device interface.
  • 4 USARTs.
  • One CAN interface (2.0B active).
  • 2 IIC interfaces, 2 SPI interfaces.
  • 53 I/O ports, can be mapped to 16 external interrupts.
  • CRC calculation unit, 96-bit unique ID.
  • Serial 2-wire debug interface.
  • Packages: LQFP64M, QFN68, QFN48, QFN28.

相關資料

硬體部分

CH32V208WBU6 評估板

這個板比較大, 尺寸8.6cm * 9.5cm, 上面集成了藍牙天線, RJ45網口, 兩個USB-A母口

  • 有電源開關, 開關是用於控制TypeC口的供電的, 如果通過SWD口供電, 這個開關無效
  • 燒錄是通過評估板右上角, 編號為4的2x5排針, 排針佈局正好和WCH-Link 的排針佈局一致
  • 三顆LED, 一顆電源指示, 兩顆未連接但是有對應的排針(LED1和LED2), 可以自己用跳線連到其他pin口方便觀察輸出

燒錄 CH32V208 可以用 WCH-Link 或 WCH-LinkE

軟體部分

開發環境

Win10下的開發環境比較簡單, 使用軟體 MounRiver, 當前版本v1.84, 可以支持沁恆全系列的RISC-V晶元. 下載地址 http://mounriver.com/download

軟體集成了代碼編輯, 編譯環境和燒錄工具. 直接安裝即可. 基於 Eclipse 開發, 需要熟悉一下 Eclipse 的快捷鍵.

註意要使用較新的版本, 舊版本不支持 CH32V208

MounRiver的使用說明參考官方專欄, 介紹得較為詳細

示例代碼

從 CH32V208 產品頁 https://www.wch.cn/products/CH32V208.html 可以找到 CH32V208 評估板說明及應用參考常式 CH32V20xEVT.ZIP

下載後, 解壓得到的目錄結構如下, 其中 PUB 下是評估板的說明和電路圖, EXAM 下是按外設區分的各個常式的子目錄

|-- PUB: 
|      |-- CH32V20x評估板說明書.pdf:CH32V20x評估板說明及工程創建說明
|      |-- CH32V20xSCH.pdf:CH32V20x評估板原理圖
|-- EXAM: 
|      |-- SRC  
|      |      |-- Core:內核系統頭文件
|      |      |-- Debug:延時函數、串口調試源文件及頭文件
|      |      |-- Ld:ld文件  
|      |      |-- Peripheral:基本外設驅動源文件及頭文件
|      |      |-- Startup:啟動文件。針對用戶使用晶元型號包含下列相應的啟動文件,同時在ch32v20x.h文件中選擇匹配晶元型號定義 
|      |      |      |-- startup_ch32v20x_D6.S:適用於CH32V203F6-CH32V203G6-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8系列
|      |      |      |-- startup_ch32v20x_D8.S:適用於CH32V203RB系列
|      |      |      |-- startup_ch32v20x_D8W.S:適用於CH32V208系列  
|      |-- ADC ADC 常式
|      |-- BLE ——僅適用於CH32V20x_D8W  
|      |-- BKP:BKP常式
|      |-- CAN  ——僅適用於CH32V20x_D6-CH32V20x_D8W
|      |-- CRC:CRC常式  
|      |-- DMA
|      |-- ETH ——僅適用於CH32V20x_D8-CH32V20x_D8W
|      |-- EXTI:外部中斷線常式
|      |-- FLASH:FLASH的擦/讀/寫,以及快速編程
|      |-- FreeRTOS:FreeRTOS移植常式  
|      |-- GPIO:GPIO常式
|      |-- HarmonyOS:HarmonyOS移植常式  
|      |-- I2C
|      |-- INT
|      |-- IAP:IAP升級常式-內置Hex轉Bin工具和IAP升級工具  
|      |-- IWDG:獨立看門狗常式
|      |-- OPA:OPA4作電壓跟隨器輸出常式
|      |-- PWR
|      |-- RCC
|      |-- RT-Thread:RT-Thread移植常式 
|      |-- RTC:日曆常式  
|      |-- SPI
|      |-- TencentOS:TencentOS移植常式       
|      |-- TIM
|      |-- TOUCHKEY:TouchKey檢測常式 
|      |-- USART
|      |-- USB
|      |-- WWDG:視窗看門狗常式

運行LED閃燈示例代碼

下麵以最簡單的GPIO示例走一遍編譯燒錄的過程

連線

開發板 ---> WCHLink, 註意不要連USB口, 如果已經通過PC的USB口連接了開發板, 就不要連WCHLink VCC, 如果連了WCHLink VCC, 就不要接USB口

  • CLK -> SWCLK
  • DIO -> SWDIO
  • GND -> GND
  • VDD -> 3V3
  • TXD -> RX (可以不連)
  • RXD -> TX (可以不連)

開發板本身

  • 連接一個LED到 PA0, 用於觀察PA0的輸出

編譯項目

下載的示例代碼解壓後, 在MounRiver中 File -> Load -> Project, 打開 EVT\EXAM\GPIO\GPIO_Toggle 目錄下的 GPIO_Toggle.wvproj

按 Shift + F7 或通過工具欄按鈕編譯即可. 編譯正常會顯示

12:08:14 **** Build of configuration obj for project GPIO_Toggle ****
make -j4 all 
   text	   data	    bss	    dec	    hex	filename
   6908	    136	   2072	   9116	   239c	GPIO_Toggle.elf

12:08:19 Build Finished. 0 errors, 0 warnings. (took 5s.11ms)

示例項目中預設的構建結果為 hex 文件, 編譯結束後在 obj 目錄下能看到 GPIO_Toggle.hex

編譯中的選項

1. 修改構建目標格式

  • 項目樹中選中當前項目
  • 菜單 Project -> Properties
  • 對話框 C/C++ Build -> Settings -> GNU RISC-V Cross Create Flash Image -> General
  • 對話框 Output file format (-O): 選擇 Raw Binary 編譯會輸出bin, Intel HEX 則會輸出 hex

2. 顯示完整編譯命令和輸出

完整編譯命令和輸出對判斷問題非常重要, 可以通過菜單 Project -> Concise Build Output Mode 打開

  • 勾選則只顯示簡單提示, 預設是勾選
  • 取消勾選, 則顯示完整編譯命令和輸出

3. 設置C編譯參數, 修改目標MCU

GPIO_Toggle 示例代碼, 使用的編譯目標MCU是 CH32V20x_D6, 在 ch32v20x.h 中的這段代碼中可以看到, 預設啟用的是 CH32V20x_D6

#if !defined(CH32V20x_D8W) && !defined(CH32V20x_D8) && !defined(CH32V20x_D6)
#define CH32V20x_D6              /* CH32V203F6-CH32V203F8-CH32V203G6-CH32V203G8-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8 */
//#define CH32V20x_D8              /* CH32V203RBT6 */
//#define CH32V20x_D8W             /* CH32V208 */

對於當前評估板應當使用 CH32V20x_D8W, 可以通過在 MounRiver 添加 GNU C 參數進行設置

  • 菜單 Project -> Properties
  • C/C++ General -> Paths and Symbols
  • #Symbols 標簽頁 -> GNU C
  • Add, 增加一項 CH32V20x_D8W, 不需要填值, 確定

返回到編輯器後, 能看到上面的代碼段已經變灰, 編譯命令中出現了對應的參數-DCH32V20x_D8W

riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized  -g -DCH32V20x_D8W -I"D:\WorkMRS\ch32v208_ws\EVT\EXAM\SRC\Debug" -I"D:\WorkMRS\ch32v208_ws\EVT\EXAM\SRC\Core" -I"D:\WorkMRS\ch32v208_ws\EVT\EXAM\GPIO\GPIO_Toggle\User" -I"D:\WorkMRS\ch32v208_ws\EVT\EXAM\SRC\Peripheral\inc" -std=gnu99 -MMD -MP -MF"User/system_ch32v20x.d" -MT"User/system_ch32v20x.o" -c -o "User/system_ch32v20x.o" "../User/system_ch32v20x.c"

下載/燒錄

通過 WCH-Link 連接開發板之後, 在 MounRiver 中通過菜單 Flash -> Configuration 可以打開下載設置

點擊第一個圖標 Query Status 查詢晶元狀態, 連接成功後底下會顯示 0000#07:48:33:283>> Query Success, 同時會顯示紅色的 Code Read-Protect Status Disabled 或綠色的 Code Read-Protect Status Enabled, 紅色的表示讀保護關閉, 這時候可以燒錄, 如果是綠色表示讀保護打開, 需要關閉後才能燒錄. 下麵 Target 中會顯示檢測到的MCU類型, 寫入開始地址 0x08000000, 以及要寫入的文件 obj\GPIO_Toggle.hex

以上無誤後, 應用保存, 按 F8 或點擊工具欄圖標燒錄, 燒錄過程輸出

------------ Begin flash process of "obj\GPIO_Toggle.hex" ------------ 
12:14:11:930 >> Current project vendor is WCH, debugger is WCH-Link

12:14:11:930 >> Attempt to open link device and upgrade firmware if necessary...
12:14:11:987 >> Link Device is CH549. Already the latest version v2.8, no need to upgrade

12:14:12:059 >> Starting to Send Chip Type...
12:14:12:102 >> Send Chip Type Success

12:14:12:102 >> Starting to Check Read-Protect Status...
12:14:12:103 >> Read-Protect Status Currently Disabled

12:14:12:103 >> Starting to Erase All...
12:14:12:242 >> Erase All Success

12:14:12:244 >> Starting to Download & Verify...
12:14:13:077 >> Download & Verify Success

12:14:13:077 >> Starting to Reset...
12:14:13:090 >> Reset Success

12:14:13:090 >> Starting to Close Link...
12:14:13:092 >> Close Link Success
---------------------------------End ---------------------------------
Operation Finished (took 1s.166ms)

燒錄成功後就能看到連接的LED開始閃爍

問題處理

WCH CMSIS-DAP 驅動不識別(黃色感嘆號)

當使用過舊版 WCH-DAPLink 或者安裝中未正常升級, 在連接DAPLink模式的 WCH-Link 後, 設備管理器顯示帶黃色警告的WCH CMSIS-DAP, 此時在 WCH-LinkUtility里是無法找到WCHLink的, 需要先安裝驅動. 沁恆並沒有單獨提供這個驅動的下載, 但是在安裝了 MounRiver 之後, 其目錄下實際上是包含了對應驅動的.

  1. 在 WCH CMSIS-DAP 上右鍵更新驅動
  2. 選擇瀏覽電腦, 搜索路徑設成 MounRiver 的安裝目錄 (預設為 C:\MounRiver), 勾選包含子文件夾
  3. 下一步, 就會自動安裝

首先電腦要能正確識別 CMSIS-DAP 模式的 WCH-Link, 如果驅動未安裝, 可以參考上一步. 在 CMSIS-DAP 模式下, WCH-Link 的 CON 燈是常亮的.

  1. 打開 WCH-LinkUtility, 點擊下方 Active WCH-Link Mode 右邊的 GET, 就能看到當前的模式為 WCH-LinkDAP-WINUSB
  2. 在模式中選擇 WCH-LinkRV, 再點擊 SET, 就會開始更新固件, 切換到 RISC-V 模式
  3. 切換完成後, CON燈常滅

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JSP 的本質原理解析:"編寫的時候是JSP,心裡想解讀的是 java 源碼" @ 每博一文案 活明白的人,一生只做好了這兩件事: 每個瞬間都充滿了選擇和承擔,就算面前是一座獨木橋,也必須選擇是前進後退,亦或是留在原地此時此刻你所經歷的一切。 這是過往無數個選擇後的結果,哪些小的選擇匯聚在了一起,最 ...
  • 一前言 題目集四主要考察的是對LocalDate,ArrayList,HashSet等Java自帶類的使用 題目集五主要考察的是對正則表達式的使用,以及對其題目集三的時間題目的進行類結構的改變 題目集六隻有一道題,主要是對題目集四的第一題進行加大難度 總的來說這幾次的題目量比前面幾次都要少,但是題目 ...
  • 構造 Socket 在【客戶端/服務端】的通信模式中,客戶端需要主動構造與伺服器連接的 Socket,構造方法有以下幾種重載形式: Socket() Socket(InetAddress address, int port) throws UnknownHostException,IOExcepti ...
  • 原文鏈接: 為什麼 Go for-range 的 value 值地址每次都一樣? 迴圈語句是一種常用的控制結構,在 Go 語言中,除了 for 關鍵字以外,還有一個 range 關鍵字,可以使用 for-range 迴圈迭代數組、切片、字元串、map 和 channel 這些數據類型。 但是在使用 ...
  • Springboot的優點 內置servlet容器,不需要在伺服器部署 tomcat。只需要將項目打成 jar 包,使用 java -jar xxx.jar一鍵式啟動項目 SpringBoot提供了starter,把常用庫聚合在一起,簡化複雜的環境配置,快速搭建spring應用環境 可以快速創建獨立 ...
  • Runtime包 GOMAXPROCS() ​ 用來設置可以並行計算的CPU核數最大值,並返回之前的值,具體使用方法上一篇有些,這裡不再贅述 Gosched() ​ 用於讓出CPU時間片,讓出當前goroutine的執行許可權,調度器安排其他等待的任務運行,併在下次某個時候從該位置恢復執行 Goexi ...
  • 在前兩篇: .NET Core部署到linux(CentOS)最全解決方案,常規篇 .NET Core部署到linux(CentOS)最全解決方案,進階篇(Supervisor+Nginx) 我們對.netcore部署到linux有了一個充分的瞭解,已經可以滿足應用要求了,這篇文章我們繼續深入... ...
  • 這一篇簡單說明 CH32V208 的片記憶體儲結構和時鐘的特點, 以及通過 SDK 中的示例代碼分析 CH32V208 的時鐘設置 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...