按照给的示例代码能够正确地设置电流大小,但是读取数据却全为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