ov9650Preview实现流程图.docx
上传人:13****88 上传时间:2024-09-14 格式:DOCX 页数:9 大小:28KB 金币:6 举报 版权申诉
预览加载中,请您耐心等待几秒...

ov9650Preview实现流程图.docx

ov9650Preview实现流程图.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

6 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第页共NUMPAGES9页第PAGE\*MERGEFORMAT9页共NUMPAGES\*MERGEFORMAT9页OV9650裸机arm9实现过程具体实现的功能:通过摄像头OV9650采集视频图像,并与arm9的camerainterface相连接,把采集到的数据放入内存的某段区域中,将该段区域同时设置成LCD的数据缓存区,这样采集到的数据就可以直接在LCD显示屏上显示了实现该功能次要完成的工作:设置OV9650的内部寄存器(寄存器很多,最好直接网上下载个对应功能的寄存器设置表),CameraInterface的各个寄存器配置,arm9的LCD各个寄存器配置实现流程:初始化摄像头硬件接口和时钟CamReset();//摄像软件重启rCLKCON|=(1<<19);//设置时钟控制寄存器使能Camera,控制HCLK进入Camera块CamPortSet();//配置各个引脚的功能GPJ和GPGChangeUPllValue(56,2,1);//UPLLclock=96MHz,PLLinput12MHzrCLKDIVN|=(1<<3);//根据UPLL为96MHz设置UCLK为48MHzSetCAMClockDivider(CAMCLK24000000);//设置摄像头时钟为24MHzvoidCamReset(void){rCIGCTRL|=(1<<31);//CameraInterface全局控制寄存器Delay(10);rCIGCTRL&=~(1<<31);}voidCamPortSet(void){save_GPJCON=rGPJCON;//保存GPJ的初始设置save_GPJDAT=rGPJDAT;save_GPJUP=rGPJUP;rGPJCON=0x2aaaaaa;//配置GPJ的引脚功能,使GPJ0~GPJ7为CAMDATA[0]~CAMDATA[7]rGPJDAT=0;//GPJ8为CAMPCLK,GPJ9为CAMVSYNC,GPJ10为CAMHREF,GPJ11为CAMCLKOUT,GPJ12为CAMRESETrGPJUP=0;//将管脚数据初始为0,上拉电阻使能rGPGCON&=~(3<<22);//GPG11引脚设置为input功能,而不是EINT[19]rGPGCON|=1<<22;rGPGUP|=1<<11;rGPGDAT&=~(1<<11);}voidChangeUPllValue(intmdiv,intpdiv,intsdiv){rUPLLCON=(mdiv<<12)|(pdiv<<4)|sdiv;}voidSetCAMClockDivider(intdivn){rCAMDIVN=(rCAMDIVN&~(0xf))|(1<<4)|(divn);//CAMCLKisdivided..}检测OV9650与arm9接上与否,接上则配置OV9650的寄存器Test_OV9650(void)intret;CamModuleReset();//重启外接CameraOV9650_init();//本程序是模拟IIC,所以GPE14、15两个引脚根据程序情况设置为输入输出模式,而非IIC模式printk("CheckcameraID\n");ret=check_OV9650();//通过模拟IIC来读取OV9650摄像头的厂商ID和产品ID的寄存器,来判断是否检测到设备,返回0,则检测到if(ret){printk("Can'tfindcamera!\n");returnret;}//Uart_Printf("\nshentuhongfengtest11\n");printk("InitialCameranow,Pleasewaitseveralminutes...\n");OV9650_config();//OV9650的寄存器配置,由于OV9650的寄存器很多,普通下载配置表配置就行return0;staticvoidCamModuleReset(void){//bit30isexternalresetrCIGCTRL|=(1<<30);//externalcameraresethighDelay(30);rCIGCTRL&=~(1<<30);//externalcameraresetlowDelay(30);}void__i