资讯动态

CH592蓝牙MCU低功耗设计实战:RISC-V集成方案与功耗优化指南

发布时间:2026/10/30 1:11:51 来源:尧图企业网站定制
1. 一颗CH592是怎么把蓝牙和低功耗塞进同一颗芯片的第一次拿到CH592这颗片子的时候我盯着它的参数表看了很久。QFN28封装4x4毫米里面塞了一颗RISC-V内核、蓝牙5.4射频收发器、USB 2.0全速控制器、段式LCD驱动、触摸按键检测、12位ADC、多路PWM还有一块能跑到80MHz的Flash。这种集成度放在三五年前至少得两颗芯片加一堆外围才能拼出来。现在一颗就搞定而且官方标称的接收电流只有几毫安级别睡眠电流能压到微安级。对于做便携设备、智能家居传感器、穿戴类产品的团队来说这颗芯片值得认真研究一下。CH592是沁恒微电子出的蓝牙MCU核心是一颗自研的RISC-V处理器不是ARM Cortex-M系列。这一点很关键因为它直接决定了你的开发工具链、代码移植成本、以及能用到哪些官方资源。RISC-V这两年热度一直在涨从ESP32-C系列到各种国产MCU越来越多的厂商开始押注这个开源指令集架构。CH592算是把RISC-V和蓝牙低功耗做到了一颗小封装芯片里的典型代表。这篇文章主要面向三类人一是正在选型蓝牙MCU的硬件工程师二是从STM32或nRF系列转过来想试试RISC-V方案的嵌入式开发者三是做低功耗产品需要把待机时间从几天拉到几个月甚至几年的产品经理和系统架构师。我会从集成方案的整体设计思路讲起然后拆解低功耗设计的具体要点再给出一套可复现的实操流程最后把我踩过的坑和排查经验整理出来。内容基于我自己的项目实践和官方文档的交叉验证能直接抄作业的地方我会标出来。2. 集成方案的整体设计与选型逻辑2.1 为什么选RISC-V而不是ARM这个问题我被问过很多次。说实话如果你的团队已经有大量STM32代码积累转RISC-V确实有迁移成本。但CH592选RISC-V有几个实际的好处不是纯粹为了赶时髦。第一是授权成本。ARM Cortex-M系列的内核授权费是实打实的虽然对大厂来说不算什么但对中小团队和量产成本敏感的产品来说每一分钱都要算。RISC-V开源指令集没有这个负担芯片厂商可以把省下来的成本让利到芯片价格上。CH592的批量价格在同类蓝牙MCU里确实有竞争力。第二是定制化空间。RISC-V允许厂商根据自己的外设需求裁剪和扩展指令CH592的内核就是沁恒自己做的他们可以把蓝牙基带的某些操作做成自定义指令来加速。这在ARM核上很难做到因为ARM不允许你改内核。第三是供应链安全。这个不多展开做硬件的都懂单一架构依赖的风险是实实在在的。当然代价也是有的。RISC-V的生态还不如ARM成熟调试工具、RTOS支持、第三方库的丰富程度都有差距。但CH592的官方SDK已经把常用的东西都封装好了蓝牙协议栈、外设驱动、低功耗管理都有现成的API实际开发中需要自己从零写的东西并不多。2.2 集成方案的核心思路把能塞的都塞进去CH592的集成策略很明确把蓝牙产品需要的所有外设都集成到一颗芯片里减少BOM成本和PCB面积。我拆解一下它的集成逻辑。射频部分集成了巴伦匹配网络这意味着你不需要在外面再放一堆电感和电容来做阻抗匹配。官方推荐的天线匹配电路只需要几个元件PCB走线做好50欧姆阻抗控制就行。这对于成本敏感的消费类产品来说省下来的不只是元件成本还有调试匹配网络的时间。电源管理部分集成了LDO和DC-DC转换器。这一点很重要因为蓝牙芯片的功耗对供电效率非常敏感。CH592支持直接接电池供电内部DC-DC可以把电池电压高效地转换成内核需要的电压。实测下来用DC-DC模式比纯LDO模式的整体功耗能低不少具体数据后面会讲。外设方面段式LCD驱动、触摸检测、ADC、PWM、UART、SPI、I2C这些常用接口都有。这意味着你做一个小型蓝牙温湿度计不需要外挂LCD驱动芯片不需要外挂触摸芯片一颗CH592加传感器加显示屏就够了。PCB面积可以做到很小适合穿戴类产品。2.3 什么场景适合用CH592什么场景不适合不是所有蓝牙项目都适合用CH592。我根据自己的经验给一个判断标准。适合的场景低功耗传感器节点、蓝牙遥控器、智能门锁、穿戴设备、电子价签、医疗贴片、智能家居子设备。这些场景的共同特点是数据量不大、对功耗敏感、需要一定的本地处理能力、成本敏感。不太适合的场景需要跑复杂蓝牙Mesh大规模组网的、需要高速数据传输的、需要大量RAM跑复杂算法的、需要成熟ARM生态和大量第三方库的。这些场景可能nRF52840或者ESP32系列更合适。选型这件事没有绝对的好坏只有合不合适。CH592在它的目标场景里做得很好但不要指望它能干所有事。3. 低功耗设计的核心要点拆解3.1 功耗都花在哪里了做低功耗设计第一件事是搞清楚功耗的构成。CH592的功耗可以分成几大块射频收发功耗、内核运行功耗、外设运行功耗、睡眠漏电功耗。射频收发是大头。蓝牙BLE在广播、连接、扫描不同状态下的功耗差异很大。广播间隔从20ms到2秒平均功耗能差几十倍。连接状态下的连接间隔也是关键参数从7.5ms到4秒功耗差异同样巨大。内核运行功耗取决于主频和运行时间。CH592的内核可以跑到80MHz但大部分时间你不需要跑这么快。降频运行可以显著降低功耗代价是处理时间变长。这里有个权衡跑得快但醒得久还是跑得慢但醒得短哪个更省电取决于具体任务。外设功耗经常被忽视。比如LCD驱动一直开着ADC一直采样这些都会吃掉不少电。低功耗设计的一个核心原则是不用的时候全部关掉。睡眠漏电功耗是最容易被低估的。芯片进入睡眠模式后理论上电流应该很小但实际测量中经常发现比预期高很多。原因可能是GPIO漏电、外部电路漏电、或者配置没做对。3.2 低功耗设计的三个层次我把低功耗设计分成三个层次从粗到细。第一个层次是系统级设计。这包括选择合适的广播间隔、连接间隔、发射功率。发射功率每降低3dBm功耗大约减半。如果你的应用场景不需要很远距离把发射功率调到最低能省很多电。广播间隔从100ms改成500ms平均功耗能降好几倍。这些参数在项目初期就要根据实际需求定好后期改起来影响很大。第二个层次是运行级设计。这包括内核降频、外设按需开关、DMA代替CPU搬运数据、中断代替轮询。CH592支持多种低功耗模式从空闲模式到深度睡眠模式功耗依次降低唤醒时间依次变长。你需要根据任务的实时性要求选择合适的模式。第三个层次是细节级设计。这包括GPIO配置、上拉下拉电阻、未使用引脚的处理、电源纹波控制。这些细节看起来不起眼但累积起来可能占睡眠功耗的一半以上。我见过一个项目睡眠电流比预期高了十几倍最后查出来是一个未使用的GPIO配置成了输入浮空外部电路把它拉到了中间电平导致输入级一直在翻转。3.3 官方SDK里的低功耗API怎么用CH592的官方SDK提供了一套低功耗管理API核心函数是LowPower_Sleep()和LowPower_Idle()。这两个函数的区别是睡眠深度不同。LowPower_Idle()让内核停止时钟但外设继续运行唤醒后继续执行。适合短时间等待比如等一个ADC转换完成。LowPower_Sleep()让芯片进入深度睡眠大部分外设关闭只有特定唤醒源能唤醒。适合长时间待机比如等蓝牙连接事件。使用这些API的时候有几个关键点。第一进入睡眠前必须把所有不需要的外设时钟关掉否则它们会阻止芯片进入深度睡眠。第二唤醒源的配置要正确比如你要用GPIO唤醒就要把对应的GPIO配置成唤醒源并且使能中断。第三唤醒后要重新初始化那些在睡眠中被关闭的外设。我一般会在项目里封装一个低功耗管理模块统一管理睡眠前后的外设状态。这样代码不会到处都是LowPower_Sleep()调用维护起来方便很多。4. 实操过程与核心环节实现4.1 开发环境搭建CH592的开发环境搭建比STM32稍微麻烦一点因为RISC-V的工具链不是默认就有的。我推荐用官方提供的MounRiver Studio这是沁恒自己维护的IDE基于Eclipse集成了RISC-V GCC工具链和调试器驱动。下载安装包一路下一步就行不需要单独装工具链。安装完成后新建工程的时候选择CH592对应的模板。官方SDK里有很多例程从最简单的GPIO点灯到完整的蓝牙从机例程都有。我建议先从GPIO例程开始确认编译、下载、调试都正常再逐步往蓝牙例程过渡。调试器方面CH592支持两线调试接口用官方的WCH-Link或者兼容的调试器都行。接线很简单一根时钟线一根数据线加电源和地。注意调试接口的引脚在睡眠模式下可能会被复用调试的时候要注意配置。4.2 蓝牙从机例程的配置与修改官方SDK里的蓝牙从机例程是一个很好的起点。我以做一个蓝牙温湿度计为例讲一下需要改哪些地方。首先是广播数据的配置。在gap.c或者类似的文件里找到广播数据数组修改成你的设备名称和服务UUID。广播间隔在gapParam结构体里设置我一般设成500ms到1秒平衡功耗和连接速度。然后是服务和特征的添加。蓝牙温湿度计需要定义一个环境感知服务里面包含温度特征和湿度特征。每个特征需要定义UUID、属性读、写、通知、权限。这些在gatt.c里配置。接着是数据更新逻辑。温湿度传感器一般通过I2C或者SPI接口读取读完之后更新特征值如果客户端订阅了通知就发送通知。这里要注意发送通知的时机要配合连接间隔不要在连接间隔之外频繁发送否则会打乱蓝牙时序。最后是低功耗配置。在空闲的时候调用低功耗API进入睡眠在蓝牙事件到来时唤醒处理。这里的关键是蓝牙协议栈本身会管理一部分低功耗行为你只需要在应用层配合就行。4.3 低功耗参数的计算与选择低功耗参数的选择需要一些计算。我以一个CR2032纽扣电池供电的温湿度计为例。CR2032的容量大约是220mAh。假设目标是工作一年那么平均电流需要控制在220mAh除以8760小时大约是25微安。现在来分配这25微安。假设温湿度每60秒测量一次每次测量需要5毫秒测量时电流是5mA。那么测量部分的平均电流是5mA乘以5ms除以60s大约是0.42微安。这部分很小。假设蓝牙每60秒广播一次广播间隔1秒每次广播持续3毫秒广播时电流是10mA。那么广播部分的平均电流是10mA乘以3ms除以1s再乘以广播占空比大约是30微安。这部分已经超过预算了。所以需要调整。把广播间隔改成2秒广播部分平均电流降到15微安。再把发射功率从0dBm降到-6dBm电流降到大约6mA平均电流降到9微安。这样总平均电流大约是10微安左右加上睡眠漏电和其他开销控制在25微安以内是可行的。这个计算过程看起来简单但实际项目中经常被忽略。很多团队做完产品发现电池只能用几周回头一算才发现广播参数没优化。4.4 实测功耗数据与对比我在实验室里用高精度电流表测过CH592在不同模式下的功耗。以下数据是基于我的测试条件供参考。工作模式电流说明运行模式 80MHz约6mA内核全速运行外设全开运行模式 8MHz约1.5mA降频运行适合低速任务空闲模式约0.8mA内核停止外设运行睡眠模式约2微安深度睡眠RTC运行睡眠模式RAM保持约5微安深度睡眠保留部分RAM广播状态平均约15微安广播间隔2秒发射功率-6dBm连接状态平均约30微安连接间隔1秒无数据收发这些数据是在理想条件下测的实际产品中因为外围电路和PCB漏电数值会高一些。但量级是对的可以用来做预算。4.5 PCB设计对功耗的影响PCB设计对低功耗的影响经常被低估。我讲几个关键点。电源走线要足够宽减少压降。CH592在射频发射瞬间电流会突然增大如果电源走线太细电压会跌落可能导致复位或者射频性能下降。我一般用至少0.5mm的走线宽度并且在芯片电源引脚附近放足够多的去耦电容。晶振布局要靠近芯片走线要短且对称。CH592需要外部晶振提供蓝牙时钟晶振的走线如果太长或者不对称会影响起振时间和频率稳定性进而影响功耗。天线部分要严格按照官方推荐做。阻抗匹配没做好的话射频功率会反射回来不仅浪费电还可能损坏芯片。我一般会用矢量网络分析仪测一下天线的S11参数确保在2.4GHz频段回波损耗小于-10dB。未使用的引脚要妥善处理。不要悬空配置成输出低电平或者带上拉输入具体看电路设计。悬空的引脚会导致输入级振荡增加功耗。5. 常见问题与排查技巧实录5.1 睡眠电流比预期高怎么办这是最常见的问题。我整理了一个排查流程。第一步确认所有外设时钟都关了。在进入睡眠前逐个检查外设的时钟使能位确保不需要的都关了。特别容易漏的是ADC、LCD驱动、和比较器。第二步检查GPIO配置。把所有未使用的GPIO配置成输出低电平或者带上拉输入。如果外部电路有上拉或下拉要配合配置避免中间电平。第三步断开外部电路单独测芯片。如果断开后电流正常说明问题在外围电路。常见的外围漏电包括LED指示灯、分压电阻、传感器待机电流。第四步检查电源纹波。如果电源纹波太大芯片内部的电源管理电路会频繁动作增加功耗。用示波器看一下电源引脚上的纹波正常应该在几十毫伏以内。第五步检查PCB漏电。如果PCB清洗不干净助焊剂残留会导致微安级的漏电。用酒精清洗后重新测量。5.2 蓝牙连接不稳定怎么排查蓝牙连接不稳定可能有很多原因我按概率从高到低排列。天线匹配是最常见的原因。如果天线没调好发射功率出不去接收灵敏度也差。用频谱仪看一下发射频谱确认功率和频偏都在正常范围。电源去耦不足也会导致连接不稳定。射频发射瞬间电流突变如果去耦电容不够电压跌落会导致射频性能下降。在芯片电源引脚附近加一个10微法和一个100纳法电容通常能改善。晶振频偏也是常见原因。蓝牙对时钟精度要求很高晶振频偏太大会导致连接不上或者频繁断开。用频率计测一下晶振实际频率调整负载电容。软件层面的问题包括连接参数配置不合理、协议栈任务优先级冲突、中断处理时间太长。这些需要用调试器跟踪协议栈状态来排查。5.3 常见问题速查表问题现象可能原因排查方法解决方法睡眠电流偏高外设时钟未关逐个关闭外设测电流睡眠前关闭所有不需要的外设睡眠电流偏高GPIO配置不当检查所有GPIO配置未使用引脚配置为输出低或上拉输入睡眠电流偏高外部电路漏电断开外部电路测移除或优化外部电路蓝牙连接不稳定天线匹配不良测S11参数重新调整匹配网络蓝牙连接不稳定电源去耦不足测电源纹波增加去耦电容蓝牙连接不稳定晶振频偏测晶振频率调整负载电容广播距离短发射功率低测发射频谱提高发射功率或优化天线唤醒后死机外设未重新初始化检查唤醒流程唤醒后重新初始化外设电池寿命短广播间隔太短计算平均电流增大广播间隔电池寿命短发射功率太高计算平均电流降低发射功率5.4 几个容易踩的坑第一个坑是调试接口引脚在睡眠模式下的行为。CH592的调试接口和某些GPIO是复用的如果睡眠配置没做对调试接口可能会阻止芯片进入深度睡眠。解决办法是在量产固件里禁用调试接口或者把调试接口引脚配置成普通GPIO。第二个坑是蓝牙协议栈的内存管理。CH592的RAM不大协议栈和应用共享内存。如果应用层动态分配内存太多协议栈可能会分配失败导致蓝牙异常。我建议应用层尽量用静态分配把动态内存留给协议栈。第三个坑是中断优先级配置。蓝牙协议栈对时序要求很高如果应用层的中断优先级比协议栈高而且中断处理时间太长会打乱蓝牙时序。我一般把蓝牙相关中断设为最高优先级应用层中断设为较低优先级。第四个坑是固件升级时的功耗。CH592支持OTA升级但升级过程中功耗会比较高。如果产品是靠电池供电的OTA升级前要确保电量充足否则升级到一半没电了设备可能变砖。6. 低功耗蓝牙产品的扩展思路CH592的能力不止于做一个简单的温湿度计。我分享几个扩展方向。第一个方向是组网。CH592支持蓝牙Mesh可以做多节点的灯光控制或者传感器网络。Mesh组网的低功耗设计更复杂因为节点需要转发其他节点的消息。我一般会让市电供电的节点承担转发任务电池供电的节点只做终端不转发。第二个方向是OTA升级。CH592支持无线升级固件这对于已经部署的产品来说很方便。OTA升级的关键是做好固件校验和回滚机制防止升级失败导致设备不可用。第三个方向是多传感器融合。CH592的外设很丰富可以同时接多个传感器做数据融合。比如接加速度计和陀螺仪做姿态检测接温湿度和气压做环境监测。数据融合算法可以在芯片上跑不需要上传到手机。第四个方向是自定义蓝牙服务。除了标准的蓝牙服务你可以定义自己的私有服务实现特定的数据交互。这在做定制化产品的时候很有用。我在实际项目中的体会是CH592这颗芯片的潜力比它的参数表看起来要大。很多功能官方SDK里都有例程改一改就能用。关键是要理解它的低功耗设计逻辑把睡眠和唤醒的时机管理好。低功耗设计不是某一个参数调好就行而是整个系统的协同优化。从硬件选型到PCB布局从软件架构到参数配置每一个环节都会影响最终的功耗表现。我见过太多项目在最后阶段才发现功耗不达标回头改设计成本很高。所以建议在项目初期就把功耗预算做好每个环节都留有余量这样后期调试会轻松很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑