首先说一下自己做出来的成果吧,一个
手机app可以接收到ov2640采集到的图像,输出格式QCIF(162*144)压缩成的JPEG,帧率3-4帧。
硬件我用的是,摄像头ov2640,芯片
STM32f103VE,wifi模块有人科技USR-WIFI-232-X(串口转wifi模块)
在调试摄像头的时候遇到了不少问题,包括上网查阅了很多的资料,但有很多对ov2640的寄存器的解释都有误,在此特别更正一下。手册里其实都有提到,但是自己在看英文的时候理解可能不是那么的到位,在这里分享出来给大家。
{0x11, 0x30} ,这是配置时钟控制的,通过改变这个寄存器的值可以改变ov2640采集图像的速率(无论有没有接XCLK)
{0x12, 0x00} ,这个是配置输出模式的,有三个可以选,其中的Full-size是默认值,我采用的就是默认值,在这个默认值的设置下可以显示出CIF和QVGA的图像。所以建议调成这个,应该会没错。
{0xd3, 0x7f} ,这个是配置PCLK的频率的,在我的设置里,只有设置成0x7f才可以输出正确的JPEG数据流,不知道是不是因为没有接XCLK的缘故。
ov2640的XCLK可以接也可以不接,如果不接的话就是按芯片内部的频率去运作。
其实有不少人买到OV2640的时候,接收成功的图像会有很多色块或者图像一闪一闪的,其实都是由于接触不良导致的,由于视频传输信息量很大,建议有条件的直接把OV2640集成到
PCB板上,否则就用很短的杜邦线来连,才可以达到比较好的效果。
由于wifi模式是串口转wifi模块,所以图像最终的显示帧率限制在了串口的波特率上,一个JPEG的图片格式大概在3-5KB左右,其实如果是做图像传输的话,可以用SPI-WIFI模块试一试,自己当初调研的时候没有调研清楚,不然图像显示会更好。wifi是用AT指令集的方式对模块进行配置和编辑,当时在这里配置WIFI的时候遇到了些问题,都是由于自己对网络
通信没有认识清楚,比如两个STA要通过一个AP相连的话,其中STA(1)要配置成TCP SERVER的形式,LAN IP和WAN IP设置好,STA(2)要配置成TCP CLIENT的形式,LAN IP ,WAN IP 不能与STA(1)相同,TCP的协议地址写STA(1)的WAN IP地址,这个配置好就没问题,由于我用的是透传模式,所以实现起来没有什么难度。
附件里附的是一个MDK 的工程,注释标注的挺清楚的,就是有一些文件还没有整理,大家体谅一下。 有问题可以问我哦。
最后附上我借鉴的一个网站(虽然有点错误)http://www.amobbs.com/archiver/
tid-4895837.html
28