You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:01:56