你好
我´m 的一个问题是、当我测量信号时、测量中会出现一些误差。 我已经做了一个测试来查看问题是否是我想要测量的输入信号的噪声、但我在测试中发现了一个 ADC 或 ADC 编程问题。
由于在测试中我将 VINP 和 VINN 连接到了同一信号、因此接下来要保存数据:
您可以看到、由于 VINP=VINN、几乎所有数据都接近于零、因此差分信号为零。 但出现了一些错误数据。 无论输入信号是什么、都会重复出现这种错误数据。 原因可能是什么?
谢谢你。
此致。
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.
你好
我´m 的一个问题是、当我测量信号时、测量中会出现一些误差。 我已经做了一个测试来查看问题是否是我想要测量的输入信号的噪声、但我在测试中发现了一个 ADC 或 ADC 编程问题。
由于在测试中我将 VINP 和 VINN 连接到了同一信号、因此接下来要保存数据:
您可以看到、由于 VINP=VINN、几乎所有数据都接近于零、因此差分信号为零。 但出现了一些错误数据。 无论输入信号是什么、都会重复出现这种错误数据。 原因可能是什么?
谢谢你。
此致。
你好
-是否可以在/DRDY 下降沿期间读取数据?
我不´m 但不应``这一点、因为我在代码中使用了下一个 μ´´、如果是 μ:
-是否应仅在/DRDY 处于低电平时读取数据?
-我已经完成了使用慢速和快速数据速率的测试,我很快就获得了以下数据:
对于10SPS 的频率、得到的误差为n´t μ V、但得到的是2400SPS 和7200SPS。 这可能是因为 MCU 检索数据的速度不够快? 如何解决?
MCU 的频率为33MHz。
此外、还添加了一个我在频率方面遇到的问题、并且我也在以下文章中写道: https://e2e.ti.com/support/data-converters/f/73/t/778139
它们是否应该相关?它们是否可以相关?
谢谢、
此致
您好、Jos é、
该代码可能会也可能不会阻止您在/DRDY 下降沿期间读取数据。 这取决于 MCU 何时检查/DRDY 引脚的状态以及捕获数据所需的时间。
[报价用户="user5834775"]是否只能在/DRDY 处于低电平时读取数据?
正确。
由于您看不到数据损坏在较低的数据速率下发生、这可能表示 MCU 检索数据的速度不够快... 在示波器屏幕截图中、是否可以捕获 SCLK、DIN、CS 和 DRDY 信号以确认是否存在这种情况?
您可以尝试的另一项操作是使用"RDATA" SPI 命令读取数据。 RDATA 会将数据移动到次级输出缓冲器中、而该缓冲器在/DRDY 下降沿期间不会更新。 通过在计时输出 ADC 数据之前发送此额外命令字节、您应该能够保留数据、但遗憾的是、如果您在读取数据时遇到问题、那么此方法会进一步减慢您的速度、并且您仍然缺少样本。
您提到 MCU 为33MHz;但是、您的 SCLK 与 ADS1262通信的速度有多快? SCLK 的速度可高达8MHz。 如果您的 SCLK 慢于该速度、则可能需要增加 SCLK 频率以更快地读取数据。
你好
我实现了另一个代码、尝试仅在/DRDY 处于低电平状态时读取数据。
主程序为"run_ReadCont"后调用的函数、在转到``conversion´´Dato´´并读取其被称为``waitDRDY 的数据之前、在该函数中调用该函数。
waitDRDY ()为:
在/DRDY 引脚的下降沿执行函数``pinDRDY´´。
这样、 测量中的误差会消失 、但 在高频时、获取数据 doen´t 的问题与编程数据速率相对应仍然存在、当我使用示波器测量/DRDY 引脚时、它会显示数据无法检索。 因此、即使这些误差在高频下不出现、在高频下的数据收集也必须存在误差。
-在您的示波器屏幕截图中,是否可以捕获 SCLK、DIN、CS 和 DRDY 信号以确认是否出现这种情况?
我已经完成了这项工作、并附上了一份包含数据和图像的 PDF 文件。 我用10SPS 的频率和1200SPS 的频率来完成它、以比较低频和高频。
e2e.ti.com/.../Measure-of-signals.pdf
另一个可以尝试的方法是使用"RDATA" SPI 命令读取数据。
是的、可以是另一个选项、但对于我的应用、我需要测量所有数据。
-您的 SCLK 与 ADS1262通信的速度有多快?
我使用4MHz 的 SPI 通信频率。
您好、Jos é、
在您的代码检测到/DRDY 变为低电平之前、SCLK 脉冲不会由您的代码启动。 这就是您看到/SCLK 突发以 ADC 数据速率的倍数发生的原因。 查看您提供的第二个示波器图像、您会发现 MCU 在/DRDY 变为低电平后开始时钟输出数据7.6us、然后仅需29.4us 即可输出数据。 因此、只要您的处理器不忙于其他任务、您就应该能够以除30kSPS 之外的所有数据速率读取数据、因为1/(7.6us + 29.4us)= 27,000 Hz。
从您提供的信息看、当 ADC 设置为更高的数据速率时、您的 MCU 为什么不计时对我而言并不明显。 您在 ADC 转换之间运行的任何其他函数或例程可能需要很长时间?
我建议在您的/DRDY 中断例程中设置中断点、并检查您的代码是否曾达到此中断。 根据您显示的行为、似乎您没有以更高的数据速率触发/DRDY 中断。
关于您对需要读取所有数据的评论...向您的读取数据例程添加"RDATA"命令不应阻止您读取所有数据。 这是一种读取数据的更安全的方法、可避免数据损坏。 检索数据需要更长时间、但我仍然建议添加它、以便在您以这种方式检索数据后、查看数据中的"尖峰"是否消失。