CH573从入门到精通
发布时间:2026/8/14 14:31:42 作者:尧图编辑部 阅读量:1,286

CH573 从入门到精通一文吃透沁恒 RISC-V 低功耗蓝牙 SoC目录认识 CH573硬件架构详解外设详解BLE 蓝牙协议栈架构开发环境搭建快速上手点灯 串口打印第一个 BLE 工程广播与透传进阶主题常见问题与调试技巧从入门到精通的学习路线参考资料一、认识 CH5731.1 什么是 CH573CH573是南京沁恒微电子WCH推出的一颗32 位 RISC-V 内核、集成 2.4GHz 射频收发器的低功耗蓝牙BLEMCU/SoC。它把「MCU 蓝牙射频 常用外设」集成在一颗芯片里一颗芯片就能完成数据采集、逻辑控制和无线通信非常适合电池供电的小型物联网节点、可穿戴设备与低成本蓝牙配件。它的几个鲜明标签RISC-V 内核采用沁恒自研的 RISC-V3A 内核摆脱了对 ARM 内核授权的依赖是国产芯片自主可控路线的代表之一蓝牙集成度高内置 2.4GHz 射频与 BLE 基带外接少量阻容和晶振即可工作低成本、低功耗面向性价比和电池应用睡眠功耗做到微安级生态完善官方提供 MounRiver Studio IDE、WCH-Link 调试器、EVT 评估例程上手门槛低。1.2 家族定位与选型CH573 属于 WCH 的CH57x / CH58x 蓝牙系列。选型时可以参考同族差异型号蓝牙版本主要特点典型定位CH571BLE 4.2入门、较小 Flash基础蓝牙透传CH573BLE 4.2大容量 FlashF 版 448KB外设齐全本文主角通用 BLE 节点CH577BLE 5.1更新协议版本需要 5.1 特性的场景CH578BLE 5.2协议再升级更高吞吐/扩展特性CH579BLE 4.2集成以太网 MAC USB需要联网/有线的场景CH582 / CH583BLE 5.3新一代性能更强新项目优先考虑小结如果你的项目是「采集数据 蓝牙上报/控制」的经典 BLE 从机Peripheral场景CH573 是非常成熟、资料丰富、成本友好的选择如果是全新项目且追求最新协议可以顺便评估 CH582/CH592 等新平台。1.3 核心参数一览表下表为 CH573 的关键参数速览具体数值以官方数据手册为准项目参数内核RISC-V3A32 位沁恒自研最高主频60 MHz无线2.4 GHzBLE 4.2CodeFlash代码闪存256 KBCH573/ 448 KBCH573FSRAM18 KBDataFlash掉电保存支持可作 EEPROM 模拟ADC12 位 SAR多通道通道数视封装USART4 组可配为 UART 或 SPII2C支持PWM10 位多通道电容触摸按键支持TouchKey视封装/型号定时器通用定时器 RTC 看门狗GPIO视封装而定QFN28 / QFN40 / QFN48 等工作电压约 1.7 ~ 3.6 V低电压工作工作温度-40 ~ 85 ℃封装QFN28CH573F、QFN40、QFN48 等低功耗睡眠/掉电模式微安级⚠️ 提示上表用于快速建立整体印象。RAM 大小、ADC 通道数、触摸通道数、电压范围等精确值请以你实际使用型号的CH573DS1.PDF为准——不同封装/型号略有差异。二、硬件架构详解2.1 内核CH573 使用RISC-V3A内核这是 WCH 基于 RISC-V 指令集自研的 32 位处理器支持 RV32 基础整数指令集含乘法/除法扩展最高运行频率 60 MHz。相比同价位 8 位机性能有明显优势相比 ARM Cortex-M0/M3则做到了自主可控、无授权费能进一步压低芯片成本。对应用开发者来说内核的差异主要体现为使用RISC-V 工具链GCC编译中断控制器、启动流程、向量表等细节与 ARM 不同但官方 SDK 已封装好普通应用开发基本无感知支持通过WCH-Link进行 SWD 在线调试断点、单步、查看变量。2.2 存储架构CH573 的存储大致分为CodeFlash存放程序代码。CH573 为 256 KBCH573F 为 448 KB对大多数 BLE 应用非常宽裕SRAM运行时的变量与堆栈空间DataFlash从 Flash 中划出的一部分用于掉电保存数据类似 EEPROM配合官方读写库可实现磨损均衡适合存配置参数、序列号、配对信息等。实践建议经常要「写配置」的地方不要直接裸写 CodeFlash 区用官方 DataFlash 库更安全、寿命更长。2.3 时钟系统CH573 通常使用外部 32 MHz 晶体作为主时钟源经内部 PLL 倍频到 60 MHz 供 CPU 与外设使用同时有32.768 kHz低频时钟用于 RTC 和低功耗定时唤醒。初始化主频时一般直接调用SetSysClock(CLK_SOURCE_PLL_60MHz);2.4 电源与低功耗CH573 支持低电压工作并内置 LDO / DC-DC 等电源管理单元配合多种低功耗模式睡眠、掉电等实现微安级的待机电流非常适合纽扣电池 / 锂电池供电的产品。典型低功耗思路平时让芯片进入睡眠模式仅保留低频时钟与必要的唤醒源由定时器、GPIO 中断或蓝牙连接事件唤醒采集/上报完成后再次睡眠。蓝牙连接状态下的功耗优化修改连接参数、广播参数、发射功率等是进阶阶段的重要内容后文会展开。2.5 2.4GHz 射频CH573 片内集成了 2.4GHz 射频收发器、基带与 BLE 链路层外部只需接 32 MHz 晶体、少量匹配电容电感、天线或 PCB 天线即可完成无线收发。发射功率可配置以满足不同距离和功耗需求。射频前端设计时注意天线匹配与走线对通信距离影响很大参考官方硬件参考设计布局晶振负载电容需按芯片要求配置EVT 中通过HSECFG_Capacitance()配置。三、外设详解CH573 外设覆盖了物联网节点的常见需求。3.1 GPIOGPIO 支持多种模式推挽输出、开漏输出、上拉/下拉/浮空输入等不同驱动能力可选。常用 APIGPIOB_ModeCfg(GPIO_Pin_1,GPIO_ModeOut_PP_5mA);// PB1 推挽输出5mAGPIOB_SetBits(GPIO_Pin_1);// PB1 置高GPIOB_ResetBits(GPIO_Pin_1);// PB1 置低3.2 USARTUART / SPI 复用CH573 提供多组 USART可灵活配置成UART或SPI。这是它与很多 MCU 不同的一个设计点同一组外设既可以是串口也可以是 SPI 主/从机。作 UART用于打印调试日志、与外部模块通信AT 指令、传感器等作 SPI用于驱动 Flash、LCD、传感器等。UART 初始化通常一行搞定UART1_DefInit();// 默认 115200-8-N-13.3 I2CI2C 用于连接各类数字传感器温湿度、加速度计、EEPROM 等。官方 EVT 提供 I2C 主机例程读写时序封装完善直接调用即可。3.4 ADC内置12 位 SAR ADC多路通道可采集电压、电池电量、模拟传感器等。使用流程大致为初始化 → 配置通道 → 启动单次/连续转换 → 读取结果。ADC_Init();// 初始化 ADCADC_ChannelCfg(ADC_CH0);// 选择通道ADC_ExcutSingleConver();// 启动单次转换while(!ADC_IsConverComplete());// 等待转换完成uint16_tvalADC_GetCurrentValue();// 读取转换值说明ADC 函数名与通道宏请以你 SDK 版本中的CH57x_adc.h/ EVT 例程为准。3.5 PWMPWM 为10 位多通道可用于调光、电机调速、蜂鸣器、模拟 DAC配合 RC 滤波等。3.6 电容触摸按键TouchKeyCH57x 系列支持电容式触摸按键无需外接触摸芯片即可实现触摸按键面板适合家电面板、遥控器、灯具控制等场景。触摸通道数量视封装与型号而定开发时参考 EVT 中的 TouchKey 例程与调校方法。3.7 定时器 / RTC / 看门狗通用定时器延时、PWM 计数、输入捕获等RTC基于 32.768 kHz用于实时时钟与低功耗定时唤醒看门狗WDT防程序跑飞量产建议开启。四、BLE 蓝牙协议栈架构理解协议栈架构是「会用」到「精通」的分水岭。CH573 的 BLE 协议栈是官方以库 头文件形式闭源提供的应用通过事件回调 参数接口与协议栈交互。4.1 分层结构从下到上大致为物理层 链路层射频收发、跳频、连接建立由协议栈内部处理GAPGeneric Access Profile管理广播、扫描、连接、角色Peripheral/Central等GATTGeneric Attribute Profile以 Service服务/ Characteristic特征组织数据应用层你的业务逻辑通过回调收到协议栈事件。4.2 TMOS 任务调度CH57x 协议栈使用TMOS一种轻量任务调度/OS 抽象源自 TI 的 OSAL 体系驱动主循环里反复调用while(1){TMOS_SystemProcess();// 处理协议栈事件队列与定时器}应用侧通过tmos_set_event()、tmos_start_task()、tmos_start_timer()等接口注册任务、事件与定时器协议栈事件连接建立、断开、收到数据等会以回调形式派发到应用。4.3 角色与应用回调Peripheral从机/外围设备最常见的「传感器 手机连接」形态Central主机/中心设备主动扫描、连接其它设备还有Broadcaster广播者、Observer观察者等角色。应用通过注册回调函数接收 GAP/GATT 事件例如连接建立、断开、特征值被写、特征值被读等然后在回调里执行相应业务逻辑。五、开发环境搭建5.1 工具链一览工具用途说明MounRiver Studio (MRS)官方 IDE基于 Eclipse集成 RISC-V GCC 工具链Windows 免费WCH-Link下载 / 调试支持 SWD 在线调试断点、单步、查看变量WCHISPTool串口 ISP 烧录通过串口/USB 下载固件适合量产或快速下载EVT 评估包例程 / 库官方 BLE 与各外设例程、协议栈库部分用户也会用 Keil MDK 配合 WCH 的 pack 开发但官方主推 MRS教程和例程以 MRS 为主。5.2 MRS 安装步骤到 MounRiver 官网下载对应版本的MounRiver Studio安装包按默认路径安装避免中文路径防止 RISC-V 工具链路径问题到 WCH 官网下载CH573EVT评估包并解压也建议一并下载 CH573DS1 数据手册在 MRS 中「导入工程」选择 EVT 里的 BLE 例程如SimpleBLEPeripheral即可。5.3 烧录与调试WCH-Link连接芯片 SWD 引脚在 MRS 中可直接下载与调试WCHISPTool将芯片通过串口配合一键下载电路连接电脑选择固件 HEX 烧录。量产前务必规划好「一键串口下载」电路BOOT 引脚配合能大幅提高生产效率。六、快速上手点灯 串口打印任何平台的第一步都是让灯闪起来、让串口吐出一句话。这两件事跑通说明工具链、烧录、时钟、GPIO、串口都正常了。6.1 点灯#includeCH57x_common.hintmain(void){// 1. 配置主频 60MHzSetSysClock(CLK_SOURCE_PLL_60MHz);// 2. PB1 配置为推挽输出GPIOB_ModeCfg(GPIO_Pin_1,GPIO_ModeOut_PP_5mA);while(1){GPIOB_SetBits(GPIO_Pin_1);// 亮mDelaymS(500);GPIOB_ResetBits(GPIO_Pin_1);// 灭mDelaymS(500);}}6.2 串口打印CH573 例程常用 UART1 作为调试串口。先用一行初始化再重定向printf或直接发送字符串#includeCH57x_common.h#includestring.hvoidDebug_Init(void){GPIOA_SetBits(GPIO_Pin_9);// PA9 TXD1GPIOA_ModeCfg(GPIO_Pin_9,GPIO_ModeOut_PP_5mA);UART1_DefInit();// 默认 115200-8-N-1}// 重定向 printf寄存器名以 SDK 实际头文件为准int_write(intfd,char*buf,intlen){for(inti0;ilen;i){while(R8_UART1_TFCUART_FIFO_SIZE);// 等待发送 FIFO 非满R8_UART1_THR*buf;}returnlen;}intmain(void){SetSysClock(CLK_SOURCE_PLL_60MHz);Debug_Init();printf(Hello CH573!\r\n);UART1_SendString((uint8_t*)System start.\r\n,strlen(System start.\r\n));while(1){}}通过 USB 转串口模块接 PA9 TX、PA10 RX 与 GND即可在串口助手上看到输出。七、第一个 BLE 工程广播与透传跑通外设后进入本文核心让 CH573 作为 BLE 从机被手机扫描到、连接并通信。7.1 从机广播Peripheral AdvertisingEVT 中的SimpleBLEPeripheral是标准起点其主函数结构如下已简化注释#includeCH57x_common.h#includeHAL.h#includesimpleBLEPeripheral.hintmain(void){uint8_tinitial_advertising_enableTRUE;SetSysClock(CLK_SOURCE_PLL_60MHz);// 调试串口可选#ifdefDEBUGGPIOA_SetBits(bTXD1);GPIOA_ModeCfg(bTXD1,GPIO_ModeOut_PP_5mA);UART1_DefInit();#endif// GPIO 默认上拉输入减少浮空漏电GPIOA_ModeCfg(GPIO_Pin_All,GPIO_ModeIN_PU);GPIOB_ModeCfg(GPIO_Pin_All,GPIO_ModeIN_PU);HSECFG_Capacitance(HSECap_18pF);// 晶振负载电容CH57X_BLEInit();// 蓝牙协议栈初始化HAL_Init();// 硬件抽象层初始化GAPRole_PeripheralInit();// 配置为从机角色SimpleProfile_AddService(GATT_ALL_SERVICES);// 添加 GATT 服务SimpleProfile_RegisterAppCBs(simpleProfileCBs);// 注册应用回调// 开启广播GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED,sizeof(uint8_t),initial_advertising_enable);// 启动应用事件tmos_set_event(simpleBLEPeripheral_TaskID,START_DEVICE_EVT);while(1){TMOS_SystemProcess();// 协议栈任务调度主循环}}下载后用手机上的 BLE 调试 App如 nRF Connect、LightBlue扫描即可看到设备广播。7.2 自定义 Service / Characteristic真正的业务通信需要定义自己的服务与特征值。核心思路定义 UUID、特征值长度与读写属性读/写/通知实现特征值表gattAttribute_t在回调里处理ATT_HANDLE_VALUE写入与ATT_HANDLE_VALUE_NOTI通知等事件通过SimpleProfile_SetParameter()/SimpleProfile_GetParameter()读写特征值。7.3 数据透传手机 ⇄ MCU经典「蓝牙透传」流程手机 → MCU手机写特征值MCU 在写回调里收到数据转交给 UART 或业务逻辑MCU → 手机MCU 通过GATT_Notification()或GATT_Indication()把数据推送给手机。EVT 中一般提供Peripheral透传与Central主机等例程可在此基础上裁剪成自己的产品。八、进阶主题8.1 低功耗设计低功耗是 BLE 产品的核心竞争力之一几个关键点睡眠模式选择不同模式功耗与唤醒延迟不同按需选择广播参数延长广播间隔、缩短广播持续时间可显著省电连接参数连接间隔Connection Interval越大越省电但实时性下降需在功耗与响应速度间权衡发射功率近距离场景降低发射功率浮空引脚处理未用引脚配置为上拉/下拉避免漏电。实测功耗前务必用万用表/功耗分析仪测量不同状态广播、连接、睡眠的电流形成一张功耗表再针对性优化。8.2 OTA 空中升级量产产品离不开 OTAOver-The-Air升级。基本思路Flash 划分为Bootloader 区与App 区手机把新固件分包通过 BLE 写入Bootloader 校验 CRC/签名后搬运并跳转运行。WCH 官方提供 OTA 例程可在其基础上加入自己的版本管理、断点续传与校验逻辑。8.3 BLE MeshWCH 为 CH57x/CH58x 系列提供BLE Mesh组网方案可用于灯控、楼宇、传感网络等需要「多跳、广播泛洪」的场景。Mesh 涉及节点Node、Provisioning入网、模型Model等概念是进阶方向里较有深度的一块。8.4 主机模式CentralCH573 也能作为主机主动扫描并连接其它 BLE 从机。EVT 中的Central例程演示了扫描与连接流程。主机从机的双角色/多连接是更复杂的场景需要深入理解 GAP 与连接管理。九、常见问题与调试技巧烧录不进去确认 WCH-Link 接线SWDIO/SWCLK/GND/VCC、供电电压、BOOT 状态ISP 方式确认串口与一键下载电路。编译报工具链错误检查 MRS 安装路径是否含中文/空格工程是否完整导入 EVT 依赖。能广播但连不上检查广播间隔、连接参数、GAPRole_配置是否冲突。通信数据乱码先确认串口波特率一致再排查数据长度与\r\n处理。功耗偏高优先排查未用 GPIO 是否浮空、外设是否未关、广播/连接参数是否合理。看门狗复位确认喂狗周期与低功耗唤醒的时序配合。学会看回调事件遇到「没反应」先在关键回调里打印事件码定位是没进入回调还是逻辑没跑对。调试利器WCH-Link 的在线调试 串口日志 手机 BLE 抓包nRF Connect 可看 Service/Characteristic 与数据三件套基本能定位 90% 的问题。十、从入门到精通的学习路线阶段目标具体内容入门跑起来搭好 MRS WCH-Link点灯、串口打印跑通基础会用外设GPIO、UART、SPI、I2C、ADC、PWM、定时器逐个过一遍蓝牙会连上从机广播、连接、自定义 Service/Characteristic、透传进阶会做产品低功耗调优、OTA、主机模式、看门狗与量产可靠性精通会做方案BLE Mesh、双角色/多连接、协议栈事件机制、射频与天线设计、量产与认证建议的学习方式先跑例程把 EVT 里每个例程下载、观察现象再回来看代码对照数据手册每个外设的寄存器/配置结合手册理解 SDK 做了什么动手改在例程上做小改动改广播名、改 UUID、改引脚、加传感器快速建立正反馈做一个小项目如「温湿度传感器 手机显示」「蓝牙遥控器」「蓝牙点灯」把外设蓝牙串起来深入协议栈读透 GAP/GATT/TMOS 机制理解连接建立、参数更新、安全配对等流程。参考资料WCH 官网 CH573 产品页CH573DS1 数据手册PDFCH573EVT 评估包例程/库MounRiver Studio 官网SoCXin/CH573芯片信息汇总WeActStudio WCH-BLE-Core 开发板免责声明文中代码为基于官方 EVT 的示意性说明寄存器宏、函数名、通道数、内存/电压等精确参数可能因 SDK 版本与封装型号略有差异请以你实际使用的数据手册与 SDK 为准。祝你早日玩转 CH573