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.

[参考译文] ADS1118:保持上一次读数

Guru**** 2535150 points
Other Parts Discussed in Thread: ADS1118

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/739819/ads1118-holding-last-reading

器件型号:ADS1118

我们在电池供电的器件中使用您的 ADS1118。  它会在10秒至60秒的任何时间唤醒以获取读数、发布读数、然后返回休眠状态。  我们使用 ADC 上4个输入中的3个、单端、使用2.048V 内部基准电压。  我们具有0-10V 输入以及47k 和12.1K 电阻分压器、可将10V 降至2.048。  如果我们有一个接地传感器、比如电压电源、那么输入端的一切看起来都正常、但我不确定我们已经测试了足够的电压。  如果我们有一个传感器依靠我们自己的电池电源运行、没有接地、那么大约60-70%的时间我们会遇到以下问题。  如果输入2处于~1.5V 且已移除、并且输入1连接了~2.4V 输入、那么大约60-70%的时间我们将在输入2上看到与先前在读取的几个读数时完全相同的电压值?  如果我们有10秒的唤醒时间或1分钟、则仍然需要大约3个读数、然后才能寄存0V。  似乎该值在 ADC 中"卡住"。  我们在输入1或输入3上看不到它、只在输入2上看到它、但可能我们只是没有按正确的事件顺序进行操作。  我们已经检查了 ADC 的输入、在采样时、电压为0V。  我们始终保持 ADC 通电、但在读取读数后前端使用的运算放大器断电。

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


    我不确定问题到底是什么。 不过、让我提出几个想法、您可以看到其中是否有任何一个可能是一个问题。

    首先是在连续转换模式还是单次转换模式下使用器件、以及如何读取数据? 对于具有多个通道的测量、我通常建议采用单次转换模式。 连续转换模式的一个问题是很难确定转换何时完成。 当您在配置寄存器中进行编程时、配置寄存器直到转换完成后才会置位。 在此之前、不会使用新数据更新输出数据。

    由于您不知道电流转换何时开始、因此可能需要最多2个数据周期(内部振荡器变化时为+10%)才能获取更新的数据。 对于单次转换、您确切知道转换开始的时间。 要获得正确的数据、您需要等待1个数据周期(内部振荡器变化为+10%、另一个20us 唤醒器件)。

    我提到这一点是因为获取相同的数据似乎是一个时序问题、类似于我刚才描述的问题。

    这并不能解释在没有接地的电池供电时、这可能会发生变化的原因。 我要注意的是、ADC 输入应该有一些相对于器件的直流工作点。 ADC 输入必须在 GND 至 VDD 范围内才能进行有效测量。 输入不应相对于 ADC 浮动。

    除此之外、一些时序信息可能有助于解释您看到的内容。 您是否具有时序序列、说明您如何设置器件以获取数据并循环浏览通道? 您是否能够发布原理图。 两者都有助于解决问题。


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

    我已附上两个文件、一个是显示模拟输入所有器件的原理图、另一个是显示未放置的器件或器件所用值变化的器件的原理图。  I_Mode_x 信号关闭、处于低电平、因此您可以忽略 AI_1和 AI_2的电路。  希望我能正确上传。  如果不是、请说明应如何执行此操作。  仅为了澄清、对于 ADC、SW_3.3V 在~3.3V 时始终开启。  在本例中、SW_Analog Pwr 在从 ADC 获取读数之前会开启1秒。  SW_Analog Pwr 为~3.3V、还用于为外部传感器供电、在本例中、这是一个带有接地电阻器的光电二极管、其中3个用于3个模拟输入。  我们使用的是具有操作系统且无法访问低级 SPI 例程的微控制器。  我们也无法将 DRDY 引脚读取为 GPIO、因此除了等待之外、我们不知道转换何时完成。

    我们的器件在用户定义的时间间隔唤醒、然后为模拟前端加电、等待1s、然后读取 ADC 通道、从前端移除电源并返回睡眠状态。

    问题声明是、ADC 输入通道2经常保存最多3个 ish 样本的先前读数。  无论唤醒间隔是10秒还是1分钟、清除旧读数仍需要大约3次唤醒间隔。

    请告诉我以下是读取单次采样的过程、是否为128SPS。
    降低 CS
    发送控制寄存器、将 SS 设置为1、将 MUX 设置为 AIN0、忽略数据
    升高 CS
    等待9mS、等待15mS
    降低 CS
    发送控制寄存器、将 SS 设置为1、将 MUX 设置为 AIN1、读取 AIN0的数据
    升高 CS
    等待9mS、等待15mS
    降低 CS
    发送控制寄存器、将 SS 设置为1、将 MUX 设置为 AIN2、读取 AIN1的数据
    等等...等等...

    e2e.ti.com/.../0876.Analogue-input.pdfe2e.ti.com/.../Analogue-input_5F00_VAR.pdf

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


    我会使用类似于数据表图41中所示的32位数据传输周期的东西。 然后在整个传输过程中将 CS 保持为低电平。 这样、您就可以看到 ADC 何时完成转换。 您可以对其进行计时、但通过使用32位、您可以看到 DOUT/DRDY 在转换完成前返回高电平。

    首先设置 MODE=1。 在设备上设置其余配置。

    将 CS 置为低电平

    32位以读取最后一个数据(被忽略)并设置 SS 进行单次触发、保持模式= 1、将 MUX 设置为 AIN0
    轮询 DOUT/ DRDY 直到其返回低电平。 或等待足够的时间来完成转换

    32位以读取最后一个数据(来自 AIN0)并设置 SS 进行单次触发、保持模式= 1、将多路复用器设置为 AIN1
    轮询 DOUT/ DRDY 直到其返回低电平。 或等待足够的时间来完成转换

    32位以读取最后一个数据(来自 AIN1)并设置 SS 进行单次触发、保持模式= 1、将多路复用器设置为 AIN2
    轮询 DOUT/ DRDY 直到其返回低电平。 或等待足够的时间来完成转换

    等等...

    返回 CS 高电平

    请注意、您可以在每次通信之间返回 CS 高电平、但最好查看 DOUT/DRDY 返回低电平以指示转换。 设置方法是完成一个转换并开始下一个转换。 如果您希望在转换之间等待、您仍将使用相同的32位数据传输、但您只需发送 NOP 即可、而不是下一个设置、您可以在以后需要时启动下一个转换。

    如果您仍然遇到问题、我将首先使用示波器来查看数据传输。 我将捕获转换开始和读取数据(从转换完成开始)。 您可以将示波器快照放入线程帖子中。


    吴约瑟
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Joseph、
    正如我在上一个答复中所说的、我们的器件有一个不是我们的板载操作系统、我们无法访问较低电平的驱动器、因此我们无法在代码中查看 DRDY 引脚。 我们只需使用要发送和接收的字节来调用高级 SPI 例程。 我们也无法控制 CS 线路、低级驱动程序在调用 SPI 例程时通过降低处理该线路、而在返回时通过升高该线路。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bill、


    首先、我肯定会拔出 FB1并将其替换为较短的值。 数字电源中的铁氧体会导致一些电源尖峰方面的不可避免的问题、并且可能会中断 SPI 通信。 这可能还可以、但需要检查一下。

    我再次查看了您的原理图、但仍不确定正在发生什么情况。 转换时序和读取数据不应受到任何给定通道的影响。 在您的情况下、您在使用电池电源但没有接地的情况下似乎遇到了输入2问题。 对于 ADC、没关系。 我会说、您似乎有多个电源电压、如果输入存在问题、我不确定它们如何交互。 他们似乎都有共同的立场,所以我以为这是可以的。

    如果您正在读取 ADC 输出、并且数据与之前的转换相同、那么在我看来、转换时序仍然是一个问题。 您只能读取我可以想到的相同数据:

    1、数据周期比预期的长、转换没有完成。
    2、由于 SPI 问题、转换未启动、ADC 仍在等待、通过重新写入 START 命令、转换结果出现。
    3.由于板载操作系统的时序不正确,因此等待读取数据的时间不够长。

    如果您无法轮询 DRDY/DOUT 以查看 ADC 是否已完成转换、则用示波器或逻辑分析仪绘制 SPI 通信图可能就足够了。

    通过绘制 SPI 通信图(您可能需要具有一定存储器深度的示波器)、您可以看到用于启动转换的通信是正确的。 如果您捕获了该信息、请将其发布在此处、以便我们可以查看它。 然后查看读取发生时的 SPI 通信。 当转换开始后读取 ADC 时、当/CS 首次变为低电平(在 SCLK 启动之前)时、DRDY 的状况是什么? 如果 DRDY/DOUT 为高电平、则转换尚未完成。 如果 DRDY/DOUT 为低电平、则表示转换已完成。 同样、您需要32位传输周期来确保在转换开始时 DRDY/DOUT 变为高电平。

    获取一些示波器截图、我们也可以查看 SPI 时序。 如果 SPI SCLK 过快、或者 SCLK 到/CS 过短、也会出现问题。


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


    有一段时间没有收到您的回复、因此我想我会发帖检查您的进度。 您是否能够调试您的问题? 如果您有、原因和解决方案是什么? 在我的上一篇文章中、我确实给出了一些测试的想法、但对来源没有任何明确的想法。

    现在我将关闭此线程、但如果您继续遇到问题、请发布回、它将重新打开该线程。


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

    您好、Joseph、

    感谢您的帮助、事实证明问题与我们器件中的硬件或固件无关。  它与网关中的软件相关、该软件将我们的器件发送的数据转换为人类可读的格式。  再次感谢。