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.

[参考译文] ADS1298RECGFE-PDK:ADS1298R REV B

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/667096/ads1298recgfe-pdk-ads1298r-rev-b

部件号:ADS1298RECGFE-PDK
主题中讨论的其他部件:ADS1298RADS1298

我们正在将ADS1298R用于我们的应用。我们能够在ADS1298中写入/读取寄存器,并且能够使用ADS1298R读取数据。

但是,由于我们不想使用USB协议更改输出数据速率和增益等选项,我们无法每次更新。

我已经完成了调试,我们每次都能正确读取寄存器的数据,这样我们就能获得正确的USB命令。然后我们屏蔽位,然后根据命令更新regData变量,每次都能正确地更新,然后我们尝试 写寄存器并再次阅读,但它不能正常工作。

我在下面附上了屏幕截图。

所以如果有人能给我推荐一个非常有用的解决方案。

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

    感谢您的帖子。

    如果您能够在程序的初始化部分读/写寄存器,则如果您希望在之后更新它们,则该过程相同。 首先,您需要发送“SDATAC”,以便识别任何其它SPI命令。 您是否在代码中执行此操作?

    您能否向我们发送一个您在尝试写入config1寄存器时发送的字节数示例?

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

    我们正在初始化中发送它(仅发送一次)。我们每次都需要发送它??(用于编写每个寄存器?)  

      当我们获取数据时,我们也会发送SDATAC,然后我们想要为下一次数据采集更改寄存器。
    所以,如果我们只处于读/写模式,那么为什么 我们每次都要发送SDATAC?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    写入功能:

    1,CS低
    2.传输wreg通信
    延迟
    4.send注册号要写入-1
    5.传送数值
    6.CS高

    在写入之前,我们将读取先前的值,然后屏蔽位,然后根据命令写入值。

    regData = g_ADS1298_config1 &~ ADS1298_DR_mask;
    regData = regData | Drset; //根据命令显示Drset十六进制值

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

    您好,Saloni,

    否,只需初始化一次寄存器设置。

    只要设备处于RDATAC模式(开机时默认为),并且您需要更改寄存器,您就必须首先发送SDATAC。

    完成更改寄存器后,您可以再次发送RDATAC并监视/DRDY中断以进行连续的数据收集。


    此致,

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

    Ryan  

    我们开发了我们的应用程序,这样我们就可以根据所需的设置随时写入任何寄存器值,但发生的情况是,它不会每次都写入寄存器。

    注:这里我指的是经常手动更改寄存器值,我不在RDATAC模式下。

    case1:如果我正在处理增益设置,那么它可以达到某些尝试,但过了一段时间后它就开始出现错误行为,并且不会写入正确的值。

    CASE2:如果我要更改采样率寄存器,则它可以进行一些尝试,然后它也不能正确写入。

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

    好的,我知道您正在使用RDATA模式。

    在这种情况下,可能会违反多字节命令(即 WREG和RREG)。 此规范(tSDECODE)是一个字节必须发送的最小时间量,并指定为4个主时钟周期(tCLK)。 如果SCLK频率相对较快,并且发送一个字节所需的时间少于4*tCLK,则必须在发送命令中的下一个字节之前插入延迟。 这在第60页的图68中进行了说明。

    您能否分享主时钟频率和SCLK频率?

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

    我们在3.4 MHz运行SPI,FCPU为216 MHz,所以需要的延迟是1.98 Us。所以我们在读/写函数中增加了2us延迟。

    是否需要其他任何延迟?

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

    我不知道你所说的“FCPU”是什么意思。 我指的主时钟频率是提供给ADS1298R CLK引脚的时钟信号。 不能为216 MHz。

    如果您的延迟是1.98 Us,那么我假设您使用的是2.02 MHz CLK输入? 这没问题,但您不能改用内部2.048 MHz时钟吗?

    由于您使用的是SCLK = 3.4 MHz,因此8位将以2.353 US传输,这比4*tCLK = 1.98 US要长。 因此,您不需要在连续字节之间引入额外的延迟。

    此致,