Edit online

常见问题

2 Dec 2024
Read time: 1 minute(s)

摄像头初始化失败

现象

板子启动后,摄像头注册失败,此时 DVP 的注册流程也无法完成。

原因分析

一般情况下,摄像头需要通过 I2C 来访问,所以要确保 I2C 和摄像头两个模块是否打开。

  • 摄像头的打开方法:打开 Camera

  • I2C 的打开方法,请参考 I2C 模块的使用说明。

同时,要确认以下配置是否正确:

  1. 硬件上,摄像头是连接到哪个 I2C 通道,对应的 menuconfig 配置是否正确,配置参见 打开 Camera

  2. 摄像头的供电、复位 IO 是否配置正常,也参见打开 Camera

画面不够流畅

现象

界面显示的摄像头画面有明显卡顿情况。

原因分析

很可能是 OS 的调度不够及时导致,导致 DVP 的帧采集不连续。

解决方法
  1. 如果 DVP 驱动中的调试信息打开了,每一帧数据处理都有输出 log,会影响帧率,需要关掉。提升 log 级别即可。

  2. 尝试增加 test_dvp 中的 buffer 数量,保证 buf 队列中有充裕的空闲 buf。

画面被矩形切割

现象

从摄像头采集并回显到屏幕,画面出现被矩形切割成多份,如下图


fr_too_bigger

原因分析

摄像头内部会根据 CLK_OUT 产生一个 pixclk,

  1. pixclk 的驱动能力有上限值,由驱动芯片决定

  2. pixclk 的频率值由分辨率、帧率决定,分辨率、帧率越高需要的 pixclk 也越高

  3. 相应的, pixclk 的频率值越高,要求驱动能力也要越高

比如 D13x 开发板上驱动芯片只能支持 pixclk 到最高 50 MHz,如果预期的 pixclk 超出 50 MHz 就会导致同步信号发生异常,于是画面出现不对齐的情况。

解决方法

调低摄像头驱动中的帧率、分辨率配置。以 OV5640 为例,可调整以下配置参数(详见 drv_ov5640.c):