现象:做了一批板卡,使用AD7606-4采集模拟信号,在客户现场有的板卡在开关机后,出现采集值一直为0mv、有的板卡出现采集值为83mv、有的板卡出现采集值为-103mv、还有的板卡出现采集值在0mv、55.58mv、349.76mv之间来回跳动;目前暂未出现正常运行的板卡中途出现异常状况。
问题定位:
(1)板卡输入信号经过TVS钳位、分压、运放跟随再接入AD7606-4,所有在现场出现异常现象的板卡前端输入链路一切正常;另,AD7606-4使用spi和STM32F407ZET6通信。
(2)所有板卡在带到现场前一切正常,且现场的板卡全部放在全封闭机箱运行,检查现场的供电情况,没有发现异常。
(3)所有的板卡在空载(外部未接入模拟信号)开关机多次,有较小概率可以恢复正常;恢复正常的板卡在带载(外部接入模拟信号)情况开关机后,有很大概率异常。
(4)使用示波器检查电源冲击和上电顺序,其中AVCC为5V、VDRIVE为3.3V,后者电压是由前者LDO转换而来,未发现异常。
(5)使用示波器抓取异常板卡的AD7606-4的RESET引脚信号,上电后未抓到有效的高电平复位信号,而数据手册说明RESET高电平脉冲宽度典型值需要大于50ns;另,BUSY引脚的电平一直为异常的低电平;异常板卡一直输出0mv时,DB7引脚一直为低电平。
(6)同样的代码和环境,开发板(STM32F407ZET6和AD7606开发板分开采购,然后杜邦线连接,其实这操作还是很骚的,几乎10根杜邦线啊!)一直运行正常,且示波器抓取到上电后有效的高电平复位信号。
原因:
(1)异常原因是板卡上电后未进行ADC有效复位,嵌入式确认,程序拷贝来至主频较低的STM32F1(72MHz),而STM32F4(168MHz)较高,同样一段程序可能在主频较高的板卡不能产生有效复位。
(2)未进行有效复位的板卡一直运行在亚稳态,在现场较恶劣的环境下极易出现异常;至于开发板为啥一直正常,只能解释为其设计的鲁棒性较好。
整改措施:
(1)上电后,延迟ADC复位时间且延长复位时间;
(2)ADI工作人员建议每次转换前需要一次复位。