早上好、
我正在尝试使用与 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次校准的准确值序列吗?
提前感谢。