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.

[参考译文] ADS1263:状态字节在启用 GPIO 的情况下从不显示新数据

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1053479/ads1263-status-byte-never-shows-new-data-with-gpio-enabled

器件型号:ADS1263
主题中讨论的其他器件: ADS1261ADS1262ADS1261EVM

您好!

我在尝试使用 GPIO 和 ADC 功能时遇到问题。

#define GPIO_PIN 0b00011110
#define GPIO_DIR 0b00000000
#define GPIO_DAT 0b00001100

#define B_MUX 0b00001010

我要设置上述寄存器(INPMUX 在上面设置为 B_MUX)、启用状态、将 ADC 设置为脉冲模式、并每5ms 发送一次读取命令。  我解析返回的状态字节、如果 ADC1位被置位、则读取该值 启动后、如果未设置任何 GPIO 寄存器、则一切正常。  将 GPIO_DAT 寄存器设置为0b00011110会使 ADC 的速度减慢很多、但我仍然每3秒获取一个新数据点、

但是、当我将 GPIO_DAT 寄存器设置为0b00001100或0b00010010时、我停止从 ADC 获取任何新数据。  GPIO 用于控制两个 FET 上的栅极电压。

我不确定如何继续、如果您需要任何其他信息、请告诉我。

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

    您好 Jeffrey、

    GPIO 不应对 ADC 速度产生任何重大影响。 您有一些问题:

    • 您的采样速度有多快? 什么数据速率和滤波器设置?
    • GPIO 会减慢 ADC 的速度、这意味着什么? 状态字节(ADC1)中位6切换之间的时间是多少? 如果是、您希望有多长时间?您希望有多长时间?
    • 您是否有机会过度驱动 GPIO 并且它们会破坏 SPI 通信? 如果您断开 GPIO 与 FET 的连接、问题是否仍然存在?
    • 您是否有要分享的原理图、以便我了解 GPIO 是如何连接的?

    请告诉我。

    布莱恩

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

    尊敬的 Byran:

    感谢您能很快回来!

    除了上述更改之外、其他所有内容都保留为默认值、以下是寄存器的转储:

    ADDR:0x00、VAL:0x23;
    ADDR:0x01、VAL:0x11;
    ADDR:0x02、VAL:0x05;
    ADDR:0x03、VAL:0x40;
    ADDR:0x04、VAL:0x80;
    ADDR:0x05、VAL:0x04;
    ADDR:0x06、VAL:0x00;
    ADDR:0x07、VAL:0x00;
    ADDR:0x08、VAL:0x00;
    ADDR:0x09、VAL:0x00;
    ADDR:0x0A、VAL:0x00;
    ADDR:0x0B、VAL:0x00;
    ADDR:0x0C、VAL:0x40;
    ADDR:0x0D、VAL:0xbb;
    ADDR:0x0E、VAL:0x00;
    ADDR:0x0F、VAL:0x00;
    ADDR:0x10、VAL:0x00;
    ADDR:0x11、VAL:0x00;
    ADDR:0x12、VAL:0x00;
    ADDR:0x13、VAL:0x00;
    ADDR:0x14、VAL:0x00;
    ADDR:0x15、VAL:0x00;
    ADDR:0x16、VAL:0x01;
    ADDR:0x17、VAL:0x00;
    ADDR:0x18、VAL:0x00;
    ADDR:0x19、VAL:0x00;
    ADDR:0x1A、VAL:0x40;



    至于"减慢速度";当我没有启用任何 GPIO 时、每~100ms 我会获得一个新样本(状态位6 = 1)、当我启用 GPIO 时、GPIO_DAT = 0b00000000或 GPIO_DAT = 0b00011110、我每~3.5秒只会获得一个新样本。

    我将探讨断开 FET 的连接、并告诉您行为是否发生变化(需要对电路板进行一些返工)

    我无法分享原理图、但下面是基本电路:

    2通道 P MOSFET、电源连接到5V、栅极连接到 GPIO 引脚1和3 (使用10k Ω 上拉至5V)、漏极连接到负载
    2通道 N MOSFET、源极连接到 GND、栅极连接到 GPIO 引脚2和4 (使用10k Ω 下拉至 GND)、漏极连接到负载

    目标是在负载上切换电流方向(交流激励)。  

    即使我将 GPIO 设置为与上拉/下拉状态(0b00010100)匹配(最小驱动 FET)、我也会停止从 ADC 获取新值。

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

    您好 Jeffrey、

    使用 ADS1263上的默认设置、数据应以~52ms 为单位(在切换启动高电平或启动命令结束到 DRDY 下降低电平之间测得)。 因此、它看起来在这里有其他东西。

    您是否有任何原因不轮询 DRDY 以查看新数据何时就绪?

    您是否愿意通过私人消息共享原理图? 如果是、您可以单击我的姓名并请求我作为朋友、然后我们可以离线共享此信息。

    我担心发生的事情是 DVDD 电源崩溃或导致其下降。 GPIO 导致数据的准备速度比正常速度慢、这实际上是没有理由的。

    我还将指出、我们的 ADS1261集成了交流激励(不是 FET、而是在交流激励模式下自动完成 GPIO 开关)。

    布莱恩

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

    您好、Bryan、

    只是一个快速更新、移除了上拉/下拉电阻器和到 FET 的栅极连接(基本上使 GPIO 悬空)、我回到了"正常"行为(~100ms 新数据)。  因此、驱动电路看起来确实是问题。

    我们可以继续轮询 DRDY、但我相信该电路旨在最大限度地减少 ADC 和微控制器之间的连接。 (DRDY 在我们的当前设计中保持悬空状态)

    我将联系授权部门、通过私人消息发布原理图。

    我们在当前设计中使用 IDAC 端口来测量两个热敏电阻、请告诉我这是您建议的交流激励模式还是我缺少什么。  不过、我一定会提供反馈、以便我们评估用于驱动交流激励的 IDAC 端口!

    再次感谢您的观看!

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

    您好 Jeffrey、

    如果发送原理图是一个问题、则无需这样做。 至少您似乎已经将问题与 FET 连接隔离、这样您就可以集中精力进行故障排除。 但是、如果您在诊断问题时需要 TI 提供更多帮助、原理图可能会有所帮助。 请告诉我。

    如果您还不知道 ADS1262、有一个使用交流激励 的参考设计:www.ti.com/.../TIPD188。 也许这可以帮助您找出您当前设计中出现的问题。

    我对交流激励的评论是关于 ADS1261 (另一个 ADC)的。 我刚才指出、该 ADC 已经存在、并且集成了一些交流激励控制功能、但我认识到切换到其他器件可能太晚了。 也许这只是未来需要牢记的事情。 ADS1261EVM 还内置了交流激励功能(使用栅极驱动器代替分立式 FET)、因此这可能是另一个需要查看的配套资料、以获取帮助。

    布莱恩

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

    哦、我的错、在您的帖子中误读了型号!

    我们还没有锁定到特定的芯片上、我将确保记下不同芯片上的建议。

    我从 GPIO 引脚上移除了上拉/下拉电阻器、让它们直接控制栅极电压、现在似乎按预期工作、我将继续并关闭 TT、再次感谢您的参与!

    哦、还有另一个注意事项、我的源代码中有一个拼写错误、我只每50ms 发送一次读取命令、这说明了为什么我每100ms 只看到新数据、每5ms 读取一次会更频繁地显示新数据(appox 0.5秒收集10个样本)

    再次感谢!