stm32上调试AD5410

按照给的示例代码能够正确地设置电流大小,但是读取数据却全为0,显然没有读到数据。

用示波器观察5410pin10上的波形,正常,观察经过ADUM1401后的波形也正常。

调整了函数ReadFromAD5420中以下的延时:

RotateData <<= 1; //Rotate data
delay_AD5420(10);
CLR_SDO();

原本是1,调整到10后,OK

 

单个原件调通了,然后调试菊花链模式:

手册中说的比较简单些,大概是说,需要把5410配置为菊花链使能,然后每次发送数据时都要发送完24*N后再给LATCH有效沿。

于是我把设置控制寄存器的指令发了3遍(3遍发完后,才给一个LATCH有效沿),然后再发送3遍(3遍发完后,才给一个LATCH有效沿)设置电流值的指令(为了测试,我特意把3个芯片的电流值设为不一样的),

但结果是错的,仍然是只有第一个芯片设置成功并输出了电流,其余两个芯片没有。

猜想错误可能是:在设置控制寄存器时,芯片仍然处于菊花链未使能模式,因此,并不会把24个bit之后的数据发送到下个芯片去。

因此,试了试把设置控制寄存器的指令发3遍,但每发一遍都发一个LATCH有效沿,以让芯片的菊花链使能生效。

结果:OK

 

posted on 2020-01-10 11:36  坚强地活着  阅读(961)  评论(0编辑  收藏  举报

导航