本帖最后由 zhongjiequan 于 2024-11-6 16:45 编辑
问题:
客户反馈,使用国民技术N32G452CCL7单片机,读取上海矽睿QMC6309 3D磁传感器出现异常。出现现象是无法正常读取地磁传感器寄存器,而用手触摸地磁小板,可以正常读取。简化原理图如下,
示波器波形测试:
当挂上示波器探头的时候,主板开机波形正常读取。波形获取如下。
发现上升沿有一个震荡信号,且在1V左右震荡,而I2C的低电平判断阈值是0.3*VDD,我们系统的VDD=3.3V,那么低电平判断的阈值为0.99V,处于阈值附近。对此,大概率怀疑震荡现象是导致地磁传感器无法正常读取的原因。接下来开始排查该震荡信号是如何产生的。因为示波器探头有一定的输入电容,所以测量到的震荡信号理论小于未挂示波器的时候。
所以可以解释,为什么挂上示波器后传感器可以正常读取的现象。
震荡信号的排查
由于该项目之前的使用的MCU的国民技术的N32G435CBL7,因为FLASH不够才升级使用N32G452CCL7,所以板子是可以兼容N32G435CBL7的,所以更换板子的单片机未435CB,其他条件一致,示波器测试后发现,波形没有震荡现象,所以可以排除硬件的问题。就此问题,咨询原厂技术支持。
技术支持咨询。
第一步,原厂FAE希望复现现象,所以他们使用开发板对AT24C02进行读取,发现信号没有震荡信号,对此我一度怀疑是否还是我们的板子或者芯片批次问题导致的信号上升震荡,对此我们让代理提供了一块FAE使用的开发板。收到开发后进行测试,使用官方例程,进行AT24C02的读写,发现依旧有上升震荡的信号出现。将该现象反馈给FAE,而FAE复测依旧没有上升震荡信号。正当的怀疑人生的时候,我发现原厂例程的默认I2C1的IO口是PB8 PB9!而我们使用的一直是PB6 PB7,这边立马使用PB8 PB9用于I2C1的通信IO,发现确实没有上升震荡!!!到这个时候,基本可以实锤就是国民技术的N32G452CCL7的GPIO驱动设计有问题,而且是PB6 PB7异常,而PB8 PB9正常。将问题反馈给原厂FAE,FAE复测复现现象。
下面是开发板读取AT24C02的示波器波形,条件一致,仅仅是IO复用区别:
原厂技术支持答复:
解决方案
IO并电容,需要并超过22pF电容,传感器可以正常读取,但是会导致上升时间达到270ns左右,很接近300ns的限制,对该方案的稳定性也需要长时间测试。
更换别的型号MCU
结局
经过与客户沟通,客户不接受并电容方案,原因是其他家的单片机,均未有并电容的先例,担心稳定性问题。
所以最终5000片板子需要返工更换别的型号的MCU,与代理沟通,希望原厂能承担返工更换MCU费用,最终代理回复:原厂不承担返工费用,称没有先例。
为什么会贴那么多板子?因为之前有同样的原理的项目量产过,也许是批次问题,也许是板子的寄生电容不同,之前发现异常的板子非常少,没引起重视。
教训
采用国产新器件,信号完整性最好实测确定。
对想要用这个系列N32G45x且可能使用I2C的电工提个醒,慎重。
|