实验4BF561图像采集实验Word文件下载.docx
- 文档编号:18201641
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:22
- 大小:1.03MB
实验4BF561图像采集实验Word文件下载.docx
《实验4BF561图像采集实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验4BF561图像采集实验Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
3.3实验结果与分析21
3.3.1YUV格式图像读取21
3.3.2RGB格式图像读取22
第一章基于ADSP-561的图像采集系统工作原理
1.1CMOSSensor图像采集原理
CMOSSensor模组使用的是OV7648的CMOSSensor芯片。
OV7648是美国OmniVision公司开发的CMOS彩色图像传感器芯片,该芯片将CMOS光感应核与外围支持电路集成在一起,具有可编程控制与视频模/数混合输出等功能,该芯片运用专有的传感器技术,能够消除普通的光电干扰,例如噪声、灯光闪烁等,输出清晰、稳定的彩色图像。
其性能特点有:
(1)单芯片1/4尺寸
(2)2.5V操作电压
(3)I2C控制,标准SCCB接口
(4)开窗功能,局部图像输出
(5)视频信号输出:
RGB/RawRGB/YUV/YCbCr
(6)自动曝光控制/自动白平衡/自动增益控制/自动亮度控制
(7)图像质量控制,包括颜色饱和度、锐度、伽马校正等
OV7648具有640*480的图像象素阵列大小,即307200象素,具有12列、6行可选择性质。
时序发生器控制如下功能:
象素阵列控制和帧产生(VAG,QVGA输出);
内部时钟信号产生和分配;
帧率时序;
自动曝光控制;
外部时序(垂直同步信号VSYNC,水平参考信号HREF和象素时钟PCLK)输出以便外部电路读取图像。
OV7648的寄存器和许多功能通过SCCB高速串行接口(SIOC,SIOD)进行操作。
其硬件原理图如下图1.1所示。
图1.1硬件原理框图
Ov7648使用前需要进行一些寄存器配置操作,可分为三种。
(1)OV7648关于CPLD的配置
将OV7648启用,先对寄存器CtrlClrReg2赋值CLK_S0,再对寄存器CtrlSetReg1赋值CTRL_OV7648_OUTPUT。
(2)OV7648复位操作
进入复位,对寄存器CtrlSetReg1赋值CTRL_OV7648_RESET。
退出复位,对寄存器CtrlClrReg1赋值CTRL_OV7648_RESET。
(3)OV7648的寄存器设置
OV7648控制的I2C总线,使用ADSP-BF561的PF口模拟I2C总线的时序。
PF15口模拟I2C总线I2CData。
PF14口模拟I2C总线I2CCLK。
OV7648的I2C地址配置,对寄存器OV7648_IDENT_W赋值0x42,对寄存器OV7648_IDENT_R赋值0x43。
OV7648同步信号由24MHz晶振提供,LINE_VALID、PIXCLK由ADSP-BF561的PPI外设的PPI_FS1和PPI_FS2提供同步信号。
PPI寄存器配置,对寄存器PPI_FRAME赋值480,对寄存器PPI_COUNT赋值640*2-1,对寄存器PPI_DELAY赋值0x01,对寄存器PPI_CONTROL赋值0x001d|DMA32|PACK_EN。
1.2TFTLCD图像显示原理
TFTLCD模组使用的是TS35ND2501。
TS35ND2501是数字真彩液晶屏。
其解析度为320*RGB*240,输入接口为RGB24。
LCD硬件原理图如图1.2所示。
图1.2LCD硬件原理图
TFTLCD的配置有三类。
(1)TFTLCD关于CPLD的配置
TFTLCD启用进行的配置依次为,对寄存器CtrlClrReg1赋值0xff,对寄存器CtrlSetReg1赋值0x02,对寄存器CtrlSetReg2赋值0x03。
(2)TFTLCD的数据总线配置
TFTLCD同步信号由ADSP-BF561的PPI外设的PPI_FS1、PPI_FS2和PPI_FS3提供同步信号。
PPI的寄存器配置为,对寄存器PPI_FRAME赋值0xcb,对寄存器PPI_COUNT赋值959,对寄存器PPI_CONTROL赋值0x809E。
(3)TFTLCD的数据缓冲区配置
TFTLCD数据缓冲区由TFTLCD的时间同步数据和图像数据组成。
时间同步数据为320*3*22Byte,位于TFTLCD数据缓冲区的首部。
图像的尺寸为320*240,颜色类型RGB24,在数据缓冲区中线性连续排布。
图像数据大小为320*RGB24*240。
PPI外设DMA的寄存器配置:
对寄存器DMA0_CONFIG赋值0x1034,对寄存器DMA0_X_COUNT赋值480,对寄存器DMA0_X_MODIFY赋值2,对寄存器DMA0_Y_COUNT赋值262,对寄存器DMA0_Y_MODIFY赋值2。
第二章基于ADSP-561的图像采集系统设计
2.1系统硬件结构框图
系统硬件结构框图可分为三个部分,第一部分为OV7648CMOS摄像头,第二部分为ADSP核心板,第三部分为TFTLCD显示器。
硬件结构框图如下图2.1所示。
图2.1图像采集系统硬件结构框图
该系统以BF561为核心板,通过IIC总线控制OV7648,并使用PPI0输入模式接收OV7648数据,使用PPI1输出模式发送数据到LCD。
2.2算法流程图设计
2.2.1Main主程序流程图设计
图像采集系统设计中最重要的功能为OV7648图像实时采集以及LCD实时显示。
因此在设计中,使用无限循环函数处理接收的连续帧。
主函数流程图如下图2.2所示。
图2.2主函数算法流程图
其中在循环处理进程中,可以设定算法选择标志,设置0为选择快速图像处理算法,设置1为选择慢速图像处理算法。
2.2.2CmosSensor初始化流程图设计
OV7648的初始化包含五个部分:
(1)关闭并复位OV7648
(2)配置CPLD
(3)通过IIC发送OV7648寄存器配置信息
(4)PPI、DMA、TIM定时器等DSP片上外设设置
(5)设置中断向量表
CmosSensor初始化流程图如下图2.3所示。
图2.3OV7648初始化算法流程图
2.2.3TFTLCD初始化流程图设计
LCD的初始化包含四个部分:
(1)关闭LCD;
(2)配置CPLD;
(3)PPI、DMA、TIM定时器等DSP片上外设设置;
(4)分配发送至LCD图片数据的缓存空间;
LCD初始化流程图如下图2.4所示。
图2.4LCD初始化算法流程图
2.2.4图像传输行场同步设计
图像传输可分为行与场两个部分,场由行组成,一幅完整图像由一场的采样数据组成。
因此,设计两个定时器实现行场同步。
同步时钟设计如下图2.5所示。
图2.5行场同步时钟设计图
行同步一个周期为TH,包含四个部分:
THP、THB、THD、THF。
其中THD为显示区间,即真实有效的图像数据区间。
RGB的THD为320*3=960。
THP为5个采样周期(dot)。
THB=114dot。
THF=60dot。
场同步一个周期为TV,包含262个TH。
同理,TVD为显示区间,值为240。
TVP为3*1224个采样周期。
TVB=15TH。
TVF=4TH。
1TH=90+114+960+60=1224.
定时器行场同步配置流程如下图2.6所示
图2.6定时器行场同步设计流程图
2.2.5YUV-RGB图像格式转换算法
转换算法由矩阵变换实现,矩阵参数为设定值。
转换矩阵如下图2.7所示。
图2.7YUV-RGB图像装换算法流程图
R=Y+1.4075*(V-128)
G=Y–0.3455*(U–128)–0.7169*(V–128)
B=Y+1.779*(U–128)
第三章基于ADSP-561的图像采集系统实现
3.1图像采集系统传输参数配置
3.1.1CmosSensorPPI与DMA初始化参数配置
OV7648使用DSP的PPI0并行外设接口传输图像数据。
PPI0相关寄存器的初始化配置函数如下图3.1所示。
图3.1PPI0寄存器初始化配置程序图
程序配置的参数有4个:
(1)PPI控制寄存器PPI0_CONTROL
(2)PPI延时计数寄存器PPI0_DELAY
(3)PPI传输计数寄存器PPI0_COUNT
(4)PPI每帧线路数寄存器PPI0_FRAME
对PPI0_CONTROL寄存器首先执行的操作是清零,而后设置其初始值。
0x001d|DMA32|PACK_EN对应的16bit二进制位为0000000110011101。
寄存器初始化配置分析如下:
第0位:
PORT_EN——置1,使能PPI;
第1位:
PORT_DIR——置0,PPI处于接收模式,输入;
第2-3位:
XFR_TYPE——[3:
2]置11,输入模式下,非ITU-R656模式;
第4-5位:
PORT_CFG——[5:
4]置01,在非ITU-R656输入模式下,2或3个内部帧同步;
第7位:
PACK_EN——置1,包装模式使能;
第8位:
DAM32——置1,32bitDMA宽度使能;
第11-13位:
DLEN——[2:
0]置000,数据长度为8bit
第14位:
POLC——置0,PPI在PPIx_CLK上升沿采样数据
第15位:
POLS——置0,PPIx_FS1和PPIx_FS2上升沿有效
PPI0延时计数寄存器设置为0x01,即延时周期数为1。
PPI0传输计数寄存器设置为1280,即每行采样点数为1280。
PPI0每帧线路数寄存器设置为480,即每帧图像共有480行。
DMA相关寄存器的初始化配置如下图3.2所示。
图3.2DMA寄存器初始化配置程序图
程序配置的参数有8个:
(1)DMA配置寄存器DMA1_0_CONFIG
(2)DMA外设映射寄存器DMA1_0_PERIPHERAL_MAP
(3)DMA中断状态寄存器DMA1_0_IRQ_STATUS
(4)DMA起始地址寄存器DMA1_0_START_ADDR
(5)DMA内部循环计数寄存器DMA1_0_X_COUNT
(6)DMA内部循环地址增量寄存器DMA1_0_X_MODIFY
(7)DMA外部循环计数寄存器DMA1_0_Y_COUNT
(8)DMA外部循环地址增量寄存器DMA1_0_Y_MODIFY
DMA1_0_x的含义为1号DMA控制器的0号通道。
DMA16位配置寄存器分析:
DI_EN,置1为数据中断使能;
第5位:
RESTART,置1为DMA缓冲清除,直接丢弃;
第4位:
DMA2D,置1为二维DMA模式,X、Y都包含;
WDSIZE,置10,即WDSIZE_32,为32bit传输,同时代表指针寄存器大小为4,即地址增量为4字节。
WNR,置1,指定存储器写。
外设映射寄存器DMA1_0_PERIPHERAL_MAP设置为0x0000。
在1号DMA控制器0号通道的条件下,默认的外设映射为PPI0。
中断状态寄存器DMA1_0_IRQ_STATUS设置为3。
二进制位为0000000000000011。
作用为禁止DMA通道
起始地址寄存器DMA1_0_START_ADDR,当前对象的数据缓冲器的起始地址,为用户输入。
内部循环计数寄存器DMA1_0_X_COUNT设置为(640*2)/4,代表640个像素点,每个点有两组8bit数据(YUV格式)。
内部循环地址增量寄存器DMA1_0_X_MODIFY设置为4,指针寄存器增量为4字节。
外部循环计数寄存器DMA1_0_Y_COUNT设置为480,代表480行。
内部循环地址增量寄存器DMA1_0_Y_MODIFY设置为4,指针寄存器增量为4字节,代表一行的最后一个字与下一行第一个字之间的偏移量。
启动与停止的分析在3.2.2中说明。
3.1.2TFTLCDPPI与DMA初始化参数配置
LCD使用DSP的PPI1并行外设接口传输图像数据。
PPI1相关寄存器的初始化配置函数如下图3.3所示。
图3.3PPI1寄存器初始化配置程序图
程序配置的参数有3个:
(1)PPI控制寄存器PPI1_CONTROL
(2)PPI延时计数寄存器PPI1_DELAY
(3)PPI传输计数寄存器PPI1_COUNT
对PPI1_CONTROL寄存器首先执行的操作是清零,而后设置其初始值。
0x8000|PACK_EN|DMA32|0x0010|XFR_TYPE|PORT_DIR对应的16bit二进制位为1000000110101110。
寄存器配置分析如下:
PORT_DIR——置1,PPI处于发送模式;
PORT_CFG——置10,2或3个外部帧同步。
POLS——置1,PPIx_FS1和PPIx_FS2下降沿有效
DMA32与PACK_EN为数据打包选项,将4个字节的数据合成一个32bit数据。
PPI1延时计数寄存器设置为0xcb,即延时周期数为203。
PPI1传输计数寄存器设置为960,即每行采样点数为960。
DMA相关寄存器的初始化配置如下图3.4所示。
图3.4DMA寄存器初始化配置程序图
(1)DMA配置寄存器DMA1_1_CONFIG
(2)DMA外设映射寄存器DMA1_1_PERIPHERAL_MAP
(3)DMA中断状态寄存器DMA1_1_IRQ_STATUS
(4)DMA起始地址寄存器DMA1_1_START_ADDR
(5)DMA内部循环计数寄存器DMA1_1_X_COUNT
(6)DMA内部循环地址增量寄存器DMA1_1_X_MODIFY
(7)DMA外部循环计数寄存器DMA1_1_Y_COUNT
(8)DMA外部循环地址增量寄存器DMA1_1_Y_MODIFY
DMA1_1_x的含义为1号DMA控制器的1号通道。
外设映射寄存器DMA1_1_PERIPHERAL_MAP设置为0x1000。
在1号DMA控制器1号通道的条件下,默认的外设映射为PPI1。
中断状态寄存器DMA1_1_IRQ_STATUS设置为3。
起始地址寄存器DMA1_1_START_ADDR,当前对象的数据缓冲器的起始地址,为用户输入。
内部循环计数寄存器DMA1_1_X_COUNT设置为(320*3)/4,代表320个像素点,每个点有三组8bit数据(RGB格式)。
内部循环地址增量寄存器DMA1_1_X_MODIFY设置为4,指针寄存器增量为4字节。
外部循环计数寄存器DMA1_1_Y_COUNT设置为262,代表262行。
内部循环地址增量寄存器DMA1_1_Y_MODIFY设置为4,指针寄存器增量为4字节,代表一行的最后一个字与下一行第一个字之间的偏移量。
启动与停止的分析在3.2.3中说明。
3.1.3I2C控制总线配置
I2C总线的主要作用为配置OV7648的控制寄存器。
寄存器参数与所在地址如下图3.5所示。
图3.5OV7648控制寄存器参数程序图
获取I2C总线控制权后,数据传输过程如下图3.6所示。
图3.6控制寄存器参数传输程序图
3.1.4TIM定时器配置
TIM定时器配置如下图3.7所示。
图3.7定时器初始化配置程序图
定时器10实现行同步,时钟周期为1224个点采样周期,脉冲宽度为5个点采样周期。
设置为脉冲宽度可调模式。
定时器11实现场同步,时钟周期为1224*262(320688)个点采样周期,脉冲宽度为1224*3(3672)个点采样周期。
3.2图像采集系统程序实现
3.2.1Main主程序实现
主函数根据算法流程图编写,如下图3.8所示。
图3.8程序主函数图
3.2.2CmosSensor子程序实现
OV7648相关的子程序实现可分为两个部分:
(1)OV7648初始化
(2)OV7648启动与停止
初始化程序依据算法流程图编写,如下图3.9所示。
图3.9OV7648初始化程序图
OV7648启动程序如下图3.10所示。
图3.10OV7648启动部分程序图
启动过程需要进行的主要操作有四个:
(1)再次初始化OV7648所使用的PPI0外设
(2)设置DMA控制寄存器的值,开启DMA
(3)设置PPI0控制寄存器的值,开启PPI0
(4)使能定时器8与定时器9
OV7648关闭程序如下图3.11所示。
图3.11OV7648关闭部分程序图
关闭过程需要做的操作有三个:
(1)DMA控制寄存器置零,关闭DMA
(2)PPI0控制寄存器置零,关闭PPI0
(3)失能定时器8与定时器9
3.2.3TFTLCD子程序实现
TFTLCD相关的子程序实现可分为两个部分:
(1)LCD初始化
(2)LCD启动与停止
初始化程序依据算法流程图编写,如下图3.12所示。
图3.12LCD初始化程序图
LCD启动程序如下图3.13所示。
图3.13LCD启动部分程序图
启动过程需要进行的主要操作有三个:
(1)设置DMA控制寄存器的值,开启DMA
(2)设置PPI1控制寄存器的值,开启PPI1
(3)使能定时器10与定时器11
LCD关闭程序如下图3.14所示。
图3.14LCD关闭部分程序图
(2)PPI1控制寄存器置零,关闭PPI1
(3)失能定时器10与定时器11
3.2.4图像快速处理子程序实现
图像快速处理子程序为YUV2RGB_Fast()。
子程序实现如图3.15所示。
图3.15图像处理快速算法程序图
3.2.5图像慢速处理子程序实现
图像慢速处理子程序可分为两个部分:
(1)640*480图像转换为320*240图像
(2)对转换后图像进行处理,将YUV图像格式改为RGB
尺度变换程序如下图3.16所示。
图3.16图像处理慢速算法尺度转换程序图
输入为640*320图像。
在设置输出像素时,输入指针在每列像素上隔点采样,在每行像素上隔行采样,将其赋予输出指针。
转换后图像大小为320*240。
处理后图像的格式转换程序如下图3.17所示。
图3.17图像处理慢速算法格式转换程序图
3.3实验结果与分析
本次实验实现了图像实时传输,实验结果为OV7648采集到的图像经过实时处理成功显示在LCD屏幕上。
为了增强实验效果,通过VisualDSP++集成开发环境读取不同地址的不同格式图像至PC端显示。
3.3.1YUV格式图像读取
读取地址及图像格式大小的参数配置如图3.18所示。
图3.18YUV图像读取参数配置图
读取图像显示如下图3.19所示。
图3.19YUV图像读取显示图
图像从地址0x40000000读取成功,采用格式为UYUV[4:
2:
2],大小为640*480。
3.3.2RGB格式图像读取
读取地址及图像格式大小的参数配置如图3.20所示。
图3.20RGB图像读取参数配置图
读取图像显示如下图3.21所示。
图3.21RGB图像读取显示图
图像上方出现黑框的原因是:
实际图像地址并不是从0x20000000开始的,实际地址应该为:
0x20000000+(19*320*3)
转换为16进制为0x20004740。
因此,从0x20004740地址开始读取即可消除黑框。
黑框的数据代表的信息为图像的配置信息,与LCD显示相关。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 BF561 图像 采集