我们以1MHz 的频率在 OPT3001上运行、这是 STM32F767 MCU 的 I2C2总线上唯一的器件。 在转换结束模式下、我们每2秒对 OPT3001采样一次、方法是将0xCA00写入配置寄存器、然后等待中断、然后再读取结果值。 这可能在12小时或更长时间内完全正常工作、但最终会出现读取错误(如 CubeMX 函数 HAL_I2C_Master_Receive 所报告)。 出现此错误后、OPT3001会进行正确的插槽和通信、但似乎我们对配置寄存器(0xCA00)的写入会发生移位、因为该值读回 xxCA 而不是 CAxx (在下面的括号中记录)。 当我们检测到这种状态时、通过将数据表7.5.1.2中所述的0x06写入 I2C 地址0x00来发出常规调用复位命令、但这对 OPT3001的行为没有影响、因为寄存器继续移位。 只有一个循环通电似乎可以恢复正常运行。 我们如何在循环通电后恢复此部件的正常运行。
ALS 开始(0xCA00) ALS cLux:4168
ALS 开始(0xCA00) ALS cLux:4160
ALS 开始(0xCA00) ALS cLux:4220
ALS 开始(0xCA00) ALS cLux:4248
ALS 开始(0xCA00) ALS cLux:4232
ALS 开始(0xCA00) ALS cLux:4232
ALS 开始(0xCA00)
错误:READ_ALS_Register 失败
重置环境光传感器
ALS 开始(0x24CA) ALS cLux:127008768
ALS 开始(0xFFCA) ALS cLux:126976000
ALS 开始(0xFFCA) ALS cLux:127008768
ALS 开始(0xFFCA) ALS cLux:127008768
ALS 开始(0xFFCA) ALS cLux:126976000
ALS 开始(0xFFCA) ALS cLux:127008768