MaixPy OpenMV 添加 ov5642 支持

ov5642 摄像头添加到 sensor

通讯接口

  1. sccb 接口,该接口与 i2c 相差不大,用于配置摄像头寄存器。
  2. dvp 接口,该接口用于传输图像数据。

需要创建的文件

参考其他摄像头,一般为 ov5642.c(提供 sensor 所需要的接口), ov5642.hov5642_regs.h(提供 ov5642 的寄存器配置表)

需要准备的资料

  1. OV5642-DS.pdf(数据手册)
  2. OV5642_camera_new-module_software_application_notes_1.3_MESADA.pdf(软件应用笔记)

这些资料都可以从官网自行下载
在这里插入图片描述

需要实现的方法

  • 初始化函数 ov5642_init()

该函数将 sensor 所有方法指向 ov5642 对应方法,用户只需要调用 sensor 即可,实现该函数就是也是最终目标

int ov5642_init(sensor_t *sensor)
{
    // Initialize sensor structure.
    sensor->gs_bpp              = 1;
    sensor->reset               = reset;
    sensor->sleep               = sleep;
    sensor->read_reg            = read_reg;
    sensor->write_reg           = write_reg;
    sensor->set_pixformat       = set_pixformat;
    // ..............
    return 0;
}
  • 重置 reset()

该函数在 sensor 初始化后将会调用,此时会配置大量寄存器,用于初始化 ov5642,寄存器配置具体值可参考应用手册的默认配置。

在这里插入图片描述

for (int i=0; OV5642_ovga_30fps_regs[i][0]; i++) {
    cambus_writeb(sensor->slv_addr, OV5642_ovga_30fps_regs[i][0], OV5642_ovga_30fps_regs[i][1]); // sccb write
}
  • 其他函数均可参考寄存器手册实现

  • sensor 中添加 ov5642 检测即可完成

// sensor.h
#define OV5640_ID		(0x5640)

// sensor.c
int sensro_ov_detect(sensor_t *sensor){
    // .............
    case OV5642_ID:
    mp_printf(&mp_plat_print, "[MAIXPY]: find ov5642\n");
    init_ret = ov5642_init(sensor);
    break;
    // .............
}

遇到的问题

  1. 图像中间泛绿, 边缘泛红

使能 RawGamma 后解决

cambus_writeb(sensor->slv_addr, 0x5000, 0x6f); //RAW Gamma enable
  1. 帧率较低

配置以下寄存器,调高时钟速率,时钟速率公式可从 datasheet 中得到:
System clock frequency = PLL input clock x PLL DIVP / PLL DIVS / 4
PLL VCO frequency = PLL input clock x PLL DIVP x PLL SELD5

在这里插入图片描述
在这里插入图片描述

{0x3011, 0x0e},/*pll divp*/ {0x3012, 0x03},/*pll div*/
  1. 切换到 RGB565 拍摄一张照片后卡住, 未开启 YUVtoRGBDither, 关于 Dither
    在这里插入图片描述
cambus_writeb(sensor->slv_addr, 0x5002, 0xf8);//R
  1. ov5642 qqvga 格式会出现一小根彩色条纹: 未解决

顺便提一下 ov2640 出现的问题

  1. ov2640 边缘暗,中间亮: lenc 未开启, 开启之后便显示正常, 关于 lenc
    在这里插入图片描述

  2. ov2640 图像有噪点: 降低时钟速率后并没有改善, 可能是供电问题
    在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值