摄像头使用
DVP 是摄像头接口模块,支持把摄像头输入图像数据转发给 AI 模块或者内存。
DVP 模块具有以下功能:
• 支持 RGB565、RGB422 与单通道 Y 灰度输入模式
• 支持设置帧中断
• 支持设置传输地址
• 支持同时向两个地址写数据(输出格式分别是 RGB888 与 RGB565)
• 支持丢弃不需要处理的帧
1、代码获取
在我前面一篇博客里面简述了代码如何下载以及使用。https://blog.youkuaiyun.com/weixin_45488643/article/details/109990336如有需要自行查看。
选择dvp_ov(摄像头):
2、代码修改
和上次一样的操作,自己先创建一个新的工程文件,然后将dvp_ov文件夹下面的代码复制到:
安装依赖库文件:
比较重要的一点,开启控制:
打开board_config.h 我自己使用的是Maix bit 开发板,所以选择如下配置文件,根据需要选择自己的开发板硬件配置。
3、DVP 常用API
1、 DVP初始化:
void dvp_init(uint8_t reg_len)
2、 设置 xclk 的速率。
DVP(数字摄像头接口)的时钟频率
uint32_t dvp_set_xclk_rate(uint32_t xclk_rate)
返回,xclk 的实际速率。
3、禁用突发传输模式
void dvp_enable_burst(void)
4、设置输出模式使能或禁用
void dvp_set_output_enable(dvp_output_mode_t index, int enable)
5、设置图像接收模式
void dvp_set_image_format(uint32_t format)
6、设置图像接收模式,RGB 或 YUV
7、设置 DVP 图像采集尺寸
void dvp_set_image_size(uint32_t width, uint32_t height)
8、设置 AI 存放图像的地址
设置 AI 存放图像的地址,供 AI 模块进行算法处理
void dvp_set_ai_addr(uint32_t r_addr, uint32_t g_addr, uint32_t b_addr)
9、采集图像地址
设置采集图像在内存中的存放地址,可以用来显示
void dvp_set_ai_addr(uint32_t r_addr, uint32_t g_addr, uint32_t b_addr)
10、配置 DVP 中断类型
设置图像开始和结束中断状态,使能或禁用
void dvp_config_interrupt(uint32_t interrupt, uint8_t enable)
11、使能自动接收图像模式
void dvp_disable_auto(void)
12、清除中断
void dvp_clear_interrupt(uint32_t interrupt)
4、主函数
#include <stdio.h>
#include <string.h>
#include "board_config.h"
#include "dvp.h"
#include "fpioa.h"
#include "iomem.h"
#include "lcd.h"
#include "nt35310.h"
#include "ov2640.h"
#include "ov5640.h"
#include "plic.h"
#include "sysctl.h"
#include "uarths.h"