Mbus总线毛刺导致单片机异常现象的分析和解决

        最近开发的一款光电直读表跟之前的表电路上的区别是:

1、用分离元件搭建电源电路,替换NCN5150或TSS721集成芯片;

2、传感器用180度晶元分布替换360度晶元分布,传感器上无轮盘;

单片机的3.3v电源设计方案如下

 测试问题:

测试过程中有超时、传感器出错等异常,而且比率比较高。

问题解决过程:

问题很容易复现,只要mbus总线出现类似如下的上电波形,上电的过程中有一个小于100ms的电源掉电,一定会出现单片机异常。

问题的原因是LDO的输出端连接了一个0.1uf的电容,由于这种异常的上电波形导致电容上的电没有充分消耗,导致后端的单片机处于2种状态,一种是单片机还能够运行,但是单片机的IO设备没有初始化成功,比如ADC等外围设备,这时候就会出现AD转换异常,表具表现为AD值错误,报传感器出错;第二种情况是单片机根本就没有运行起来,这时候表现为通信超时。

在用示波器抓取单片机的3.3v电压波形的时候,由于示波器的接地端也要消耗电流,这个时候单片机反而运行正常;我在调试的时候就发现如果用Jtag调试的时候单片机运行正常,不用Jtag的时候单片机就出问题,是一个道理,因为Jtag也要消耗电流,让LDO输出端电容上的电源快速放掉。在产品开发的时候,有时我们发现单片机单独运行的时候总是有问题,一旦我们用Jtag等工具调试的时候又发现没有问题,这种情况有可能是产品的电源电路设计上有缺陷。

解决办法:

打开单品机的BOD功能,即欠压复位功能,一旦单品机检测到电压不稳定就自行复位,让单片机的自身运行在正确的状态,这样问题就得到解决。为了稳妥,选择了高一点的电压作为欠压检测点。

void BODInit(void)
{
    LPC_SYSCON->PDRUNCFG    &= ~(1<<3);                                    //打开BOD
  LPC_SYSCON->BODCTRL =  BOD_RST_LVL3 |                                /* BOD复位电压2.4 ~ 2.5         */
                         BOD_RST_ENABLE;                               /* BOD复位功能使能              */
    //BOD_INT_LVL3 |                                /* BOD中断电压2.8 ~ 2.9         */
  //                        BOD_RST_LVL2 |                                /* BOD复位电压2.4 ~ 2.5         */
   //                       BOD_RST_ENABLE;                               /* BOD复位功能使能              */
    
 //   NVIC_EnableIRQ(BOD_IRQn);                                           /* 打开BOD中断                  */

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值