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.

[参考译文] ADS1255:读取某些值时出现尖峰

Guru**** 2482675 points
Other Parts Discussed in Thread: ADS1235, ADS1255, ADS1219

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1550889/ads1255-spikes-appearing-when-reading-certain-values

器件型号:ADS1255
Thread 中讨论的其他器件: ADS1219、ADS1235

工具/软件:

大家好:

我需要您帮助、弄清楚 ADC1255 出了什么问题。

我用它来读取 NTC( 10kΩ at 25°C ) 并将其转换为温度。 问题在于、当 ADC 应该读取 0V 等特定值时、即 10kΩ=> 25°C。 会发生尖峰、ADC 不会读取 0、而是发送 65530、–65555 等值。 这些尖峰似乎也遵循我无法解释的模式。

首先我认为这是由于校准值造成的。 因此,我禁用了自动校准,并将 OFCAL(偏移校准)寄存器设置为 0。 它没有改变任何东西。

然后我认为这是一个硬件问题、但 ADC 似乎几乎在所有时间都能正常工作。

我在 3 个不同的 ADC 上尝试了这些解决方案、似乎没有效果。

以下是我设置的寄存器、它们在运行时不会更改:

设置差分通道;设置自动校准;模拟缓冲器开启;采样率= 25 或 1000;PGA = 1;

在这里、您可以看到它是怎样的。

尖峰是由于 ADC 读数不正确所致。

这是另一个、请注意底部。

感谢您的阅读和任何指导,你可以给.

此致、

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

    尊敬的 Halidi Noudjoumou:

    您是否可以尝试应用简单的直流电源 来查看 ADC 是否可以正确转换该信号? 可以使用简单的 1.5V AA 电池

    此外、请在表格中发送您从 ADC 收到的实际数据代码、以便我们能够查看。 这应该是十进制或十六进制的 ADC 代码。

    最后、请提供原理图

    -布莱恩

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

    您好 Bryan、

    谢谢你的答复,我现在不能进入董事会,但我会这么做.

    这是原理图。

    在 CSV 文件中、您可以找到日志。 第一列是来自 ADC 的原始数据(以十进制表示)、第二列是它们以温度(以°C 为单位)进行的解释

    您可以省略其他列。

    e2e.ti.com/.../ads1255_5F00_logs_5F00_spikes.csv

    此致、

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

    嗨、Halidi Noudjoumou

    您能否提供用于 ADS1255 的寄存器设置?

    您是否还能提供通信的逻辑分析仪数据? 在“不良“转换之前、期间和之后查看数据会非常有用。 请包括 CS、DOUT、DIN、SCLK 和 DRDY

    -布莱恩

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

    您好 Bryan、

    这是 SPI 外设设置:

    - 8 位

    - MSB 在前

    - 281.25 千比特/秒

    -极性= 0 和相位= 2 边

    ADS1255 设置:

    - NSEL = 1;PSEL = 0

    -自动校准= 1;模拟缓冲器= 1

    - PGA = 0

    -数据速率=  0b1010001 或  0b01000011;问题仍然存在无关紧要

    就是这样、这是唯一修改的寄存器、任何其他内容都被设置为其默认值。 我尝试将 OFCAL 设置为 0、但它不起作用

    低于 ADS1255 读数 1.5V 时、没关系。

    红色=时钟;蓝色= MISO;绿色= DRDY;黄色= CS;

    ADS1255 读取“正常“值、应该接近 0。

    然后是同一器件读取“错误“值、该值应该接近 0。

    希望这有所帮助。

    此致、

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

    嗨、Halidi Noudjoumou

    请记住、ADS1255 使用二进制补码格式。 因此、您在第二个图像中显示的代码(看起来像 FFFF55h)是一个非常小的负数(例如,如果它是 FFFF55h =–171d)

    所以我认为这里没有什么问题、可能只是对输出数据格式的误解而已

    -布莱恩

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

    您好 Bryan、

    是的、我很小心地检查了从 24 位到 32 位有符号位的转换是否运行良好、我使用的函数与所有其他 ADC 中的函数相同、这是我第一次遇到这种情况。

    我可能在上一封邮件中发送了错误的数字、因为这确实是一个“小“的负数。 我添加了断点并检查了软件中的一些“错误“数字、得到的结果如下:

    第一列= ADC 中的二进制字;第二列=温度表示

    –72 24.998193740844727
    –6 24.999849319458008.
    122. 25.003061294555664
    0 25.0
    86 25.00215721130371.
    65480 26.6519718170166.
    148. 25.003711700439453.
    65522 26.653038024902344
    –70 24.998245239257812
    65498 26.652427673339844.
    –122 24.99694061279297.
    –215 24.99460792541504.
    13 25.00032615661621
    114 25.002859115600586.

    在这里、您可以看到正值和负值都接近 0、然后您可以看到大约 65000、这相当于错误的温度读数。

    此外,在我的初始帖子的最后一个图形显示,这种现象发生在除 0 以外的值附近,并且跳跃的幅度总是在二进制值的 65000 左右。

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

    尊敬的 Halidi Noudjoumou:

    您能给我发送逻辑分析仪捕获的“不良“数据以便我查看吗? 与您之前显示的图像类似、但请在一次捕获中包含“坏“数据前后的数据、然后放大三个数据中的每一个数据 (“好“、然后是“坏“、再是“好“)。 因此总共有四个图。

    例如、我想看到逻辑分析仪捕获的数据“86",“,"65480"、"65480"和“和"148"“"148"。“。</s>“ 当然、您必须获取新数据并采集数据、这只是我想看到的一个示例

    如果您想发送 1 个以上的组、也会有所帮助

    -布莱恩

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

    您好 Bryan、

    下面是捕获内容。

    红色=时钟;蓝色=数据线 (MISO);绿色=芯片选择;

    最大电压约为 3.3V、我将它们一次性满足所有三个器件的要求。

    这是一个“好“的价值,就在坏的前面。 我们可以猜到它是一个很小的正数。

    现在是“坏“值。 当它出现时、中间字节上会出现一个 0xFF、但没有明显的原因。

    最后,一个很好的价值,这看起来是一个相当小的负数。

    所有三次捕获的结果紧随另一次、这是一个 10 秒视频、我拍摄了 SPI 线路上的现象。

    e2e.ti.com/.../ads1255_5F00_logs.mp4

    我希望这会有所帮助。

    谢谢、

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

    尊敬的 Halidi Noudjoumou:

    是否使用 DRDY 信号向控制器指示何时开始计时输出数据? 如果没有、如何选择何时从 ADC 按时钟输出数据?

    您还能否添加您的图的 CS 和 DRDY 引脚?

    我还要求查看包含所有三个数据的单个捕获、以便在“坏“数据之前、期间和之后查看所有信号的行为。

    -布莱恩

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

    您好:

    我使用 DRDY 作为中断、从而设置一个标志来通知新的转换就绪情况。 在主循环中、我检查是否设置了此标志、清除它并处理数据。 否则不会发生任何情况、正在读取任何数据

    这是一个包含整个通信长度的视频。

    红色=时钟;黄色= CS;蓝色= MISO;绿色= DRDY;

    e2e.ti.com/.../ads1255_5F00_logs_5F00_all_5F00_signals.mp4

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

    尊敬的 Halidi Noudjoumou:

    感谢观看本视频。 老实说、我希望看到屏幕截图、因为在视频中很难看到完整的图片、但我认为这应该起作用

    我注意到您没有看到始终如一地读取数据。 我希望一旦 DRDY 下降至低电平、您就会按时钟输出数据、并且每次 DRDY 下降至低电平时都会执行该操作。 但这不是我在示波器捕获中看到的内容。  您可以在下面的屏幕截图中看到、DRDY(绿色迹线)在时钟输出数据的中间有一个转换。 这将 导致错误的数据、并可能导致您看到的尖峰

    您必须 通过等待 DRDY 下降至低电平、然后立即发送 SCLK 以进行时钟输出数据、从而正确地从 ADC 检索数据、确保在下一次 DRDY 转换之前、所有数据都在时钟输出。

    -布莱恩

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

    谢谢,这解决了这个问题!

    我移动了 ISR 中的 ADC 读数、几小时内一直没有出现任何尖峰。

    有一件事让我困惑。 我们一直都采用这种方式来处理我们的 ADC 读数。 我的意思是、在数据就绪中断时设置一个标志、并在主循环上对其进行读取和处理。 在我们使用的所有 ADC(即 ADS1219)中、似乎只有 ADS1255 导致了该问题。

    这是 ADS1219 数据表第 8.5.3.5 节的摘录。

    在写入新数据时、1255 似乎不允许从数据寄存器读取、而 1219 则允许读取。 因此、在前一个上处理 DRDY 时我们必须更加小心。

    再次感谢您。

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

    尊敬的 Halidi Noudjoumou:

    是的。这是正确的、在使用 ADS1255 进行 DRDY 转换期间无法读取。 这款器件是 21 世纪初发布的、因此与 2018 年发布的 ADS1219 和 2019 年发布的 ADS1235 相比、接口要求有所不同

    很高兴我们能帮助解决这个问题

    -布莱恩