从FPGA搞定OV7670 VGA显示 移植到 STM32F10x TFT显示 总结及疑问(高手请进)
OV7670不愧是最便宜的摄像头了
最大显示像素:640*480(在VGA显示器上显示效果还不赖,用usb模块采集显示依然显著)
第一步:
VGA显示 视频图像(实时)
FPGA+SDRAM+OV7670= VGA显示视频图像,帧率可达30fps
FPGA作为逻辑控制,配置摄像头寄存器,sdram作为fifo,实现图像的基本处理(RGB转换,或RAW处理)
摄像头格式:RAW、RGB565、YUV可选。
通过使用FPGA驱动摄像头,发现摄像头驱动,显示,还算简单。
扩展:拍照不保存
解决办法:IO控制FPGA逻辑,key按下时,逻辑实现,摄像头数据停止往fifo写入,图像静止,松开后继续传输,视频继续!
第二步:
PC 计算机系统实时采集图像信息或视频
68013+OV7670
要实现视频数据传输到计算机,fpga实现就相对复杂了,至少得实现一个usb接口,还得实现协议,对于这个简单的应用,不得不换个简单的方案。
cy68013 usb芯片,轻松实现摄像头的配置和视频传输。
68013实现摄像头寄存器配置,io模拟iic总线轻松容易,寄存器初始化完,直接向fifo写入数据,轻松容易,上位机根据68013的驱动接口,直接读数据,bmp格式显示即可。
目前以实现0v7670和ov7725摄像头自动识别,自动配置,raw格式流。帧率可达30fps。
当然也可以配置为RGB565格式,只是带宽比RAW多一倍而已。
第三步:TFT小显示器 通过STM32F103 驱动摄像头,视频显示,拍照等功能
若想拍照,存储tf卡,方便导出,自然选择fat文件系统,便携式,小巧,低成本(一般的51便宜,但是ram和rom较小)
stm32f10x 不带摄像头接口,驱动tf卡,实现fat文件系统,驱动tft液晶,stm32f1虽然不带摄像头专用接口,但是配上一颗便宜的fifo也较为容易实现。
尝试,直接使用io驱动摄像头,xclk直接通过PA8 MCO输出。发现时钟低了,图像就根本不能用了,加上io翻转速度,确实较慢,基本没有啥实际用途,所以不得不加fifo,通过io驱动的液晶,帧率可达11fps,较为满意。
通过以上玩法
基本利用了FPGA的优势,快速,高效,并行。
usb的高速传输
stm32f10x的低成本,以及便携式的有点,
问题来了:
网上有看到,直接使用c8051f330驱动7670的,帧率可达到30fps,还真没想明白,什么原理,怎么实现的,各位请高见!!