沁恆CH32F103C8T6的開發和燒錄配置說明
- 2022 年 1 月 24 日
- 筆記
- CH32, Mobile/Embed, STM32
概述
CH32F1系列是沁恒生產的32位Cortex-M3 MCU, 片上集成了時鐘安全機制、多級電源管理、 通用DMA控制器等. 此系列具有 2 路 USB2.0接口、多通道 TouchKey、 12 位 DAC 轉換模塊, 多通道 12 位 ADC、 多組定時器、 CAN 通訊控制器、 I2C/USART/SPI 等豐富的外設資源.
- 與STM32F103系列芯片相比, 管腳和寄存器兼容, 增加了USB功能, 有2個USB, 一個Host, 一個Device, 增加了DAC, 供電兼容5V
- Flash下載算法和內部BootLoader和STM32不兼容, 需要使用沁恆提供的算法, 或者使用沁恆的下載軟件通過串口和USB下載.
產品特點
- Cortex-M3內核, 72MHz系統主頻
- 單周期乘法和硬件除法
- 20KB SRAM, 64KB CodeFlash
- 供電範圍: 2.7V-5.5V, GPIO同步供電電壓
- 多種低功耗模式: 睡眠/停止/待機
- 上電/斷電複位(POR/PDR)
- 可編程電壓監測器(PVD)
- 7通道DMA控制器
- 12位模數轉換ADC, 1us轉換時間
- 16路TouchKey通道檢測
- 12位數模轉換DAC
- 7個定時器
- 1個USB2.0 FullSpeed主機/設備接口(全速和低速)
- 1個USB2.0 FullSpeed設備接口(全速和低速)
- 1個CAN控制器(2.0B主動)
- 2個I2C接口(支持SMBus/PMBus)
- 3個USART接口
- 2個SPI接口(支持Master和Slave模式)
- 51個I/O口, 所有IO口都可以映射到16個外部中斷
- CRC計算單元, 96位芯片唯一ID
- 串行單線調試(SWD)接口
- 封裝形式: LQFP64M、LQFP48、QFN48
Keil MDK 開發環境配置
1. 器件庫代碼示例和工具下載
- 下載WCH的EVT包, EVT包中帶了CH32F103的器件包和演示代碼
//www.wch.cn/downloads/CH32F103EVT_ZIP.html - 下載ISP下載工具
//www.wch.cn/downloads/WCHISPTool_Setup_exe.html
2. 在Keil MDK中添加器件
- 打開Keil MDK, 點擊菜單 Project -> Manage -> Pack Installer
- 等打開的窗口載入完畢, 點擊 File -> Import , 選擇Keil.WCH32F1xx_DFP.1.0.1.pack
- 完成後, 可以在Device Tree上看到 WCH 以及下面的 4 個型號
3. 導入示例項目
EVT包中, EXAM目錄下是各個外設的演示代碼, 如果要複製到你的工作目錄, 務必將 EXAM/SRC 這個目錄也複製過去, 在工作目錄中保持這個結構
├─GPIO
│ └─GPIO_Toggle
└─SRC
├─CMSIS
├─Debug
├─Startup
├─StdPeriphDriver
│ ├─inc
│ └─src
└─USBLIB
├─CONFIG
└─USB-Driver
├─inc
└─src
通過Keil MDK的 Project -> Open Project 打開 CH32F10x.uvprojx 文件打開示例項目. 如果左側文件樹沒有顯示黃三角的警告, 文件載入正常, 就可以編譯了.
4. 修改GPIO_Toggle為板載LED(對應C13)的閃燈
將main.c代碼替換為以下內容, 代碼和STM32F103幾乎是一樣的
#include "debug.h"
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
GPIO_Toggle_INIT();
printf("SystemClk:%d\r\n", SystemCoreClock);
printf("GPIO Toggle TEST\r\n");
while(1)
{
Delay_Ms(250);
PCout(13) ^= (1<<0);
}
}
燒錄/下載
CH32F103 有三種程序下載方式, 分別為:ST-LINK下載, 串口下載與USB下載
通過ST-link下載
- 將開發板通過ST-link連上電腦
- 在Keil MDK中, 點擊項目配置圖標, 打開項目選項, 切換到Debug標籤
- 在Use中選擇 ST-Link Debuger
- 點擊右側的 Settings, 在打開的對話框中, Target Com要選擇SW, 此時右側的SW Device, 應該能看到這個ST-Link的信息, IDCODE為0x2Bxxxxx, Device Name為 ARM CoreSight SW-DP 之類的設備名
- 在上面打開的對話框中, 切換到Flash Download選項, 如果下面的Programming Algorithm中, 不是CH32F1xx Flash, 需要點擊下面的add增加算法, 選擇CH32F1xx Flash
- 還是這個對話框, 記得勾選 Reset and Run選項
- OK保存
之後, 和STM32的用法一樣, 點擊F8就可以直接下載
串口下載
1. 硬件連接
Rx -> A9
Tx -> A10
GND –> GND
VCC –> 3V3
2. BOOT0設置
跳線BOOT0設置為高電平
3. 使用軟件 WCHISPTool 下載
- 下載方式: 選擇串口
- 使能USB內部上拉電阻: 如果usb有上拉電阻可以不勾選
- 選擇下載串口
- 選擇要下載的HEX或者bin文件
- 點擊下載
USB下載
1. 硬件連接
CH32F103有2個USB口, 一個是主機USB, 一個是設備USB, 分別對應不同的管腳
HUSB
PB7 -> D+
PB6 -> D-
USB
PA12 -> D+
PA11 -> D-
軟件默認下載使用HUSB, 可以用一個USB轉Dip的小模塊和開發板連接
2. BOOT0設置
跳線BOOT0設置為高電平
3. 使用軟件 WCHISPTool 下載
- 下載方式: 選擇USB
- 解除讀保護
- 看到usb設備
- 選擇要下載的HEX或者bin文件
- 點擊下載
參考
- 國產arm芯片CH32F103芯片開發下載使用簡介 //blog.csdn.net/weixin_41565556/article/details/111619741
- 在PlatformIO中使用(未驗證) //community.platformio.org/t/debugging-of-stm32f103-clone-bluepill-board-wrong-idcode/14635