alientek摄像头模块使用本应用AN1704对应开发板V3 0扩展实验9将教大_第1页
alientek摄像头模块使用本应用AN1704对应开发板V3 0扩展实验9将教大_第2页
alientek摄像头模块使用本应用AN1704对应开发板V3 0扩展实验9将教大_第3页
alientek摄像头模块使用本应用AN1704对应开发板V3 0扩展实验9将教大_第4页
alientek摄像头模块使用本应用AN1704对应开发板V3 0扩展实验9将教大_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AN1704ALIENTEK头模块使本应用文档(AN1704ALIENTEKMiniSTM32开发板(V3.0)9)将教大家如何在ALIENTEKMiniSTM32开发板上使用ALIENTEKOV7725和OV7670头模块。1OV77252OV767051、OV7725OV7725OV(OmniVision)1/4CMOSVGA图像传感器。该传能。通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率,10位或SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩像。和 Timing时序发生器具有的功能包括:整列控制和帧率发生(7种不同格式输出PCLK模拟信号处理 ogA/D转换除A/D转换器外,该模块还有以下三个功能:整的亮度。数字处理器颜色空间转换(原始信号到RGB缩放功能(Image数字接口 SCCB接口控制图像传感器的运行,详细使用方法参照光盘的《SerilCameraControlBus(SCCB)Specification》这个文档OV7725的寄存器通过SCCB时序并设置,SCCB时序和IIC时序十分类似,在本VGA,即分辨率为640*480的输出模式;QVGA,即分辨率为320*240的输出格式;PCLK,即像素时钟,一个PCLK时钟,输出一个像素(或半个像素)/1.2OV7725RGB565从上图可看出,OV7725的图像数据通过D[9:2]输出一个字节,firstbytesecondbyte16位RGB565数据。时序上,HREF为高时开始传输一行数据,1个PCLK1个字节,传输完一行数据最后一个字节(lastbyte)后HREF则变为低。1.3OV7725式,tP=2×tPCLKtPCLK对应传输一个字节(RGB565T=640×2tPCLKVSYNC(帧)8tLINE后会产生一个VSYNC上升沿表示一帧HSYNC和HREF其实是同一个引脚产生的信号,只是在不同场合下面,使用不同的OV7725的像素时钟(PCLK)24MhzSTM32F103RCT6IO口直接抓取,是非常的,也十分占耗CPU(可以通过降低PCLK输出频率,来实现IO口抓取,但是不推荐OV7725的数据,而是通过FIFO,ALIENTEKOV7725头模块自带了一个FIFO(AL422B,用于暂 从上图可以看出,ALIENTEKOV7725头模块自带了有源晶振,用于产生12M时钟作为OV7725传感器的XCLK输入;带有一个FIFO(AL422B该FIFO的容量是384K字节,足够2帧QVGA的图像数据。模块通过一个2*9的双排排针(P1)与外部通信,与外部的通信信号如表1.1所示:下面我们来看看如何使用ALIENTEKOV7725头模块(以QVGA模式,RGB565头模块图像数据的过程为:等待OV7725帧同步信号→FIFO写指针复→FIFO写使能→等待第二个OV7725帧同步信号→FIFO写。通过以上5个步骤,我们就可以完成1帧图像数据在AL422B的。注意:FIFO写操作不是必须的,只有当你想将一帧数据在FIFO,并在外部MCU完这帧数据之前,不再新的数据的时候,才需要进行FIFO写。在完一帧图像以后,我们就可以开始图像数据了。过程为:FIFO读指针复位→给FIFO读时钟(FIFO_RCLK)→第一个像素高字节→给FIFO读时钟→第一个像素低字节→给FIFO读时钟→第二个像素高字节→循环剩余像素→结束。可以看出,头模块数据的也是十分简单,比如QVGA模式,RGB565格式我们总共循环320*240*2次,就可以1帧图像数据,把这些数据写入LCD模块,(VSYNC一帧数据读出来,放到LCD即可显示了,同时开始第二帧数据的,如此循环,实现摄320*240直接输出显示到我们LCD上。注意:头模块自带的FIFO(AL422B)是没办法缓存一VGAVGAFIFO写满之前开始读FIFO数据,保证数据不被覆盖。OV7725还可以对输出图像进行各种设置,和应用笔记详见光盘《OV7725_datasheet.pdf》和《OV7725SoftwareApplicationNote.pdf》。对AL422B的操作时序,请大家参考AL422B的。2、OV7670分析OV7670的时序。VGA时序,RGB5652个字节组成一个像素的颜色(高字节,低字节在后这样每行输出总共有640*2个PCLK周期,输出640*2个字节。2.2OV7670OV7670帧时序和OV7725帧时序非常类似,不同之处就是VSYNC高电平时间和数据HREF其实是同一个引脚产生的信号,只是在不同场合下面,使用不同的信号方式,我1、OV7670带了2.8V稳压,OV7670典型工作电压为2.8V,而OV7725典型工作电压为3.3V。如何OV7670图像数据至FIFO和从FIFO图像数据和前面OV7725的操作是320*240)LCD上。OV7670还可以对输出图像进行各种设置,详见光盘《OV7670中文1.01》和《OV7670softwareapplicationnote》这两个文档。始化成功,则在LCD模块上面显示头模块所拍摄到的内容,实现头驱动。通过串的输出帧率)USMARTOV7725OV7670的寄存器,方便大家调试。DS0指示程序运行状态。源线。这16根信号线与ALIENTEKMiniSTM32开发板的连接关系如表3.1所示:表3.1头模块与开发板连接关从上表可以看出,我们的PB0~PB7用与连接头的数据线,同时这几个IO口还连本例程我们在ALIENTEKMiniSTM32开发板V3.0标准例程(寄存器版)USMART调HARDWARE文件夹下新建OV7725和OV7670的文件夹。OV7725文件夹如下文件:ov7725.c、ov7725.h、ov7725cfg.h、sccb.c、sccb.h5个文件。OV7670文件夹如u8u8{u16u16;//PA0/1/4; //初始化SCCB的IO口if(SCCB_WR_Reg(0x12,0x80))return1; IDIDov7725.cOV7725_Init{{return1;}{return2;}IDID{}return }OV7725IO口(SCCB_Init及其对应的值,该数组存放在ov7725cfg.h里面。constu8ov7725_init_reg_tbl[][2]={ 0x00},constu8ov7725_init_reg_tbl[][2]={ 0x00},//clock 0x00},就表示在CLKRC(地址宏定义)地址,写入0X00这个值。因为我们还用到了帧率 u8void{u8void{{}}的值,ov_frame用于统计LCDu8void{u8void{{{{}else}} }voidEXTI15_Init(void){ //关闭JTAGGPIOA->CRH&=0X0FFFFFFF;//PA15设置成输入 }(EXTI9_5_IRQHandler所以在该函数里面,我们需要先判断中断是不是来自中断线15的,然后再做处理。,然后只要OV_VSYNCov_sta=1,标志着写指针FIFOOV_VSYNC到来,也就表明一帧数据已经完毕了,此时我们设置OV7725_WREN为0,再往OV7725写入数据,此ov_sta2。其他程序,只要读到ov_sta2,就表示一帧数据已经准备好了,可以读出,在读完数据之后,程序设置ov_sta为0,则开启下一轮FIFO数据。exti.h里面添加EXTI15_Initexti.cexti.h的修改了。最后,打开test.c文件,修改代码如下: OV7725 OV7670 320// 240//externu8 externu8 void{u32i,j;{ {{ } }} 320// 320// 240//控制,关键代码如下(在ov7725.h里面:#define#define#defineGPIOB->BSRR=1<<4//速IO设置,从而提高速度。intint{u8i; //初始化LCD //初始化USMARTLCD_ShowString(30,70,200,200,16,"OV7725_OV7670TEST");LCD_ShowString(30,130,200,200,16,"UseUSMARTToSet!");{{}else{}{}} {if(sensor==OV7725)OV7725_camera_refresh();//更新显示elseif(sensor==OV7670)OV7670_camera_refresh();//更新显示{i=ov_frame;LED0=!LED0DS0闪烁}}MainOV7725OV7670OV7725模块则会给变量sensor赋值,sensorOV7725。当插入OV7670sensor=OV7670。在while循环里则会根据sensorOV7725_camera_refresh()或OV7670_camera_refresh()。OV7670_camera_refresh()OV7725_camera_refresh()大同小异,这里,我们可以通过USMART来设置和调节头的参数,我们在usmart_config.h里面修改usmart_nametab的内容如下:{#ifUSMART_USE_WRFUNS==1 (void*)read_addr,"u32read_addr(u32addr)",(void*)write_addr,"voidwrite_addr(u32addr,u32val)",(void*)delay_ms,"voiddelay_ms(u16nms)",(void*)delay_us,"voiddelay_us(u32nus)",(void*)SCCB_RD_Reg,"u8SCCB_RD_Reg(u8reg)",(void*)OV7670_Light_Mode,"voidOV7670_Light_Mode(u8mode)",(void*)OV7670_Brightness,"voidOV7670_Brightness(s8bright)",(void*)OV7670_Special_Effects,"voidOV7670_Special_Effects(u8eft)",(void*)OV7725_Light_Mode,"voidOV7725_Light_Mode(u8mode)",(void*)OV7670_Special_Effects,"voidOV7670_Special_Effects(u8eft)",(void*)OV7725_Light_Mode,"voidOV7725_Light_Mode(u8mode)",(void*)OV7725_Brightness,"voidOV7725_Brightness(s8bright)",(void*)OV7725_Contrast,"voidOV7725_Contrast(s8contrast)",(void*)OV7725_Special_Effects,"voidOV7725_Special_Effects(u8eft)",这样,我们就可以通过USMART设置头的灯光模式、色饱和度、亮度、对比度和SCCB_WR_RegSCCB_RD_Reg这两个函数,来修改和OV7725和OV7670的各项设置,轻松实现头的调试。ALIENTEKMiniSTM32开发板与头模块的连接,是通过杜邦线连接的,由于线比式对这些杜邦线进行分开,如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论