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.

[参考译文] ADS124S08:读取转换数据时出现问题

Guru**** 2589280 points
Other Parts Discussed in Thread: ADS124S08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1016589/ads124s08-issue-with-reading-conversion-data

器件型号:ADS124S08

我正在将 ADS124S08 (目前正在使用您的评估板、但已切断-基本上是一个简单的电源和芯片支架)连接到 FT240X (并行 USB 接口)。  我使用 FT240X 上的位拆裂与 ADS124通信。  我正在使用 LabView 接口运行 FT240X 和位拆裂。  我可以成功通信、读取寄存器、更改寄存器、有时还可以读取 A/D 转换。

我正在使用按需转换(reg 4设置为 X22 -单冲、SINC 滤波器、10SPS)。  无论这些寄存器的设置是什么、都会出现问题。

问题非常不寻常。

在发出单次启动转换命令后(如上所述)、我在直接模式下读取转换。

读取18个寄存器后、我发出 START 命令、然后等待/READY 变为低电平。  在执行 START 命令后、/READY 立即变为低电平、然后我读取了垃圾信息。  如果我重复此命令、无论我使用多少次读取、它都将读取 OK。  读取寄存器会继续执行该序列、其中的第一个开始读取是垃圾。

现在,读取的是 AD1 (reg 2设置为1C)。  如果我只将 reg 2更改为 x2C 值(读取 AD2)并发出启动命令、则它会正确读取。  然后、如果我继续执行开始读取操作、它将读取垃圾信息。  但是、如果我在开始读取之前插入一个 NOP、那么它的读取是正确的。  如果我继续执行序列 NOP-Start-Read -NOP-Start-Read、一切都正常。  通过使用一个示波器、NOP 读取前一个转换的第一个字节(正如它应该的那样)。

现在、如果我切换到另一个寄存器、有时我需要 NOP、有时我不需要 NOP。  如果我使用过多的 NIOP、那么它会读取垃圾。

基本上、当系统不工作但运行正常时(延迟就绪直到转换完成)、/READY 线路在发出 START 命令后立即变为低电平。  我可以通过更改 SPS 或低延迟滤波器与 sinc 的数量来延迟准备工作、因此我相信系统至少响应正确。  我还会读取寄存器、并且任何更改都是正确的。

我已经尝试 用编程方式切换其他线路-例如 CS (当前连接低电平)和/RESET (当前悬空)和 START (当前连接低电平)。  认为这是编程错误。  几年前、我在 TIMPSP430F149工作、还花了几天时间来发现器件错误。  此芯片未报告勘误表、因此我假设一定会产生愚蠢的编程错误。

该程序有许多用于故障排除的变体、没有成功、并且具有示波器和波形的监控线路看起来很棒。  甚至尝试更改数据速率。  尝试停止转换、唤醒等、但未成功。

注意:/READY 指 DOUT/\RDY 行、但/DRDY 行的行为相同(在示波器上镜像)。

如果对这种异常行为有任何想法、我们将不胜感激。

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

    尊敬的 David:

    欢迎来到 E2E 论坛!  首先要做的是将 RESET 引脚绑定到高电平、因为 ADS124S08上没有内部上拉电阻。 将引脚保持在悬空状态可能会无意中导致发生复位情况。

    第二个注意事项是 DOUT/ DRDY 的使用。  转换完成后、该引脚将从高电平转换为低电平。  但是、转换周期很短、因此通常使用中断驱动方法而不是引脚轮询方法。  如果需要轮询方法、则输出引脚应强制为高电平、因为转换结果中的最后一位可能为高电平或低电平、从而使轮询变得困难。  如果您看一下 ADS124S08数据表中的图6、您将看到 DOUT/DRDY 将进行类似于 DRDY 的转换、但第一个 SCLK 将强制 DRDY 处于高电平、而 DOUT/DRDY 将相对于输出移位寄存器的内容进行转换。  输出缓冲器中的数据位于环形缓冲器中。

    我无法完全按照您的说法进行操作、因此一些示波器或逻辑分析仪快照会有所帮助。  如果您使用的是采用 SINc3滤波器的10sps 速率、则在发出 START 命令后大约需要300ms、DOUT/DRDY 才会变为低电平。  确保您没有将最后一位的操作误解为 DRDY 变为低电平的响应。  

    例如、如果在根据需要配置 ADS124S08后发出 START 命令(并且假设在初始上电之后没有读取寄存 器)、则可能看不到 DOUT/DRDY 变为高电平。  当直接读取时、ADC 的初始状态将在输出缓冲器中为"0"、没有任何东西可以将 DOUT/DRDY 引脚的状态驱动为高电平。  此时、如果您轮询引脚、引脚将为"0"、即使转换刚刚开始、转换也会显示为已完成。

    如果要轮询引脚以搜索从高电平到低电平的变化、则需要强制 DOUT/DRDY 输出为高电平。  您可以通过读取寄存器中最后一位为高电平的寄存器来实现此目的。  可能的示例包括关闭 IDAC 幅度选择的寄存器0x06、或断开 IDAC1的 IDACMUX 的寄存器7。  根据所需的配置、可能还可以使用其他一些寄存器。

    因此、轮询 DOUT/ DRDY 的最佳方法是:

    • 发送 START 命令
    • 此后、立即读取最后一位为高电平的单个寄存器
    • 然后轮询 DOUT/ DRDY 以了解从高电平到低电平的转换

    其他可能的选择是:

    • 使用计时器、等待转换完成、然后读取数据
    • 轮询 DRDY 而不是 DOUT/DRDY
    • 使用 RDATA 命令读取完成的最后一次转换、而不是直接读取数据

    此致、

    Bob B

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

    谢谢!  这正是问题所在、它导致了该系统的奇怪行为。  我根据您的建议修复了该问题、即读取设置了相应位的寄存器以设置 DOUT/RDY 行。  NOP 所发生的情况是、它将读取之前的 ADC 结果、如果设置了我要轮询的那条线路、则系统将工作。  某些 ADC 只有正确的值来始终设置该行、而其他 ADC 则没有。

    手册中没有说明此行更多是中断线的位置。  即使在这种情况下、也应根据启动请求将其设置为高电平。  这只是忙应该起作用的一种逻辑方法。  本手册意味着这两条线路是等效的、您可以使用3线 SPI 接口。  我在设计系统时就考虑到了这一点。  显然、它们并不等效。  一些图确实意味着 DOUT/RDY 线为高阻态、不会被驱动、但情况并非如此(上拉电阻器未解决问题)。  我不确定这是否真的是高阻态、因为示波器没有反映这方面的情况。

    BTW: 我不确定如何将该线路用作中断、而不是轮询(如果 FT240X 芯片甚至可以这么做、 它无法做到这一点-它实际上可以、但我不介意在等待循环中绑定处理器)、因为在 ADC 转换完成后、它似乎没有针对低电平到高电平转换进行正确设置。  但您可以在第二天解决该问题。

    我知道更改数据表很困难、但更好地讨论 SPI 接口会对我大有帮助。

    再次感谢您的快速响应!

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

    尊敬的 David:

    我很高兴听到您现在能够让事情正常工作。  在向数据表添加更多详细信息方面、ADS124S08数据表已超过100页、因此、它是否真正是数据表还是更多用户手册成为了一个问题。  最后、我们尽量平衡这一点。  这个论坛是帮助解决这些问题的一个途径。  简而言之、我们当然可以改进数据表、但我们不能将器件的所有细微差别都放在数据表中。  操作的组合太多了。

    DRDY 线路是 用于确定转换结束的所需引脚、因为这是该引脚的唯一用途。   多功能引脚的设计无法完全模拟单功能引脚的行为。  在这种情况下、DOUT/ DRDY 引脚将使高电平到低电平的转换与 DRDY 引脚相同、但在读取数据后没有强制该引脚为高电平的机制。

    尽管并未明确说明最好使用中断系统、但多次声明、表示发出信号、表明新的转换结果已准备好从器件中读取是 DRDY 的下降沿。  许多时序图也显示了这一点。  逻辑电平信号表示新的转换结果已经完成、这一点也没有提到。

    在几个地方提到了轮询。  一种是使用 RDATA 命令返回最后一个转换结果、而不依赖于 DRDY 的当前状态。  第二个是在数据表第71页的第9.5.5节中使用多个器件时。  我在下面的部分中包含了一个部分:

    "将多个器件连接到单个 SPI 总线时、SCLK、DIN 和 DOUT/ DRDY 可通过为每个启用 SPI 的器件使用专用芯片选择(CS)线路安全共享。 当相应器件的 CS 转换为高电平时、DOUT/DRDY 进入三态模式。 因此、如果 CS 处于高电平、则不能使用 DOUT/DRDY 指示何时有新数据可用。  只有专用 DRDY 引脚指示新数据可用、因为即使 CS 处于高电平、DRDY 引脚也会被主动驱动。

    在某些情况下、DRDY 引脚无法连接到微控制器。 如果微控制器上可用的 GPIO 通道不足、或者串行接口必须进行电隔离、因此必须限制通道数量、就会发生这种情况。 为了评估其中一个器件的新转换何时准备就绪、微控制器可以定期将 CS 降至相应器件并轮询 DOUT/DRDY 引脚的状态。

    当 CS 变为低电平时、DOUT/DRDY 引脚立即驱动为高电平或低电平。 如果 DOUT/ DRDY 线路驱动为低电平、则新数据可用。 如果 DOUT/ DRDY 线路驱动为高电平、则不提供新数据。 该过程要求 DOUT/DRDY 在读取每个转换结果后以及在 CS 拉为高电平之前强制拉为高电平。 为了确保 DOUT/ DRDY 置为高电平、发送 RREG 命令以读取最低有效位为1的寄存器。

    使用直接读取模式检索数据需要了解 DRDY 下降沿时序、以避免数据损坏。 使用 RDATA 命令可随时从器件中检索有效数据、而无需担心新数据损坏。"

    此致、

    Bob B

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

    我不想放弃这一点,因为你的帮助解决了这个问题。  但是、您引用的部分标题为"连接多个器件"、我没有这样做。  此外、CS 连接至低电平、三态问题是 CS 变为高电平。  我假设 CS 始终低于 DOUT/RDY、DRDY 将相互镜像。  另一个假设是、由于新数据未立即准备就绪、读取命令会立即强制 DOUT/RDY 变为高电平。  因此、读取操作可能会使 DOUT/RDY 用于轮询、因为您可以在不使用时钟的情况下查看该行。  只是芯片的设计不是这样的。  当前设计的唯一优势是、您可以在转换过程中读取之前的值、并知道该值是可靠的。  这在连续模式下可能是最好的、而不是单次触发模式、但与转换同步将是一个难题、不清楚如何实现。  但是、这一优势很小、因此不清楚芯片为什么具有这一设计特性。  在任何情况下、无论 DOUT/RDY 行显示什么、您都可以读取以前的值、并且知道之前的转换已完成、您就会知道该值是有效的。  因此、将 DOUT/RDY 作为一个级别工作会使芯片与 SPI 更兼容。  如果能更好地解释"只能使用四 个甚至三个控制信号"、 将会对我大有帮助。  不过、您的解释解决了这个问题。