电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

ov9650Preview实现流程图VIP免费

ov9650Preview实现流程图_第1页
1/9
ov9650Preview实现流程图_第2页
2/9
ov9650Preview实现流程图_第3页
3/9
第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共9页OV9650裸机arm9实现过程具体实现的功能:通过摄像头OV9650采集视频图像,并与arm9的camerainterface相连接,把采集到的数据放入内存的某段区域中,将该段区域同时设置成LCD的数据缓存区,这样采集到的数据就可以直接在LCD显示屏上显示了实现该功能主要完成的工作:设置OV9650的内部寄存器(寄存器很多,最好直接网上下载个对应功能的寄存器设置表),CameraInterface的各个寄存器配置,arm9的LCD各个寄存器配置实现流程:(1)初始化摄像头硬件接口和时钟CamReset();//摄像软件重启rCLKCON|=(1<<19);//设置时钟控制寄存器使能Camera,控制HCLK进入Camera块CamPortSet();//配置各个引脚的功能GPJ和GPGChangeUPllValue(56,2,1);//UPLLclock=96MHz,PLLinput12MHzrCLKDIVN|=(1<<3);//根据UPLL为96MHz设置UCLK为48MHzSetCAMClockDivider(CAMCLK24000000);//设置摄像头时钟为24MHz(2)检测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){voidCamReset(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..}第2页共9页第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共9页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__inlineOV9650_init(void){CFG_WRITE(SIO_C);//定义SIO_C为14,SIO_C为15CFG_WRITE(SIO_D);mdelay(10);}#defineCFG_WRITE(_x)set_gpio_ctrl(_x|GPIO_PULLUP_DIS|GPIO_MODE_OUT)//GPIO_PULLUP_DIS为1<<30,GPIO_MODE_OUT为1UL<<31static__inlinevoidset_gpio_ctrl(unsignedintgpio){rGPECON&=~(3<<((gpio&0xf)*2));//将GPE14或者GPE15设置为input模式if(gpio&GPIO_MODE_OUT)rGPECON|=1<<((gpio&0xf)*2);//如果是GPIO_MODE_OUT,则设置为GPE14或者GPE15为output模式if(gpio&GPIO_PULLUP_DIS)rGPEUP|=1<<(gpio&0xf);//应为GPE14、15为漏极开路,所以上拉电阻不用设置,这步不是必须的elserGPEUP&=~(1<<(gpio&0xf));}int__inlinecheck_OV9650(void){intret=0;intOV9650_mid=0;inttry_count=0;//2timestry_again:OV9650_mid=(OV9650_sccb_receivebyte(0x1c)<<8);//OV9650的寄存器ox1c和ox1d存放了厂商的ID信息OV9650_mid|=OV9650_sccb_receivebyte(0x1d);//OV9650的厂商ID值0x7FA2(已知的),判断上面读取的ID值是否与已知值相同if(OV9650_mid!=OV9650_PRODUCT_ID){if(!try_count++)gototry_again;printk("InvalidmanufactureID(0x%04X).thereisnoOV9650(0x%04X)\n",OV9650_mid,OV9650_PROD...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

ov9650Preview实现流程图

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部