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.

[参考译文] ADS1248:即使 START 引脚保持低电平、也可以对寄存器进行读取和写入。

Guru**** 2538930 points
Other Parts Discussed in Thread: ADS1248

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1127875/ads1248-reading-and-writing-to-registers-is-working-even-when-start-pin-is-held-low

器件型号:ADS1248

您好! 希望你们做得好!

我正在使用 ADS1248从其中的所有4个通道读取电压。 因此、我必须通过写入该 ADC 的 MUX0寄存器来循环浏览通道。 在 ADC 的首次初始化期间、我将设置 SPS、IDAC 电流、PGA 值、选择通道1等。 我不会将 ADC 的 START 引脚保持在高电平、但在某种程度上、当我从 ADC 寄存器读回时、我可以轻松地验证并查看寄存器是否发生了更改和更新、这不是德州仪器在数据表中描述的那样。 在数据表中、它指出 ADC 的 START 引脚应在寄存器读取和写入事务期间处于高电平。 这也很奇怪、因为通常使用 START 引脚来启动 ADC 转换、而不是更新寄存器值。 我正在使用 RDATAC 模式。 下面是我的伪代码在初始化时的样子、

  1. START 引脚设置为低电平。
  2. CS 引脚设置为低电平。
  3. 复位引脚设置为低电平。
  4. 等待0.2ms。
  5. 复位引脚设置为高电平。
  6. 等待0.9ms。
  7. 发送配置缓冲区(包括 RREG 命令以及用于读回寄存器的15个 NOP)。 如下所示、 Config_Buffer =[0x40、0x06、MUX0-OFC2、0x4A、 0x04、IDAC0-GPIODAT、0x20、0x0E、15NOPs]。
  8. 将接收到的值与发送的值进行比较。
  9. 将 START 引脚设置为高电平以开始数据采集。

当我比较它们时、它始终是正确的。 然后、我尝试执行上述操作、但现在 START 引脚保持高电平、直到比较结束状态、这也会产生相同的结果。

初始化后、我查找 DRDY 引脚的第一个下降沿;当我得到该下降沿时、我发送3个 NOP 以读取数据;读取完成后、我发送另一个具有新 MUX0 (将通道更改为通道2)、OFC0、OFC1和 OFC2 (用于偏移校准)的缓冲器。 将 START 引脚设置为低电平、直到经过25ms、在这里我将 START 引脚设置为高电平、等待 DRDY 下降沿、然后再次读取、这一次是从通道2读取、 然后通过写入 MUX0寄存器再次将通道更改为通道3、并使 START 引脚再次变为低电平、直到25ms。 它会持续到4个通道被读取并重新开始。 此外、当我读回 MUX0寄存器以验证通道是否正确更改时、它有时会发送上一个通道的值、当我重新发送未更改通道的 MUX0值时、它会修复并更改通道。 简而言之、通道在大部分时间都是正确的、但有时当我没有接收到我写入 MUX0的值时、需要2或3次尝试更改。

我所面临的主要困惑是、ADS1248数据表要求在写入和读取寄存器时保持 START 引脚为高电平、但它也在使 START 引脚设置为低电平的情况下工作。 这是正常的吗?

谢谢!

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

    您好、Rohail Syed、

    您能否通过逻辑分析仪、DMM 或示波器确认在 RREG 和 WREG 命令期间 START 引脚实际被驱动为低电平? 可能是另一个信号将该引脚保持为高电平、这与您实际使用 MCU 切换该引脚无关。

    鉴于 WREG、RREG 或两个命令在100%时间内似乎都不起作用、这是合理的、因为您注意到 MUX0读取并不总是准确(这是读取错误还是写入错误不清楚)。

    它有助于查看所有通信信号(DIN、DOUT、CS、SCLK、DRDY、 启动和复位)。

    布莱恩

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

    图1.

    图2.

    嗨、Bryan!

    上图显示了使用 WREG 和 RREG 命令在 START 引脚保持低电平的情况下与 ADS1248寄存器进行通信的情况。 我无法在一张图像中捕获所有内容、因此我拍摄了两张相同信号的屏幕截图。 请告诉我这里可能会出现什么问题、因为数据表清楚地表明、对于寄存器读取和写入事务、START 引脚需要为高电平。

    谢谢!

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

    您好、 Rohail Syed、

    如果 ADC 仍处于转换过程中、即使启动状态为低电平、也仍然可以对寄存器进行写入和读取。 一旦转换过程完成且 START 引脚为低电平、此时您将无法再发送 WREG 和 RREG 命令。 遗憾的是、前面的屏幕截图中没有 DRDY 引脚、因此我们无法判断您显示的交易中是否正在进行转换。

    此外、根据您的电路板设计方式、ADC 可能会在加电时立即开始转换。 因此、即使您将 START 拉为低电平然后发送命令、在初始化过程中可能已经在进行转换。

    如果您希望发送显示 DRDY 引脚状态的更新屏幕截图、这将有所帮助。 您还可以通过将 START 拉为高电平然后拉为低电平来测试这一点、等待 DRDY 转换以指示新数据已就绪、然后等待一段时间(至少1秒以确保安全)、然后尝试在 START 仍为低电平时读取和写入寄存器。

    最后、是否不能像数据表中描述的那样只切换 START 引脚? 您在上一篇文章中提到、当您不断将起始值变为高电平和低电平时、在执行寄存器的读取和写入时会出现一些问题。 如果您只保持 START 引脚为高电平、您会遇到同样的问题吗? 如果没有、是否有任何原因不使用 ADS1248数据表中给出的所需 START 引脚行为? 我对为何不能针对此应用遵循正确的程序感到困惑。

    布莱恩

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

    嗨、Bryan Lizon、

    以下屏幕截图也包括 DRDY 引脚状态和复位引脚状态。

    在这里、我们可以看到、当 ADC 复位时、即使在 ADC1和 ADC2初始化之前、DRDY 引脚也会被拉至高电平。 但是、在复位后、当 START 仍然为低电平时、ADC 会开始转换吗? 我不这么认为。

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

    您好、Rohail Syed、

    感谢您提供附加信息。

    在我上一篇文章中、我提出了以下问题:

    "您在上一篇文章中提到、当您不断提高和降低启动速度时、执行寄存器的读取和写入会出现一些问题。 如果您只将 START 引脚保持在高电平、您会遇到同样的问题吗?"

    我问这个问题是因为即使在低电平启动的情况下、ADC 也可以读取和写入寄存器(尽管您的经验表明、这并不总是正确的、因为您遇到了一些通信错误)。 但是、在读取和写入寄存器之前将 START 拉为高电平可使其他内部进程正常运行并按正确的顺序执行。 您可能错过了这些处理步骤、因为您没有遵循数据表建议、这可能会导致转换数据不确定或其他错误行为。 没有明显的方法来确定这种行为将是什么或何时发生。

    因此、在发送 RREG 和 WREG 命令时、您是否有任何原因无法遵循数据表建议并确保 START 为高电平? 这实际上是保证 ADC 的行为与数据表中描述的一样的唯一方法。

    布莱恩