当前时间: 2026-05-26 19:01:37
更新时间: 2026-05-26
分类:软件教程
评论(0)
嵌入式系统软硬件设计笔记
搞硬件设计,有的时候真的是一门玄学。同样的电路,主控芯片从STM32更换为GD32,读取电能计量芯片就不正常了。具体现象为:上电复位(冷启动)运行正常,复位按钮或者看门狗复位(热启动)就无法读取电能计量芯片数据。
用逻辑分析仪观察了SPI总线的时序,冷启动时,MCU发送完数据RN8032B才返回数据,能完成自检。但热启动时,MCU还未发送完最后一个字节,RN8032B就返回数据了,导致自检异常。查阅了RN8032B的技术手册,发现该芯片SCSN(SPI片选)引脚是要求MCU能控制的,见下图技术手册截图。但是我们的设计中,是直接将SCSN接GND,一直处于选中状态。
询问技术人员为什么要这么设计?回答说:原来就是这么设计的,并且这么多年也一直运行正常。这就很奇怪了!于是翻看了原来STM32芯片的代码,竟然发现SPI接口的配置也未按照RN8032B的要求配置(配置为模式3,但电能采集芯片要求是模式1-空闲时SCLK为低,下降沿采样)。
这就更奇怪了,不但SCSN引脚不使用,就连SPI接口模式也没按要求配置,但是却能稳定运行这么多年,实在想不通。
但是,我觉得我们还是要按照手册要求来使用芯片。于是让硬件设计人员通过飞线把SCSN与MCU的IO口连接起来,程序里按照SPI时序来控制SCSN的高低电平。果然,这么操作后就恢复正常了。问题解决了,但是新的问题又来了,为什么原来那样设计也能正常运行呢?难道这里也遵循负负得正吗?一个错误的设计加一个错误的配置得到一个正确的结果?实在想不明白,以后再花时间研究研究吧。欢迎感兴趣的朋友们一起探讨探讨。