【野火鹰眼】ov7725数字摄像头编程基本知识笔记
这里以 ov7725 为例,对数字摄像头的时序进行分析。其他数字摄像头的时序也大同小异。
像素输出顺序
数字摄像头输出图像时,一般都是从左到右,有上到下逐个输出(部分芯片可配置输出顺序):
有些摄像头有奇偶场,是采用隔行扫描方法,把一帧图象分为奇数场和偶数场两场。(ov7725 没有奇偶场之分)
1. 需要采集图像时,开场中断2. 场中断来了,初始化 DMA 传输,并启动 DMA 传输3. 每个 PCLK 上升沿来了都触发 DMA 传输,把摄像头输出的值读取到内存数组里。当触发 n 次(n=图像像素数目)后就停止 DMA 传输。4. DMA 停止传输时触发中断,中断里关闭场中断,图像采集完毕。或者等待下一个场中断来临才关闭场中断,标记图像采集完毕
常见图像采集问题
1. 图像分成上下两幅图图像没处理好场中断信号: 不根据场中断信号来了才开始每帧的采集,就会出现采集到一幅图片里由上下两幅图片组成:上半幅图是前一帧图像的底部,下半幅图是这帧的顶部图像。或者场中断来了后,先处理太多东西,然后才开始采集,导致跳过了开头的数据,后续采集的时候又根据采集的行数来判断是否停止采集,就好采集到下一幅图像的开头
2. 图像分成左右两半图像,左半幅图是右半幅图的右边图像。没处理好行中断,可能行中断来了后处理太多东西才开始采集。3. 图像分成左右两半相同的图片,而且中间有消隐区读取行的数目太多,或者中间延时太久,导致读取一行变成的读取两行
如果 DELAY_A()延时值过大,图像左边的部分像素就没采集到,图像中心偏左。如果 DELAY_A()延时值过小,图像左边就会出现消隐区。HREF 上升沿触发 行中断 就不需要添加添加 DELAY_A()延时值。如果 DELAY_B()延时值过大,右边图像就会出现消隐区。当不添加 DELAY_B()还是出现右边有消隐区时,说明单片机速度太慢,每行采集像素数目太多,可以减少每行采集的数目。如果 DELAY_B()延时值过小,右边图像没采集到,图像中心偏右每行元素数目过大,即上面所说的出现右边有消隐区情况。每行元素数目过小,显然采集图片太窄,影响路况识别。偏左了:
SCCB 介绍
SCCB 是 ov 系列摄像头的控制信号通信的协议,兼容 I2C 协议,与 I2C 协议唯一不同的是 SCCB 在读时,增加一个总线停止条件(SCCB 信号线需要接上拉电阻,理由与 I2C 一样)。ov 系列摄像头的寄存器是 EEPROM,不稳定,数据容易丢失,因此程序每次初始化时都重新写入寄存器配置。ov 系列摄像头通常都是配置好默认的参数,但特定的场合需要特定的配置,因此有必要学习 SCCB 控制摄像头,从而发挥摄像头的最大采集效果。常见需要修改的寄存器有,PCLK 速率,帧率、图像亮度、对比度、色饱和度、镜像等功能。
完整的pdf格式文档51黑下载地址(共9页):
【野火鹰眼】ov7725数字摄像头编程基本知识笔记.pdf
(619.03 KB, 下载次数: 164)
|