应单片机课设要求,做了一个摄像头拍照网络通信C/S实时LCD显示。该工程基于原子STM32F4的摄像头与网络通信实验,在此基础上,将其整合。
1.预期功能:
摄像头拍取的内容实时传输至LCD进行显示
通过网络通信C/S方式将STM32摄像头拍取的照片传输到电脑端
在PC端开发可视化界面接受摄像头数据并更新显示
2.实施步骤:
1.参考STM32原子摄像头实验与网络通信实验例程,主要需要了解以下知识。
1.1摄像头的数据如何传输至STM32中?
1.2摄像头照片的传输数据格式是如何组成的?
1.3LCD如何显示图片?
1.4如何通过STM32与外界建立CS服务关系?
1.5STM32如何通过网络向外界进行发送基本的数据?
2.整合两个实验工程,实现照片实时显示至LCD上,并同时通过CS服务端发送摄像头获取的数据。
3.socket编程实现数据包的接收与重组,在了解数据格式的基础上编写照片解码程序,编写PC端可视化界面。
3.设计思路:
以下为实施步骤中对应的设计思路与问题解答:
1.1 STM32F4自带有一个一个数字摄像头( DCMI)接口,该接口是通过与摄像头的帧同步、行同步进行传输数据,并将接收到的数据放到一个32位的数据寄存器(DCMI_DR)中,然后通过DMA进行数据传输。
1.2 摄像头OV2640可以支持两种照片数据格式输出:RGB565或JPEG格式。设置分辨率后,假定为640*320,以RGB格式输出时,则传输时序会参考行同步信号、帧同步信号、像素时钟进行传输,一幅图片即为一帧,其中一帧由640行组成,一行有320个像素,每个像素由两个字节组成(RGB565 5+6+5=16 bit=2byte),一个PCLK时钟传输一个字节,这便为传输时序。当以JPEG格式传输时,摄像头内部会自动先对照片进行压缩,随后以同种方式进行传输数据,只是其中PCLK的数目大大减少,且不连续。输出的JPEG输出以0XFF、0XD8开头,以0XFF、0XD9结束。在0XFF,0XD8之前,或者 0XFF,0XD9 之后,会有不定数量的0存在,我们一般选择忽略即可。