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.

[参考译文] ADS1299:寄存器读取和写入都正常、但在!DRDY 上读取的数据始终为 0

Guru**** 2543550 points
Other Parts Discussed in Thread: ADS1299

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1567428/ads1299-register-reads-and-writes-are-all-good-but-data-read-on-drdy-is-always-0

器件型号:ADS1299


工具/软件:

下午好! 我要联系的原因是在我的 ADS1299 芯片上、我正在编写固件以与它们连接、虽然我可以在器件不转换数据的情况下通过 SPI 成功地读取和写入寄存器、但当我开始转换时(通过发送 START 命令和 RDATAC 命令)、我每次读取数据!DRDY 变为低电平、状态似乎正常(前 3 个字节始终为 0xC00000)、但其余的通道数据全部为 0。  

这是 ADS1299 的图像、它连接在我们的定制硬件上(仅连接 4 个通道、但我们板上组装的器件是 ADS1299 8 通道器件):



若要为电路板供电、3.3V 电源将打开、然后在+/- 2.5V 电源打开后不久、 我的所有 电源看起来都很干净、我会等到 VCAP1 比 AVSS 高 1.1V 以上、将 NPWDN 拉至高电平、并将 nRESET 拉至高电平。 然后、我通过将 RESET 引脚拉至低电平、然后再次拉至高电平来发出复位(等待正确数量的 clk 周期)。 我的外部时钟为 2.048MHz、可以成功地读取和写入寄存器。  

这是我的器件时钟的图像:  


在我的示例代码中、通道 1 配置为测试寄存器、通道 2 配置为温度感测、通道 3 和 4 测量电源。 所有通道均启用、CHnSET 5-8 保持其默认值。 当我收集数据时、Din 会被拉至低电平(传输 0)、并且发出 27*8 个 SCK 脉冲(状态为 3 个字节、通道数据为 24 个字节)。 当 I 探测 DOUT 引脚和 SCK 时、DOUT 在前 2 个 SCK 脉冲中为高电平、在其余脉冲中为低电平。 这是前几个 SCK 脉冲的 SCK(黄色)和 DataOut(蓝色)图像。 DataOut 在其余脉冲中保持 0。



我还想注意一点奇怪的是、第一次给器件加电时、ID 寄存器读出这是一个 4 通道器件。 每次我现在复位时、都会读取到它是一个 8 通道器件。  

一个可能相关的后续问题 — 如果使用外部时钟,如果该时钟在器件的 AVSS/AVDD 启动之前运行、是否存在问题? 我认为由于硬件连接、可能会出现以下情况:3.3V 电源首先开启、时钟开始、然后+/- 2.5V 电源轨稳定。 (此后,当我将 NPWDN 拉为高电平、RESET 拉为高电平,启动复位脉冲,然后遵循文档中启动流程图的其余部分)。

谢谢、让我知道您还需要什么来帮助我解决这个问题!



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

    尊敬的 Amanda:

    感谢您发送编修。

    电路板上电时、 可以允许模拟和数字电源同时斜升至其最终值。  

    DVDD 斜升后、可以启用外部主时钟。 您还可以允许/PWDN 和/RESET 引脚在 DVDD 斜坡时变为高电平 — 它们在初始化期间不需要保持低电平。  模拟和数字电源均斜升后、您可以发出/RESET 脉冲并等待指定数量的时钟周期后再使用器件。

    如果 START 引脚保持低电平、那么您必须通过 START 命令启动转换。 由于器件默认为 RDATAC 模式、因此在执行任何其他 SPI 命令之前发送 SDATAC。 然后、您应该会看到/DRDY 引脚以默认数据速率(下降沿到下降沿)进行脉冲。

    只有在遵循 POR 序列且器件复位后、才应从器件寄存器中读取数据。 这可确保器件正确地从其内部修整设置中读取数据并启用适当数量的通道。

    配置完所有寄存器设置后、是否重新启用 RDATAC 模式?

    此致、

    Ryan

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

    感谢您的确认! 我认为问题可能是我们的主时钟在 DVDD 斜坡之前略微启动。 否则、我将遵循 POR 序列。  

    配置寄存器设置后、我调用 start 命令并启用 RDATAC! 我还看到/DRDY 引脚以定义的数据速率脉冲。  

    我已经尝试过故障排除,并确保单独发生启动序列的每个部分 — 电源(模拟和数字)达到正确的电平、我的主时钟开启并正常、然后我启动复位、调用 SDATAC、设置我的配置寄存器、拉高 START 并调用 RDATAC。  

    我仍然只为第一个状态字节获得 0xC0、然后来自 ADS1299 的所有后续传输都是 0。

    信号路径中的其他部分未打开或未配置是否存在问题?

    感谢您的帮助和快速响应!

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

    还有一个问题、这是器件在通道都断电时应该表现出的行为、对吗? 是否可能导致某个器件无法为通道供电? 当我为每个设置 CHnSET 寄存器时、我确保第一个位为 0(上电)、但是否有任何其他因素会导致这种行为? 谢谢!

    我还需要注意的是、我测量了所有 VCAPx 引脚上的电压、看起来一切都很好。 启用内部基准后、可以看到:  

    VCAP1= AVSS+1.19(–1.29V)

    VCAP2 = 0V (AVDD-AVSS/2)

    VCAP3 = AVDD+1.9 = 4.4V

    VCAP4= AVSS(–2.5V)

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

    您好、Ryan、只是跟进此事、如果上电序列如下、那么这是否是一个问题:  



    时钟在设置模拟电源轨之前开始的哪个位置? 设置这些线后、我等待 tPOR 并发送一个复位脉冲、然后等待 18 个时钟周期。  

    感谢您的帮助!

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

    尊敬的 Amanda:

    随着 AVDD 的斜升、CLK 可以运行。  要跟踪的重要电压是 VCAP1。 VCAP1 斜升的时间将取决于 RC 时间常数。 此时序可能长于数据表中的“tPOR"(“(= 2^18 tCLK)。 在 tPOR 或 TBG(以较长者为准)之后、您可以将/RESET 引脚置于低电平至少 2*tCLK。

    此外、在 DVDD 斜升后、您会显示/PWDN 和/RESET 保持低电平。 您是否通过 MCU 控制这些元件? 数字控制引脚可以与 DVDD 同时斜升。

    此致、

    Ryan

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

    感谢您的澄清!  

    我调整了时序以等待更长时间、并在 MCU 上尽快将 nRESET 和 NPWDN 引脚拉至高电平。  

    我还发现、我也使用的 SPI 库中实际上有一个错误:在 SPI 收发器的 4 个字节之后、SCK 继续存在、但 CS 引脚偶尔会被拉高。 我认为这两个问题都解决了我看到的问题、现在我看到的噪声测量相对正常(测试方波似乎没有意义,但我最终可能会出现误差)。

    感谢您的帮助!
    阿曼达