引用: 深圳王先生 发表于 2018-7-27 10:10
很有可能是因为数据读取不及时(太频繁),导致数据寄存器被新的转换结果覆盖(新的结果仍然未完成),检查一下系统的查询周期。
在获取到转换完成的信号后,再发送指令 读取数据寄存器。
ADC始终是从机,不会主动发SPI时钟。 ...
这个很没有道理,我每次都先查询DOUT/nRDY是否为低电平,然后就直接读取数据寄存器。很奇怪的是只会出现在32bit的数据寄存器的8位状态寄存器的nRDY位上。我一开始怀疑是不是SPI通信有干扰和噪声,所以我对每次数据的状态寄存器的每一位都进行有效性验证,还开了奇偶校验,最后结果是只有这个nRDY位会出现异常的‘1’,奇偶校验位和其它0位都是正常的。
所以应该不是通信问题。是否推荐在DOUT/nRDY为低电平后等待一段时间再进行数据寄存器读取操作?
引用: 深圳王先生 发表于 2018-7-27 10:10
很有可能是因为数据读取不及时(太频繁),导致数据寄存器被新的转换结果覆盖(新的结果仍然未完成),检查一下系统的查询周期。
在获取到转换完成的信号后,再发送指令 读取数据寄存器。
ADC始终是从机,不会主动发SPI时钟。 ...
这个很没有道理,我每次都先查询DOUT/nRDY是否为低电平,然后就直接读取数据寄存器。很奇怪的是只会出现在32bit的数据寄存器的8位状态寄存器的nRDY位上。我一开始怀疑是不是SPI通信有干扰和噪声,所以我对每次数据的状态寄存器的每一位都进行有效性验证,还开了奇偶校验,最后结果是只有这个nRDY位会出现异常的‘1’,奇偶校验位和其它0位都是正常的。
所以应该不是通信问题。是否推荐在DOUT/nRDY为低电平后等待一段时间再进行数据寄存器读取操作?
举报