|
本帖最后由 sdlqzql 于 2017-6-27 15:15 编辑
板子要采集电压信号,于是用了TI的ADS1256这款24位A/D。
主控用STM32,与ADS1256通信用ADum1402ARWZ来做电磁隔离。
我板子的原理图如下所示:
注:上图中ADS1256晶振实际是8M,图标错了
STM32控制ADS1256用SPI协议,由于设计前功课没做好,硬件设计没用到STM32的硬件SPI,于是只能自己模拟SPI与其通信,调了4天,没搞定,寝食难安……
目前的错误现象:整个PCB硬件冷启动后,有事能正常读数,手动STM32复位后就不能正常读数,有事又能,有时又不能……导致我一直蛋疼,此时发帖也是在强忍蛋疼……
这几天一直在调试ADS1256,也一直在查阅相关资料,发现我应该将芯片CS引脚和reset引脚留出来,由单片机控制。
最后,我一狠心,今早晨自己热转印了ADS1256的最小系统,不加任何隔离,直接连接到STM32最小系统,发现读数很稳定,多次手动复位STM32依然稳定读数。这说明不是程序的问题。问题处在硬件上。
最小系统原理图如下:
在测试这个最小系统时,其实我也是直接将CS接GND,SYNC和RESET直接接DVDD,测试是好用的。
综上所述,问题目前应该首先聚焦在隔离芯片ADum1402ARWZ上。
在我的板子上,将ADum1402ARWZ去掉,不做隔离,直接连接STM32,虽然偶尔出问题,但大多情况是正常的。即使偶尔有问题,读数为0或者乱跳,但是硬件冷启动整个PCB,就又正常了,手动复位STM32后也正常。
请大家帮我看看,为何加了ADum1402ARWZ就不行呢?我也尝试在有ADum1402ARWZ的情况下,在DIN,SCLK,DOUT,DRDY四个数据接口接3.3K上拉电阻,无效…… |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|