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.

[参考译文] OPT3101:OPT3101串扰校准问题

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1107972/opt3101-opt3101-crosstalk-calibration-problem

器件型号:OPT3101

早上好、

我正在尝试使用与 ESP32连接的 EVM 模块进行 OPT3101校准,这两个板通过 I2C 相互通信。 通过 I2C 进行通信非常完美,因为我能够发送数据并读取 OPT3101寄存器。

我实施了一个软件,在该软件中,我可以通过 ESP32查看通过此 EVM 模块的距离,但由于其精度不是很高,我希望进行校准以获得更精确的结果。

为了进行校准,我已阅读了您的所有文档,并且我逐步遵循 OPT3101距离传感器系统 Calibration.pdf。

我之所以在本论坛中撰写这篇文章,是因为我无法进行串扰校准(第4.2段),包括内部串扰(第4.2.1段)和照明串扰(第4.2.2段)。

OPT3101传感器使用以下设置进行初始化:

- i2c_reset_opt3101 ();//通过 I2C 进行复位

- writeReg (0x89、0x007000);//0x89是寄存器地址、0x007000我对该寄存器写入的值

- writeReg (0x6E、0x0A0000);

- writeReg (0x50、0x200101);

- writeReg (0x2E、0x0005A0);

-setMonoshotMode();

-setFrameTiming (256);

- setChannel (0);

-writeReg (0x2A、784920);

关于内部串扰校准(第4.2.1段)、我执行以下步骤。

I2C 写入命令:writeReg (0x2E、0x100030);

该值(0x100030)正在查看文档、更确切地说、下面是提出的位列表:

- XTALK_FILT_TIME_CONST [23-20]= 1 (来自第5页的公式6)

- IQ_READ_DATA_SEL [11-9]= 0

- USE_XTALK_FILT_INT [5]= 1

- USE_XTALK_REG_INT [6]= 0

- INT_XTALK_CALIB [4]= 1

在进行这些设置后、我将延迟大约500ms。

在此延迟之后、我发送以下 I2C 读取命令:writeReg (0x2E、0x100020);

其中

- XTALK_FILT_TIME_CONST [23-20]= 1 (来自第5页的公式6)

- IQ_READ_DATA_SEL [11-9]= 0

- USE_XTALK_FILT_INT [5]= 1

- USE_XTALK_REG_INT [6]= 0

- INT_XTALK_CALIB [4]= 0 (之前为1、现在我将其设置为0以读取寄存器值)

然后、我读取寄存器0x3B (IPHASE_XTALK)和0x3C (QPHASE_XTALK)。 因此、这两个寄存器都是空的、而查看文档时、它们应该包含串扰测量的结果。

为了了解 LED TX 是否由 OPT3101驱动、我使用连接到示波器的探针来查看阳极上是否存在压降、但在进行校准时没有压降症状:校准过程中、OPT3101未驱动 LED TX。

关于照明串扰(第4.2.2段)我在查看文档时应用了相同的注意事项、但0x3B (IPHASE_XTALK)和0x3C (QPHASE_XTALK)始终为空。

请帮我提供一个必须写入寄存器才能进行这2次校准的准确值序列吗?

提前感谢。

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

    您好!

    我们将很快就此采取后续行动。

    最棒的

    Alex

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

    您好!

    您是否使用 SDK 来执行校准? 如果没有校准、则很难执行、因为 SDK 已经有预先制作的方法和大量分步完成该过程的文档。 该 SDK 专为 MSP430架构编写、但可以移植到不同的微控制 器、比从头开始开发校准软件更容易。

    以下是 SDK 的链接: https://www.ti.com/tool/OPT3101-SDK

    谢谢、

    Brent Elliott

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brent、
    最初我想用 C 语言开发整个代码、只看我提到的文档和 OPT3101数据表、但这可能太复杂了。
    我目前正在尝试将 SDK 库的代码移植到我的项目中、但当我使用另一个 uController (而不是 MSP430)时、您能否为我提供一个用于 OPT3101的独立库?
    
    提前感谢
    
    您、Spark。 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我不确定独立库是什么意思。 只有 SDK 中的某些方法专门为 MSP430编写(例如 WAIT 函数)、但可以修改这些方法以与您的 uController 配合使用。

    谢谢、

    Brent Elliott