This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1256:如何配置 RDATAC

Guru**** 1144750 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1319652/ads1256-how-to-configure-rdatac

器件型号:ADS1256

大家好、

我目前在尝试使用指定的 ADC 持续读取数据时遇到难题。 在我的应用中、该器件成功使用不同输入执行测量循环。 然而、在特定事件期间、我需要连续读取特定输入 并以特定的速率(1k S/s)进行采样。 我面临的问题是、每次发生该事件时、我都会将寄存器设置为 RDATAC 模式、但返回的测量值包含与我尝试获取的实际测量值无关的随机值。

我捕获了一些示波器镜头、并观察到 MIMO 总线上存在这些不寻常的值。 因此、它们不是由我的通信系统中任何形式的噪声引起的。

要启用 RDATAC 模式、我将配置四个寄存器并使用三个命令。 此寄存器包括 STATUS (启用输入缓冲器)、MUX (将+AIN6和-AIN7设置为差分输入)、ADCON (针对单位增益)、和 DRATE (针对2k S/s 上的采样)。

附件是供您参考的示波器屏幕截图。

写入这些寄存器后、会引入2ms 的延迟。 随后、RDATAC、SYNC 和 WAKEUP 命令按此顺序执行、每条命令以2ms 的延迟间隔。

 

此初始化之后、每当发生 DRDY (Pin)外部事件时、我都会使用 RDATA 命令、将返回值存储在缓冲区中、大小为1000。 尽管为2k S/s 设置了 DRATE、但我始终每1ms 收到一个测量值(奇怪的行为、但不是问题)。

下表显示了返回值以及第一个测量值(Cap_Sample [0])的范围触发器。

预期测量是初始值约为0.156V 的电容式放电(100nF 与1MOhm 并联)。

您能帮我找到我做错了什么吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lucas Rosa:

    作为供参考、如果您使用 RDATAC 模式、则无需发出 RDATA 命令。 RDATAC 模式的整体用途是、一旦您开始发出 SCLK、ADC 就会输出数据。

    如下图所示、当您发送 RDATA 命令时、您要在 DIN (MOSI)上发送哪些其他命令? 在数据事务期间不应发送任何其他内容。 除了0x00 (NOP)命令外、这些命令看起来也不像有效命令

    您能否提供一些简短的伪代码来帮助我了解预期的固件流程? 请不要发送实际的代码、而是简单分步地描述您正在执行的操作。 听起来您正在混合 SDATAC 和 RDATAC 模式、并且不清楚您是否要在各个通道间进行多路复用(我假设是这样、否则您为什么会使用8通道 ADC)

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan:

    感谢您的帮助。 我最初忽略了 RDATA 命令在 RDATAC 操作中不是必需的。 关键的解决方案是确保 MOSI 总线在 MISO 传输期间保持低电平。 由于传输了用于生成 SCK 的非空虚拟数据、因此发送随机值时会出现问题。 我故意发送0x00 0x00 0x00来解决此问题、现在测量结果是准确的。

    再次感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lucas Rosa:

    很高兴我们可以帮助您快速解决此问题!

    -Bryan