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.

[参考译文] ADS1298ECGFE-PDK:获得使用 MCU 采集数据的数据之间的尖峰

Guru**** 1955920 points
Other Parts Discussed in Thread: ADS1298ECGFE-PDK, ADS1298
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1397531/ads1298ecgfe-pdk-getting-spikes-in-between-data-which-capturing-data-with-mcu

器件型号:ADS1298ECGFE-PDK
主题中讨论的其他器件: ADS1298

工具与软件:

您好!

我使用 NRF52840捕获 ADS1298数据、我能够通过它的 MMB0改进板实现纯正弦波、但当我使用 nrf52840时、我能够获取具有大量噪声的数据、例如一些纳秒、数据之间会出现高频尖峰。 我检查 SPI 配置以及所有接地连接。 TI 是否为 ads1298ecgfe-PDK 提供了 具有用于消除其中噪声或尖峰的滤波器的固件? 如果是、您能向我提供它的路径吗? 或者该固件中是否有任何用于过滤数据的滤波器?

您能帮我解决这个问题吗?  

下面我提供了通过 BLE 采集的数据的图像、请看一下。

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

    Ajay、您好!

    该数据与模拟信号本身无关。 相反、这似乎是 SPI 数据传输问题。 很可能、SPI 通信帧会在下一个 nDRDY 下降沿重叠、因此转换结果会损坏。 这是因为在 RDATAC 模式下、输出移位寄存器会自动使用最新的转换数据进行更新。

    我建议在与 NRF52840通信时检查 SPI 时序。  

    此致、

    Ryan

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

    您好、Ryan、
    感谢您的答复、

    我将以16,000sps 的速率收集数据、并将1kHz 正弦波证明为输入、以下是我完成的 SPI 配置、请进行验证

    SPI_Frequency 8Mbps、
    SPI_MODE_1
    SPI_BIT_ORDER_MSB_FIRST

    SPI 8Mbps 速度足以传输此数据。  

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

    是的、
     

    我发现、ADS1298附带的 MMB0演变板是 Carring FFT、FIR 和 IIR 滤波器。 因此、这就是为什么我们能够在使用 EVK 套件时在输出端获得精细信号的原因?

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

    您好、Ryan、

    今天、我通过 USB 采集数据、然后再将其发送到 BLE。 我已配置通道寄存器(0x05)、我已将其设置为输入短路并将增益设置为1 (0x11)。  
    如果输入是接地的、因此我们在输出端得到0、但我在那里检测到一些噪声、那么我通过 BLE 捕获了该数据并发现了相同的问题、如下图所示。 该噪声是从 ADS1298引入的吗?

      

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

    Ajay、您好!

    当我不在办公室的时候、请原谅我的不在。

    删除在输出数据中观察到的伪影不需要 MMB0中的滤波器。 如果正确收集并在没有任何额外滤波的情况下绘制、原始 ADC 代码将不会包含这些尖峰。 此问题可能是由 SPI 时序造成的。

    您是否正在监视 nDRDY 下降沿以开始读取数据? 是否在下一个 nDRDY 下降沿之前完成216位帧?

    我有一个建议是修改您的代码、以使用 RDATA 模式而不是 RDATAC。 这将涉及两项修改:

    1. 发送 SDATAC 命令(11h)一次、然后开始数据收集例程。 如果在配置器件寄存器之前已发送此命令、则可以认为此步骤已完成。
    2. 在您的数据收集例程中、发送  RDATA  命令(12h)按需读取数据。 然后、RDATA 命令后跟0b 的216位、以读取整个 SPI 帧。

    使用 RDATA 命令可防止在读取当前数据时、输出移位寄存器使用新的转换数据进行更新。 对于该测试、您可以将输入配置为输入短路、所有值都应处于典型噪声展频范围内。

    此致、

    Ryan

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

    您好、Ryan、

    感谢您回复、
    根据您的建议、我正在阅读相关数据 RDATA (0x12) 使用此方法、我能够获得无尖峰的清晰数据、但数据会向正移位、如下图所示。

    您能告诉我为什么信号会发生变化吗?
    我在 EVK 套件上观察到、数据也向正移位、当我将 WCT 输入引脚接地时、我能够获得适当的输出(Pos/Neg 两者)。 但 nrf52840上也是如此、我要将 WCT 输入引脚接地、然后会获得不同的输出、如下图所示。

    您能指导我完成这个过程吗?

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

    Ajay、您好!

    很高兴听到 SPI 问题已得到解决。

    您能否标记一个原理图来说明如何将输入正弦波施加到 ADS1298输入?  

    WCT 是源自多达3个输入电极的平均值的输出引脚。 通常、此电压用作 V1-V6通道的负输入。 假设 INxP 和 INxN 具有大致相同的共模电压(即相同的直流偏置)、差分 ADC 输出应保持在0左右、该值是双极 ADC 传递函数的中标度。

    此致、

    Ryan

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

    您好、Ryan、

    方框图 WCT 是负输入端 电流 ID 引脚。 我们将其接地 WCT 并在处施加正弦波输入  INxP (V6 = Ch1)。 您可以看到下图、我已经尝试通过原理图来说明我们的输入应用顺序。

    当我们使用 EVK 套件执行此相同连接时、我们可以从基本级别0捕获正弦波、但当我们使用 MCU 板施加相同的连接时、我们已捕获此波:

    但当我们短接 WCT 引脚并读取数据时、我们还可以通过 EVK 套件和 MCU 板移位来获得正弦波。 如下图所示。

    当我们使用 RDATAC 命令收集数据时、基线为0、这种情况下会产生噪声数据。 但使用 RDATA 命令后、噪声得以消除、但数据会发生偏移。
    请帮我弄清楚。

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

    Ajay、您好!

    通过 RDATAC 模式与 RDATA 模式收集的结果应完全相同、并且转换波形的直流电平没有变化。 这表明您不是捕获或解析数据不正确。

    正如您所说 WCT 是负输入端 电流 ID 引脚。 我们将其接地 WCT 并在处施加正弦波输入  INxP (V6 = Ch1)。 您可以看到下图、我已经尝试通过原理图来说明我们的输入应用顺序。

    当我们使用 EVK 套件执行同样的连接时、我们能够从基准电平零捕获正弦波
    [/QUOT]

    感谢您在原理图上标记连接。 这样可以清除测试设置。 如果 JP16的左侧连接到 GND、 而捕获的正弦波以输出端的零为中心、这说明施加到 IN1P 的正弦波也具有偏移或共模电压= GND。 是这样吗?  

    还有一些疑问:

    1. 请提醒您使用的是单极还是双极模拟电源电压。
    2. PCB 的 GND 是否与正弦波函数发生器的 GND 共用?
    3. 当 JP16短接时、如何配置 WCT 放大器? 您可以测量 WCT 引脚电压吗? 请分享这些测试的完整寄存器映射配置。
    4. 下图中的峰峰值代码约为10,000个、而 MCU 板(COM9)的输出接近60,000。 输入信号幅值是多少? 您是否在两种设置上使用相同的输入振幅和 PGA 增益设置?

       [报价]

      此致、

      Ryan

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

    您好、Ryan、

    当我们使用 RDATAC 并将输入短接至地时、可以得到一条以噪声为中心并以零为中心的直线。 但当我们对 RDATA 执行相同操作时、我们将获得移位的数据。

    这里是您的 Doughts 的答案、
    1.我们要提供双极模拟电源、如下图所示。


    2.是的,我们将 PCB 的接地端与函数发生器的接地端相连。

    3.当 JP16短接时、WCT 引脚的电压为-2.4V、寄存器配置如下
    CONF|CONFIG1  0x01 0xC1
    CONF|CONFIG2  0x02 0x10
    CONF|CONFIG3  0x03 0xFC
    CONF|LOFF       0x04 0x03
    CONF|ch1set   0x05 0x10
    CONF|ch2set   0x06 0x80
    CONF|ch3set   0x07 0x80
    CONF|ch4set   0x08 0x80
    CONF|ch5设置   0x09 0x80
    CONF|ch6设置   0x0A 0x80
    CONF|ch7set   0x0B 0x80
    CONF|ch8set   0x0C 0x80
    CONF|rldsensp 0x0D 0xFF
    CONF|rldsensn 0x0E 0xFF
    CONF|looffsense 0x0F 0xFF
    CONF|looffsensn 0x10 0x02
    CONF|looffflip   0x11 0x00
    CONF|GPIO     0x14 0x00
    CONF|Pace    0x15 0x00
    配置| RESP     0x16 0xF0
    CONF|CONFIG4  0x17 0x22
    CONF|wct1    0x18 0x0A
    CONF|wct2    0x19 0xE3

    4.在两种设置中、振幅均为500mV、频率为1kHz、增益为1。

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

    Ajay、您好!

    请进行以下寄存器设置调整:

    • 未使用的通道(2-8)将 CHnSET 设定为0x81
    • RLD_SENSP 和 RLD_SENSN = 0x00
    • LOFF_SENSP 和 LOFF_SENSN = 0x00
    • RESP = 0x00
    • CONFIG4 = 0x00
    • WCT1和 WCT2 = 0x00

    由于当前未使用 WCT 功能、请将 JP16保持打开状态。 将正弦波输入连接到 JP33[4]。 将 GND 连接到 JP33[2]。

    在 AVDD =+2.5V 和 AVSS =-2.5V 的情况下、您可以应用直流失调电压= GND 的500mVp 正弦波作为 IN1P 输入信号。 ADC 输出应以00h 为中心、并且代码中的振幅应直接与基于 LSB 大小(2 * 4V / 2^24)= 477nV/代码的输入振幅相关。

    目前、请继续使用 RDATA 模式并共享结果。 如有需要、您可以在 CSV 文件中发送原始 ADC 数据。

    此致、

    Ryan

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

    您好、Ryan、

    正如您所说、我已 按照指定的方式配置了所有这些寄存器并应用了输入、我仍无法 获得 数据。 我已经附加了 Raw Data 文件、您可以绘制图并查看 ADS 的输出。

    e2e.ti.com/.../raw_5F00_data.csv
    Ryan、您能解释一下您想向我解释的内容吗  (ADC 输出应以00h 为中心、代码中的振幅应直接与基于 LSB 大小(2 * 4V / 2^24)= 477nV/代码的输入振幅相关。)

    感谢您的答复。

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

    您好、Ryan、

    我们已切断选择以挑选电流输出的样本并将其置于单个图像中、如下图所示、我们将获得正确的数据、但会发生移位。 请验证并提供解决此类问题的解决方案。 该问题是由寄存器配置引起的吗?

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

    Ajay、您好!

    和 Ryan、您能解释一下您在 这里试图向我解释什么吗 (ADC 输出应以00h 为中心、代码中的振幅应直接与基于 LSB 大小(2 * 4V / 2^24)= 477nV/代码的输入振幅相关。) [报价]

    00h 是 ADC 传递函数的中间值、其范围为800000h 至7FFFFFh。

    您认为二进制到十进制的转换有误吗? 您已向我发送原始数据、但该数据已经转换为十进制、因此我无法确认它是否已正确转换。

    我进行了快速计算、以检查直流偏移的幅度和干净正弦波输出的幅度。 中间代码似乎约为1.075e6。 在477nV LSB 大小时、这相当于大约513mV 的失调电压。 当将正弦波直接施加到 PGA 增益设置为1V/V 的通道输入时、该值远大于预期值 您能否将 IN1P 和 IN1N 的示波器捕获与直流耦合探头共用?  

    可以对振幅进行相同的分析。 10,000个代码的峰峰值约等于4.8mVpp。 不过、您施加的是1Vpp 正弦波。 我认为您的二进制到十进制转换中有一些错误。

    此致、

    Ryan

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

    您好、Ryan、

    如您所说、数据转换有问题、因此我重新检查了数据转换函数。 我发现了一些东西、因为根据数据表、输出读取格式是这样的 (状态寄存器(3字节)+ 8通道(每3字节)= 27字节) 对吧? 如下图所示。

    我们将使用读取数据并将其存储在27字节缓冲器中 CH-2 、因此数据必须按此方式进行存储 Status-Register (Array[0、1、2])+CH_Reg[Array[Ch-1[3、4、5]、Ch-2[6、7、8]、Ch-3[9、10、11]-- 依此类推]

    温度 RDATAC 命令我们能够通过这种方式实现数据、但当我们使用时 RDATA 命令在此格式中添加一个额外的字节、我已尝试通过下面随附的图像来说明这一点、我在数据表中找不到类似这样的信息、您能否验证一下并告诉我为什么要额外添加一个字节?

    正如您在上图中看到的、我们将获得一些数据 array[7、8、9] insted of array[6、7、8] . 您可以在我标记的状态寄存器之前观察到零。 在这之后、我通过收集数据 array[7、8、9] 所以现在我的图形是用偏移零生成的。 我正在共享原始数据文件而不转换为十进制。 每个数据的前四个字节 帧索引 剩余 240字节传输数据 .
    e2e.ti.com/.../log_5F00_file_5F00_in_5F00_hex.txt

    当我们将 ADS1298与 nrf52840控制器连接并应用时、我又收到一个问题 1V 输入 PGA-1. 因此、我的输出应接近 1V 但我的输出正在产生 500mV 与我设置时重复该过程 PGA-2. 我的输出应该是施加的输入的两倍、但我的输出大约 1V 在 PGA-2上。

    这是使用 RDATA 命令的 PGA-2输出

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

    Ajay、您好!

    我很高兴您找出了这个问题!

    RDATAC 模式不需要 SPI 命令来加载数据、因为数据是自动发生的。 因此、检索所有数据只需要216个 SCLK。 第一个 SCLK 立即在时钟沿输出状态字的开头。

    在 RDATA 模式下、仅当器件接收到 RDATA SPI 命令(12h)时才加载数据。 当主机在 DIN 上发送8位命令时、器件将在时钟沿输出 DOUT 上的8位。 主机必须忽略前8位。 锁存 RDATA 命令后、DOUT 上的下一位将是状态字的开头。

    振幅似乎正确。 请记住、ADC 会转换输入端的差分电压。 因此、如果 INxN 是恒定的、并且您向 INxP 施加振幅为 A 的正弦波、则 ADC 看到的差分电压将从-A 摆动到+A (乘以增益、如果> 1)。

    当增益= 2时、1LSB =(2 * VREF/增益/ 2^n)=(2 * 4)/ 2 / 2^24 = 238.42nV。 最后一个输出图中的输出正弦波峰值接近4,000,000、相当于0.954Vp。

    此致、

    Ryan

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

    我应提醒您、使用 RDATA 模式时可能会丢失样本。 当数据读取帧与下一次转换重叠时、会发生这种情况。 如果可能、最佳做法是在下一次中断之前监控 nDRDY 中断并在 RDATAC 模式下读取整个216位帧、以确保数据不会丢失。

    此致、

    Ryan

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

    您好、Ryan、

    感谢您解释了额外收费的原因。 但我仍然无法理解增益的逻辑。 我将向您分享我观察到的一些文件、请在下方查看

    施加的输入+/- 500mV:


    从 EVK 套件捕获的输出、PGA 增益为1:

    您可以看到、结果的峰值输出约为500mV。

    从 EVK 套件捕获的输出、PGA 增益为2:


    如上图所示、当我将 PGA 增益设置为2时、峰值输出将在1V 左右成为施加输入的两倍。

    使用外部微控制器收集的输出、PGA 增益为1:


    增益为1时收集数据的带宽 (带外部微控制器)  我们仅捕获了250mV 左右的峰值、这是施加的输入的一半。 我已经附加了 Raw 数据文件、您可以浏览它。  

    输出的原始数据文件(与外部微控制器连接时):

    e2e.ti.com/.../raw_5F00_data_5F00_file.txt
    为什么外部微控制器出现此问题、而 EVK 套件不出现此问题? 您能解释一下并提出一些解决方案吗?

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

    Ajay、您好!

    当我们以 PGA 增益1收集数据时 (带外部微控制器)  我们仅捕获了250mV 左右的峰值、这是施加的输入的一半。 我已经附加了 Raw 数据文件、您可以浏览它。  [报价]

    此波形中的峰值振幅大约为 1e6个代码、接近477 mVp、而不是250mV。 请根据 LSB 大小检查您的电压代码计算。

    ADC 输出应以00h 为中心、且代码中的振幅应直接关联至基于 LSB 大小(2 * 4V/2^24)= 477nV/代码的输入振幅。

    此致、

    Ryan

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

    Ryan、您好!

    感谢您的建议、我的计算有问题。 我已经更改了计算、能否请您验证我附加一个 Excel 文件的计算结果、所有内容都列在其中。
    e2e.ti.com/.../Data-Captured-on-31st-Aug-2024.xlsx 
    感谢您的帮助。

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

    Ajay、您好!

    是的、转换看起来正确。 很高兴能提供帮助、我很高兴它现在正在工作。

    此致、

    Ryan

x 出现错误。请重试或与管理员联系。