ov965Preview实现流程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OV9650裸机arm9实现过程 具体实现的功能:通过摄像头OV9650采集视频图像,并与arm9的camera interface相连接,把采集到的数据放入内存的某段区域中,将该段区域同时设置成LCD的数据缓存区,这样采集到的数据就可以直接在LCD显示屏上显示了 实现该功能主要完成的工作:设置OV9650的内部寄存器(寄存器很多,最好直接网上下载个对应功能的寄存器设置表),Camera Interface的各个寄存器配置,arm9的LCD各个寄存器配置 实现流程: 初始化摄像头硬件接口和时钟 CamReset(); //摄像软件重启 rCLKCON |= (119); // 设置时钟控制寄存器使能Camera,控制HCLK进入Camera块 CamPortSet(); //配置各个引脚的功能GPJ和GPG ChangeUPllValue(56, 2, 1); // UPLL clock = 96MHz, PLL input 12MHz rCLKDIVN|=(13); //根据UPLL为96MHz设置UCLK为48MHz SetCAMClockDivider(CAMCL; //设置摄像头时钟为24MHz void CamReset(void){ void CamReset(void) { rCIGCTRL |= (131); //Camera Interface全局控制寄存器 Delay(10); rCIGCTRL = ~(131); } void CamPortSet(void){ void CamPortSet(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为CAMRESET rGPJUP = 0; //将管脚数据初始为0,上拉电阻使能 rGPGCON = ~(322); //GPG11引脚设置为input功能,而不是EINT[19] rGPGCON |= 122; rGPGUP |= 111; rGPGDAT = ~(111); } void ChangeUPllValue(int mdiv,int pdiv,int sdiv){ void ChangeUPllValue(int mdiv,int pdiv,int sdiv) { rUPLLCON = (mdiv12) | (pdiv4) | sdiv; } void SetCAMClockDivider(int divn) { void SetCAMClockDivider(int divn) { rCAMDIVN = (rCAMDIVN ~(0xf))|(14)|(divn); // CAMCLK is divided.. } 检测OV9650与arm9接上与否,接上则配置OV9650的寄存器Test_OV9650(void) int ret; CamModuleReset(); //重启外接Camera OV9650_init(); //本程序是模拟IIC,所以GPE14、15两个引脚根据程序情况设置为输入输出模式,而非IIC模式 printk(Check camera ID\n); ret = check_OV9650() ; //通过模拟IIC来读取OV9650摄像头的厂商ID和产品ID的寄存器,来判断是否检测到设备,返回0,则检测到 if (ret) { printk(Cant find camera!\n); return ret; } //Uart_Printf(\nshentuhongfeng test 11\n); printk(Initial Camera now, Please wait several minutes...\n); OV9650_config(); //OV9650的寄存器配置,由于OV9650的寄存器很多,一般下载配置表配置就行 return 0; static void CamModuleReset(void){ static

文档评论(0)

mv2323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档