嵌入式低功耗软件开发IO口的坑

结论

1.100pcs测试OK,5Kpcs测试OK,不代表100Kpcs、1KKpcs永远都是OK。

2.不要过于信任任何芯片物理特性方面的一致性。

3.除了注意MCU自身IO口在整机进入低功耗模式的处理,也要注意外围芯片(例如外接RF模块、EEPROM、触摸专用IC等)在整机进入低功耗模式的处理。

产品现状

一个低功耗产品在两年前由前同事开发完,工厂量产过5K,未反馈该问题。今年再次生产10K,反馈有7%不良率,不良现象是待机电流比标准待机电流60uA要高50~100uA不等,这对电池产品来讲是致命的。

更为致命的是,这批产品已经有2K出货到客户那里,如果处理不好,会带来很高额的赔偿成本。

产品架构

产品主要架构是一个瑞萨MCU,外接LCD显示屏、NTC采样电阻、按键以及RF模组。RF模组是使用了合泰某颗RF IC设计了一块小板。模组原理图如下

芯片引脚功能
ANT天线
VDD电源正极
GND电源地
CSNSPI通信片选引脚
SCKSPI通信时钟引脚
GIO3可设置功能,本项目用于中断引脚
GIO1可设置功能,本项目用于SPI通信MISO
SDIOSPI通信MOSI引脚
其余无功能,悬空

 

技术排查

1.初步怀疑RF模组不良,但是RF模组在贴到主板之前,有专门的治具测试,测试PASS的才会贴到主板上;

2.仍怀疑RF模组不良,将RF模组换到同一个项目另一个良品的主板上,待机电流OK;

3.将RF模组换回来不良主板上,待机电流仍然NG;

4.由于该RF模组也用在其他3款电池产品上,所用初始化代码一致,但是该项目使用瑞萨MCU,但其他3款均使用华大MCU。

5.无意间发现,当用手触摸CSN引脚时,待机电流恢复到标称值;当手离开CSN引脚时,待机电流又跳到高值。因此怀疑该引脚在进入低功耗时未进行恰当的处理。

由于代码是前同事开发,架构一塌糊涂,经过多层排查,最后发现在进入低功耗时:

① 将MCU上连接到模组的几个SPI引脚(模组的CSN、SCK、SDIO,下同)均设置为输入模式,且未设置上拉和下拉;

② MCU未发送命令,使模组使能这几个SPI引脚的上拉功能;

③ 这几个SPI引脚引脚在硬件上,均未放置上拉电阻;

方案验证

① 进入低功耗时,不将CSN引脚设置为输入模式,保持输出模式;

② 进入低功耗时,维持原有的将它们设置为输入模式,但使能CSN的MCU IO口上拉功能;

③ 对模组进行初始化时,使模组使能这几个SPI引脚的上拉功能(模组仅支持三个IO一起使能或除能上拉功能);

④ 在硬件电路上,在CSN引脚上新增一个100K的上拉电阻;

以上四种方案,选择任意一个均能够使得待机电流保持在标称值。

是产品已量产,选择硬件方案显然不具有经济性,最后我们选择第③种方案,使能模组内部这几个SPI引脚的上拉功能。

思考

产品在两年前进行过一轮试产,也进行过5K的量产,均未暴露出这个问题,但是今年这批量产,却暴露出这个问题,目前是RF模组的一致性问题,还是MCU的一致性问题,正在排查。

但可见产品的开发不能依赖于测试验证,无论是少数试产的验证,还是批量量产的验证。即便是批量量产,也可能因为某一批器件的物理特性,结合起来恰好使得问题被掩盖,这并不意味着每一批器件都能使得产品有预期的表现,也不意味着将来在某些特定条件下,产品仍能保持正常性能。

因此产品的开发,应当侧重于理论层面的分析,在技术层面需要进行深入的分析,例如要分析MCU IO口的内部结构(如下图),在输入、输出模式,使能、除能上下拉电阻,使能、除能复位功能时,是否存在着某些电流泄露的路径。

 大多数工程师在开发产品时,往往只是查阅例程代码,以及规格书中相关的寄存器部分,对于诸如电特性、IO口结构、时钟电路图没有深入研究分析,只是把功能调试出来,再经过测试团队的几轮测试、工厂小批量试产就开始上市,但今天这个案例已经敲响警钟——测试不是保证产品质量的方法,考虑全面的原始设计才是唯一途径。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值