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.
工具与软件:
您好!
我使用 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。 这将涉及两项修改:
使用 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。 是这样吗?
还有一些疑问:
- 请提醒您使用的是单极还是双极模拟电源电压。
- PCB 的 GND 是否与正弦波函数发生器的 GND 共用?
- 当 JP16短接时、如何配置 WCT 放大器? 您可以测量 WCT 引脚电压吗? 请分享这些测试的完整寄存器映射配置。
- 下图中的峰峰值代码约为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、您好!
请进行以下寄存器设置调整:
由于当前未使用 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