1、问题描述:在上电第一次读水量的时候,偶尔有水量出错的情况,比如0变为40、440或者其它随机数字;
2、分析过程:根据之前mbus总线接口的分析经验可能是存在电路板漏电的情况,给单片机的供电电压比较低,导致采样电路工作不正常;但这次的情况是由发射机模块通过gpio引脚控制,由3.6V电池对表头进行供电;而且电路通信接口是TTL接口;经过分析主要是由于在电池供电的过程中存在电压不稳定的情况,而表头单片机在低电压的时候已经在工作,而且可以进行数据通信,所以导致通信模块获取的数据不正确,如下图:
上面第二幅图是第一幅图上电波形的展开,可以看到单片机上电瞬间可能存在电压波动(上面波动电压是手抖动产生的),上电后数据返回比较快,大概40ms就有返回,这个时候传输模块就可能获得不正确的数据。
这个是加了掉电复位功能并且上电后延时100ms返回数据,掉电复位的电压在2.6~2.8v,可以看到在电压不稳定的时候没有数据通信,在电压稳定100ms后开始数据上传;软件上通过AD值的判断将不可靠的水量设置为0xEEEE,进一步增加了产品的可靠性。
下面是某公司发射模块读取我们表头数据的波形:
这是在发射时隙到达时候的波形,可以看到上面一排箭头是表头采样点,下面一个箭头是模块发射数据的时候把整个电压拉到,低电压持续有1.2s左右,这个时候发射机模块的策略是是记录这次采样数据,用于下一次数据上传。模块数据发射完成后后面可以看到电压有逐渐恢复,通过这个波形分析了一直以来困扰我们的问题,这个实质上是发射机模块的传输数据的策略问题。