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.

[参考译文] OPT4001-Q1:无法使单次触发模式正常工作

Guru**** 2581695 points
Other Parts Discussed in Thread: OPT4001-Q1, OPT4001

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1574711/opt4001-q1-unable-to-make-one-shot-modes-work

器件型号:OPT4001-Q1
主题中讨论的其他器件: OPT4001

工具/软件:

您好:

在矩阵 LED 面板(定制设计)上使用 OPT4001-Q1 传感器来估算环境光强度。

我特别选择该传感器是因为它具有较短的最短采集时间 (600µs) 和单稳态模式。 我想要实现的是在面板刷新过程中的特定时间进行测量、使其受周围 LED 光的影响最小。 光感应分辨率并不重要、因此我不介意在使用较短转换时间时分辨率降低。

问题是、我完全无法使用两种单次触发模式中的任何一种。 连续模式工作就没有问题。 但所有单次触发模式似乎都没有任何作用。

对于单次触发模式 2(例如)、我将 0xB020 写入 CONFIG 寄存器(地址 0x0A)。 转换永远不会完成。 转换就绪标志永远不会被设置、结果计数器永远不会被更新。

已尝试单次触发模式 1(将 0xB010 写入 CONFIG、相同的问题。

如果我使用连续模式(将 0xB030 写入 CONFIG)、则可以正常工作。 因此、到目前为止、似乎只有连续模式在该芯片上有效。

更多上下文信息、读取器件 ID 寄存器将返回正确的值、因此芯片看起来肯定是正确的。 在测试时、我注意到的另一件事是、如果我将 0xB020(或 0xB010)写入 CONFIG、然后在写入后立即读回它、那么它的读数是 0xB000、所以工作模式位不会粘滞。 数据表表明、当转换完成时它们会自动复位、但这不是我看到的结果。 (如果我将模式设置为连续,操作模式会停止,然后读回 0xB030。)

我尝试使用固定范围、有或没有快速唤醒、结果相同。

在线查看资源/线程时、我发现 OPT4001 上基本上没有单次触发模式。 它有一个 Linux 驱动程序、但严格使用连续模式。 TI 论坛上的 OPT4001 上的主题没有提到有关单次触发模式的任何信息(我可以找到)。

那么、我是否遗漏了任何内容、是否有未正确配置的内容、或者 OPT4001-Q1 上的单次触发模式是否存在问题(未记录)?

非常感谢任何帮助。

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

    您好 Guillaume、  

    您是否曾尝试过在写入 OPERATING_MODE 寄存器后读取结果寄存器、是否说在本例中您在结果寄存器中收到全零?

    谢谢您、  

    Joseph Scherphorn

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

    是的。 我所做的是使用单次触发工作模式(上面给出的确切值)写入配置寄存器、并在 1.6ms 后读取结果寄存器对。 在快速唤醒模式下、对于 600µs 转换时间而言应该足够了。 但我试图定期阅读它,而不重新触发转换,只是为了确保它不会花费更多的时间比我预期,并且转换似乎根本不会发生。

    读取结果时、它会在下电上电后返回最后一个转换的值、甚至返回零。 如果我首先将其设置为连续模式,就像我说过的,它会工作,结果寄存器会持续更新 — 然后,如果我切换到单次触发模式,结果永远不会更新,并且我得到了从连续模式更新的最后一个值。

    因此、它的作用就好像单次触发模式根本不起作用、但其他所有模式都起作用。 我在读取结果寄存器时会检查 CRC、它始终是正确的、正如我所说、器件 ID 也是正确的、因此可以排除通信问题或使用错误的芯片。

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

    您好 Guillaume、  

    今天、我将花一些时间讨论设备、看看我是否可以复制您看到的行为。  

    一些注意事项:

    “在快速唤醒模式下应该有足够的 600µs 转换时间“

    我想指出的是、在您的示例配置寄存器设置中、qwake 位设置为低电平

    “然后,如果我切换到单次触发模式,结果永远不会更新,我得到从连续模式更新的最后一个值。“

    我的理解是否正确:如果继续写入 OPERATING_MODE 字段、然后在器件下电上电的情况下对结果进行采样、您将连续接收连续转换的最终测量值而没有发生变化、仅在下电上电时清除结果?

    谢谢您、  

    Joseph Scherphorn

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

    对于 QWAKE 位、我希望能有所不同? 除非我误读了数据表。 在我°的 Δ i 0xB0xx“值中、正确设置了位 15 (QWAKE)。 (我给出的值是 16 位值 — 我首先通过 I2C 正确地发送最高有效字节。

    最后一个问题是肯定的、如果我:

    • 将 0xB020 写入 CONFIG((QWAKE、自动范围、转换时间= 600µs、工作模式=单次触发)
    • 等待 1.6ms
    • 读取结果寄存器对

    结果值与写入 CONFIG 之前的值永远不会发生变化(因此,如果正好在下电上电之后,结果将为全零,如果在从前一个连续模式成功转换后,它将重复读取为在连续模式下发生的最后一次转换)。

    如果您可以自行测试是否使用该设备并告诉我、这确实会非常有帮助!

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

    抱歉、  

    您在 qwake 位上是正确的。  我目前无法复制、但很快会报告更多 infor。  

    谢谢您、  

    Joseph Scherphorn

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

    您好 Joseph、

    接着提到,我发现了什么是错的,以及如何解决我的问题在这段时间。

    为了添加到上下文中、我使用了 USON 封装、它断开了 INT 引脚。 在本设计中、我不使用 INT 引脚、因此它处于未连接状态。

    在多次阅读数据表关于单次触发的内容后、我终于知道在将工作模式写入 CONFIG 寄存器时、有哪些因素会导致单次触发不起作用。 可通过两种方式触发单次触发测量:写入 CONFIG 寄存器(寄存器触发)或 INT 引脚上的下降沿(硬件触发)。 对于后一种情况、INT 引脚必须配置为输入(INT_DIR 位清零)。

    我独占使用寄存器触发器、但事实证明、当写入 CONFIG2 寄存器(地址 0x0B)时、我清除了 INT_DIR 位(因此,将 INT 引脚设置为输入):原因是我写入该位以设置 I2C_BURST 位(以允许突发读取)、为此、我根据需要写入了“1024"字“字段、加上 I2C_BURST 位、但没有设置 INT_DIR 位。 我没有设置 INT_DIR 的原因是因为我没有使用 INT、所以我认为它没有产生任何影响。

    结果表明、如果 INT_DIR 被清零、因此 INT 配置为输入、一次性三次触发器仅通过 INT 引脚工作、并且寄存器触发器似乎在内部被禁用。 这样做的必然结果是、人们似乎无法同时使用硬件触发器和寄存器触发器、但这可能是有目的的;想想吧、这可能是有意义的。 只是在数据表中并不明显。

    因此、设置 INT_DIR 位可使单次触发寄存器触发器正常工作。 它确实按预期工作、我对结果非常满意。 在显示刷新周期内、当周围的 LED 排关闭时进行测量可以很好地工作、并且可以在不受 LED 本身影响的情况下以合理的精度测量环境光。

    现在、我认为这个问题已经解决。 因此、情况不再紧急、但如果您下周有时间专门测试此情况(设置了 INT_DIR 并清除 INT_DIR 的寄存器触发器)来确认、这可能需要在数据表的下一个修订版中添加额外的注释。

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

    尊敬的 Guillaume:  

    感谢您分享您的调查结果、我同意这一点可以更加清晰。 我将努力使这个精确的操作更好地映射出来,并与我们的技术作者做一个备注进行更新。

    谢谢您、  

    Joseph Scherphorn