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:与ADS1298和FRDM-KL25z连接

Guru**** 2553930 points
Other Parts Discussed in Thread: ADS1298ECGFE-PDK, ADS1298

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/581481/ads1298ecgfe-pdk-interfacing-with-the-ads1298-and-a-frdm-kl25z

部件号:ADS1298ECGFE-PDK
在“线程: ADS1298”中讨论的其他部件

您好,

我正在尝试从ARP-M0+微控制器检索ADS1298中的数据。 特别是,我正在使用ADS1298的ADS1298ECGFE-PDK板(移除MMB0板)和Freescale (现为NXP)的FRDM-KL25z板。 两块板之间的连接似乎都是正确的,因为我可以使用微控制器板和SPI接口正确读取ADS1298标识,写入ADS1298寄存器,甚至读取它们的内容,执行RDATA之类的指令(这似乎起作用并给出结果), 等等。 使用RDATAC模式时开始出现问题。

我试图通过使用中断服务来管理DRDY,所以很快(嗯...这里的术语'oon'可能有点令人困惑, 并且取决于微控制器),当它从1转换到0时,将使用SPI从ADS1298读取数据,但通过SPI读取时会发生这种情况。 当此读数开始时,DRDY转到1,但在该读数的中间,DRDY信号发生故障。 起初,我假设它是在RDATAC模式下发生的,当采样和转换新数据时,带有'new'信息的寄存器是刚写入的(这是吗??) DRDY将再次从1转换为0。 在这种情况下,由于我正在使用SPI进行读取操作,所以我在微控制器中获得的数据似乎是损坏的或奇怪的。

因此,为了解决这个问题,我决定触摸启动信号,同时尝试避免使用ISR读取的数据损坏,但DRDY中的故障问题似乎仍然存在。 此外,在读取几次采样的信息时,最严重的情况是第一次读取,因为在进一步的读数中,DRDY也会产生故障,但似乎读取了良好的一致数据---- 唯一的问题是第一个读取操作,它提供接近0的数据。 我曾经尝试使用单次激发模式来看看我是否可以消除这种故障--我确实做到了,但我不喜欢这个解决方案,因为这样我就有了不知道采样率的问题。 此外,从微控制器的软件将启动信号设置为1和0,我假定(请确认我)我有同样的问题。 尽管如此,我目前已经以这种方式进行了启动信号管理,以避免DRDY中出现故障,以及在尝试读取新数据时数据损坏。

只是尝试逐步解决问题,是否有办法避免DRDY信号中的故障?

我当然非常感谢在这个问题上提供的任何帮助。

祝你好。

在这里你可以看到DRDY信号中的故障

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果你不在乎,我会给自己发布答案。 问题似乎在于通过将CS设置为low (低)激活SPI接口与实际执行通信之间的长时间延迟。 我试图减少这种延迟,然后在原则上将沟通顺利地进行,这也是另一种可行的选择,我(原则上也是如此)相信,已经做出了更多努力,首先将CS设为低ant start,然后再设为高。 请勿触摸ISR内部的样本,然后在ISR内部通过DRDY触发时尽快读取几个样本。 乍一看,它似乎如预期的那样发挥作用。

    问候,

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

    您好Tomás

    正确的是,当DRDY从高转换为低时,数据会被新数据覆盖,如果转换正在进行,当前正在读取的数据将被破坏。 您提供的图片正是如此。 实际上,您可以看到从DRDY高到低边缘之间的时间大约为2ms,这与ADS1298的500 SPS数据速率相对应。

    正如您所说,问题是DRDY从高到低转换到SCLK开始切换之间存在很长的延迟。 您有几种方法可以解决此问题。

    1. 尝试进一步优化DRDY下边缘和SPI通信开始之间的时间。 这可以通过多种方式实现。 一般而言,"如何"执行这些操作的详细信息可在处理器数据表中找到:
      1. 如果某些其他处理器功能延迟进入ISR,您可以增加由DRDY触发的中断的优先级。
      2. 将ISR中的任何非连续代码移至启动SPI传输的代码下方。
      3. 在ISR中使用物理内存地址,而不是变量,因为处理器需要时间跟踪指针。
      4. 如果存在处理器的DMA引擎,则使用该引擎。 在某些处理器中,这将允许您触发内存和外围设备(即SPI模块)之间的数据传输,并可在某些外部事件(即DRDY的边缘)上触发。 这将在很大程度上使堆栈延迟和CPU执行时间脱离方程式。 这可能是最有效的选择。
    2. 使用较慢的数据速率。 您当前配置为500 SPS。 如果您使用250 SPS,则检索数据的时间长度将是原来的两倍。 但请记住,ADC的集成数字滤波器可随数据速率进行扩展,因此您可以在较低的数据速率下获得一半的带宽。 有关数字滤波器的详细信息,请参阅数据表。

    一般情况下,我不建议在单次激发模式下使用起始针脚,除非您必须这样做。 此方法很慢,因为每次切换"开始"时,您必须等待3个转换周期,以等待数字滤波器填满。 如果您想通过配置为更高的数据速率来绕过该问题,您会遇到带宽更宽的问题,这会导致更多噪音。 我建议考虑以上两种选择之一。

    此致,

    Brian Pisani