我们尝试在不监控DRDY信号的情况下将ColdFire V1中的RDATA命令用于单个ADS131E06;监控此信号会给系统增加相当大的复杂性,我们愿意接受结果中会出现定时抖动。 ADS131使用内部振荡器(ADSMHz) 2.048 和外部参考。 芯片在加电时配置(RESET,SDATAC,config1 = D2h,D4H或D6H, 开始,所有时间限制都得到了适当的遵守)。
我们以大约1毫秒的间隔发出RDATA命令。 但是,我们偶尔会看到RDATA命令返回的数据值被破坏。 大多数情况下,所有信道的值都已损坏,但偶尔,似乎只有某些信道中的数据已损坏(在这些罕见情况下,没有观察到哪些信道的模式)。 腐败几乎可以采取任何形式;错误数据没有明显的模式。 例如,这不仅仅是一个双边投资条约被以某种方式转移的问题。 状态寄存器的四个最重要位始终正确(当前忽略状态寄存器的其余部分)。 更改输出数据速率(在config1,寄存器1,位0-2中)会更改观察到的错误的频率。 当速率设置为1 ksps时,我们会看到每12.8万个查询中的平均错误率约为1。 在4 ksps时,每2.6万个查询的平均速率约为1。 在16 ksps时,每7000次查询的平均速率约为1。 这些值在数分钟内以百万次查询(同样,查询的频率为1 kHz)为平均值;错误发生时没有可观察的模式。
虽然此芯片与其它芯片共享SPI总线,但在此测试期间,所有其它芯片都已禁用。 经过测试,1 MHz到13 MHz之间的SPI总线速度对损坏数据的频率没有明显影响。 增加了延迟,以确保tCSSC和tSCCS比数据表中的最小值长很多倍(测试了大约10 usec的延迟); 额外的延迟似乎对返回错误数据的速率没有影响(据认为,最初的时间安排已经达到了最低限度的延迟)。 某些测试在发出RDATA命令之前立即读取了寄存器00h到00Ch;返回的寄存器值始终是预期 值,即使立即执行的RDATA命令产生损坏的数据时也是如此。
在每个通道的MUX中选择正常输入(CHnSET寄存器位0-2)以及将MUX设置为使用短路输入(值= 001)时,观察到相同的错误率。 大多数测试都是在MUX选择短路输入的情况下执行的。 由于我们处于非常早期的测试阶段,我们处于良性电气环境中;系统的其余部分(包括同一SPI总线上的其他芯片)没有噪音问题。
由于SPI参数在报告的错误率方面没有明显的差异,并且报告的寄存器值始终是预期值(而且几乎所有数据值看起来都正确),我认为SPI总线或配置不存在问题。
ADS131的输出数据速率与错误速率之间的相关性使我相信,当发出RDATA命令时,还存在其他一些与计时相关的问题。 根据数据表的9.5 .3.10 部分(第 37),对何时可以发出RDATA命令没有任何限制(与使用RDATAC命令不同,RDATAC命令必须避免DRDY附近的区域坠落)。 事实上,以下引述来自该节:
RDATA最适合必须读取寄存器设置或用户无法 精确控制定时的系统。 建议使用RDATA命令读取数据,以避免在 未监控DRDY信号时数据损坏。
但是,同一节建议在发出RDATA命令之前DRDY降低,这让我想知道是否有一个与RDATAC命令类似的禁止区域,在该区域中发出RDATA命令可能会返回损坏的数据。 查看观察到的错误率,它似乎大约为16 * tCLK周期。
您能否告诉我RDATA命令是否有禁止区域,或者告诉我可能会出现什么问题的其他想法?
非常感谢您的帮助。
