ESP32Cam基于ZephyrOS无法与OV2640传感器通信求助
Zephyr RTOS中OV2640传感器初始化失败问题
我正在尝试在Zephyr RTOS中使用OV2640摄像头传感器,该传感器在Espressif SDK中可正常工作,但切换到Zephyr后遇到初始化问题。
Zephyr SDK自带OV2640驱动,我已完成内核配置并启用该驱动,编译可通过,但调用device_is_ready()始终返回false。启用日志子系统后发现,驱动初始化时首次与传感器通信(读取PID和VER寄存器)就失败。
初始化日志
[00:00:01.815,000] <err> i2c_esp32: I2C transfer error: -116 [00:00:01.820,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.825,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.830,000] <err> ov2640: failed to write 0x1 to 0xff [00:00:01.830,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.835,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.841,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.846,000] <err> ov2640: failed to read 0xa register [00:00:01.846,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.851,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.856,000] <err> i2c_esp32: I2C transfer error: -14 [00:00:01.861,000] <err> ov2640: failed to read 0xb register [00:00:01.861,000] <err> ov2640: OV2640 not detected
错误代码说明
- -116:ETIMEDOUT(通信超时)
- -14:EFAULT(地址错误或通信故障)
设备树覆盖文件
&pinctrl { i2c_cam: i2c_cam { pinmux = <I2C0_SDA_GPIO26>, <I2C0_SCL_GPIO27>; bias-pull-up; drive-open-drain; }; }; &i2c0 { sda-gpios = <&gpio0 26 (GPIO_PULL_UP | GPIO_OPEN_DRAIN)>; scl-gpios = <&gpio0 27 (GPIO_PULL_UP | GPIO_OPEN_DRAIN)>; pinctrl-0 = <&i2c_cam>; pinctrl-names = "default"; ov2640: ov2640@30 { compatible = "ovti,ov2640"; status = "okay"; reg = <0x30>; }; };
目前传感器完全无响应,我不要求功能完全正常,只要能让传感器有响应即可,请问问题出在哪里?
内容的提问来源于stack exchange,提问作者bielu000
相关产品推荐
相关产品推荐

