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.

[参考译文] ADS1291:LOFF_STAT 寄存器在单独读取时一直返回0

Guru**** 2455300 points
Other Parts Discussed in Thread: ADS1291

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1382915/ads1291-loff_stat-register-always-returns-0-when-read-individually

器件型号:ADS1291

工具与软件:

您好!  

我目前在从交流导联配置切换到直流导联配置后尝试读取 LOFF_STAT 寄存器时遇到问题、该寄存器始终返回0。 但是、在启用直流导联配置的情况下进行流处理时、流状态部分中的 LOFF_STAT 寄存器会返回正确的值。 此外、将配置改回交流导联配置并读回整个配置时、它也会返回正确的值。  

默认设置的交流导联配置会将寄存器设置为以下值:  

//二进制寄存器选定选项
//-----------------------------------------------------------------------------------------------------
CONFIG1:0x03、   // 0b00000101连续、1000SPS
CONFIG2:0xF0、   // 0b11110000测试信号禁用、内部* 4.033V ref 启用、导联关闭启用。
LOFF:0xF5       // 0b11110101 70%-30%、22nA、交流导联脱落频率 F_DR/4
CH1SET:0x00、     // 0b00000000 6x 增益、电极输入
CH2SET:0x81、     // 0b10000001断电、输入短路
RLD_SENS:0xE0、  // 0b11100000 fmod / 4斩波频率、已启用缓冲器  
LOFF_SENS:0x03、 // 0b00000011使能正负
LOFF_STAT:0x00、  // 0b00000000只读
RESP1:0x02、       // 0b00000010 N/A
RESP2:0x07、       // 0b00000111不适用
GPIO:0x00、        // 0b00000000输出低电平

然后、我们按照以下过程更改配置和读取寄存器:  

1.将 PWDN/RESET 设置为低电平
2.等待8uS
3.将 PWDN/RESET 设置为高电平
4.等待36uS
5.发送 SDATAC 命令  
6.等待8uS
7.另外等待0.9S、然后将 LOFF 设置为0xF4
8.等待502mS、然后读取 LOFF_STAT
9.等待1ms、然后将 LOFF_SENSE 设置为0x13
10.等待502ms、然后读取 LOFF_STAT
11、等待1ms、然后将 LOFF_SENS 设置为0x03
12.等待502ms、然后读取 LOFF_STAT

有任何理由不能使用上述配置单独读取 LOFF_STAT 寄存器?  

除了8uS 和36uS 之外的所有延迟都是 不相关的代码所必需的、但我将它们包括在内、以防它们有助于/伤害问题。  
当使用相同的硬件配置启用流时、尽管 ECG 流的 LOFF_STAT 部分在适当的位中返回1、但上述所有 LOFF_STAT 读取都会返回0。  
我尚未完成最初设置寄存器的过程、但包含 ADS1291数据表第40页所述的所有延迟(据我所知)、在此过程之后重新配置回上述标准配置时、LOFF_STAT 寄存器会以适当的位返回1。 最后、如果不仅仅是对各个寄存器进行写入、如果我在直流导联检测模式下每次都重写整个配置块而不是对各个寄存器进行写入、我在 LOFF_STAT 寄存器中仍然只读0、但我认为那里还有其他问题、因为它的行为类似于停止连续模式在重新写入配置后不起作用、但我没有深入地深入研究它。  

我的问题是、有没有遗漏的东西? 为什么它可以在流数据包中工作、而不能在读取单个寄存器/使用我拥有的配置时工作? 在所有延迟和复位结束时重写整个配置会显示 LOFF_STAT 寄存器值为1、而之前的延迟读取并未返回正确的值、这有什么原因吗?  


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

    您好、Lindsey:

    感谢您发帖。

    进行确认、当您正在流式传输数据时(即 RDATAC 模式)、状态字中的 LOFF_STAT 位是正确的、但在直接读取 LOFF_STAT 寄存器时则不正确? 如果 CLK_DIV 设置为1b (位6)、会发生什么情况-整个寄存器是否仍读回00h?

    仅当使用直流导联脱落检测时、才应读取 LOFF_STAT 位。 在交流导联脱落期间、比较器输出无效。

    此致、
    Ryan

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

    Ryan、您好!  

    是的、状态字中的 LOFF_STAT 位在流数据包中是正确的、但不会直接读取 LOFF_STAT 寄存器。 当将 CLK_DIV 位设置为1 (即 向 LOFF_STAT 写入0x40)时、LOFF_STAT 寄存器在上述所有配置中返回0x40。 我仅在器件应处于直流导联脱落检测模式时读取此寄存器、 我认为应该通过将  LOFF 设置 为0xF4来配置此模式。  

    我还附上了在流数据包中读取 LOFF_STAT 寄存器的一些示波器捕获。 对于 步骤10中所述的配置、第一个 LOFF_STAT 在所有 IN1N/P 字段中返回0、第二个值正确地将 IN1N 字段显示为1。 我现在意识到我的配置中遗漏了2个次要步骤、我将在下面添加更新的步骤。  

    1.将 PWDN/RESET 设置为低电平
    2.等待8uS
    3.将 PWDN/RESET 设置为高电平
    4.等待36uS
    5.发送 SDATAC 命令  
    6.等待8uS
    7.另外等待0.9S、然后将 LOFF 设置为0xF4
    8.等待502mS、然后读取 LOFF_STAT
    9.等待1ms、然后将 LOFF_SENSE 设置为0x13
    10.等待502ms、然后读取 LOFF_STAT
    11、更改硬件配置以允许直流引线信号通过
    12.等待502ms、然后读取 LOFF_STAT

    13.等待1ms、然后将 LOFF_SENS 设置为0x03
    14、等待502ms、然后读取 LOFF_STAT



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

    您好、此问题有任何更新吗?

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

    尊敬的 Lindsey:

    我认为寄存器配置没有任何问题。  

    在 步骤11中、您将更改硬件以允许直流信号-在此步骤之前、输入是否进行了交流耦合? 在步骤7中、您将正确配置器件以进行直流导联脱落并从 LOFF_STAT 寄存器读取数据。 输入必须进行直流耦合才能使其正常工作。 我是否会误解第11步中发生的情况?

    另一个想法-在流式传输数据时、状态字中的 LOFF_STAT 位似乎是正确的。 我假设寄存器设置在数据采集期间保持不变、并且输入电压在断开电极后有时间稳定。 相比之下、当您配置 LOFF 和 LOFF_SENS 寄存器、然后在~0.5s 后读取 LOFF_STAT 时、可能输入电压尚未被拉至高于或低于比较器阈值。 您是否能够尝试更长时间等待以查看是否发生了这种情况?

    此致、

    Ryan

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

    您好、Ryan、  


    我们认识到、每次发送 SDATAC 命令时、都会对复位信号执行脉冲操作、这也会在我们每次尝试写入寄存器时对寄存器进行复位。  除了在初始启动过程中、我们已删除步骤1-4、但很遗憾、这并没有解决我的问题。  

    在步骤7之前、输入是交流耦合是。 第11步仅涉及这样一个事实、即在我禁用的某些情况下、我们硬件就位了、可以防止电流流向引线。 在步骤10中、我们预计导联之间没有连接、并且我们预计 LOFF_STAT 在  IN1N/P 字段中返回0。 在第14步中、应将这两个器件相连、形成一个完整电路 。我们期望 LOFF_STAT 在相应的 N1N/P 字段中返回1。  在这种情况下、我认为这并不重要、因为此功能在相同条件下流式传输时可以正常工作。  

    我还尝试在代码中等待多秒、然后再读取导联脱落寄存器、但即使步骤8和10有2秒的延迟(真正只有步骤10很重要、因为它们应该完全连接)、结果是相同的。 我可能需要更长的等待时间、但如果我知道、我不确定需要等待多长时间才能确保电压被拉至比较器阈值以上。

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

    尊敬的 Lindsey:

    在第10步中、我们预计引线之间不会发生连接、并且我们预计 LOFF_STAT 在  IN1N/P 字段中返回0。 在第14步中、应将这两个器件相连、形成一个完整电路 。我们期望 LOFF_STAT 在相应的 N1N/P 字段中返回1。  在这种情况下、我认为这并不重要、因为此功能在相同条件下流式传输时可以正常工作。  [报价]

    在步骤10中、某种硬件会阻止直流电流流向电极、因此电极的连接状态变得不再重要。 应在执行步骤9后将输入拉至电源(在步骤7中、您配置电流源、但在步骤9中、您实际上将其连接到输入引脚本身)。  在第10步中、相应的 LOFF_STAT 位应为1b。

    在步骤11中移除交流耦合后、IN1P/N 引脚上的电压将取决于电极连接状态和人体通过 RLD 偏置到的电压。 连接电极并正确偏置后、相同的位应返回到0b、表示接触正确。 电流源的方向(由 FLIP1设置)不应产生任何差异、但在进行此更改后、我会留出足够的时间让电压稳定下来。

    此致、

    Ryan