原创 【STM32F7】摄像机之上位机显示jpeg图片

2017-1-8 21:03 2009 15 15

1、前言


最近在试用一款STM32F767ZI开发板,Nucleo-144,这两天开始调试网络摄像机,正好来试用一下EDN新版博客。

2、方案设计


大致看了一下板子的原理图,除了很常用的USB接口,大多数引脚都是通过插针或焊点的形式扩展出来。本来想做一个STM32+OV7725数码照相机的,发现DCMI、SDMMC、LCD-TFT控制器都只是扩展出来,具体能不能把三个接口同时用起来,还要花时间确认相关引脚是否被占用。鉴于上述原因,保险起见,就改为设计一个网络摄像机,整体框图如图1所示。

DCMI管脚不多,且确认过并未被占用,可以自己引出来,板子提供的网络接口完全够用了,有了输入和输出,剩下的就是软件工作了。虽然不是非常高大上的方案,但是目标很明确:体验低端开发板所没有的功能。该方案用到了低端芯片里所没有的DCMI接口和Ethernet接口,条件允许的话还可以增加本地显示,图像编解码功能,进一步测评其他高大上功能模块。



图1 网络摄像机整体框图


3、学习过程及发文规划



  • 开发板展示及硬件原理简析(前期准备)

  • 开发平台搭建,用最简单的流水灯程序熟悉开发环境(前期准备)

  • 为了后续调试的方便,需要搞定虚拟串口(前期准备)

  • 利用DCMI控制器驱动0V7725摄像头(基本功能)

  • 通过网口将数据上传至Internet(基本功能)

  • 利用上位机接收数据并显示视频图像(基本功能)

  • 添加简单的图像处理算法,将视频处理后上传(扩展功能)

  • 体验DAC模块:设计一个简易波形发生器(正弦波、三角波、方波)

  • 体验LCD-TFT控制器:驱动液晶屏

  • 评估STM32F767ZI运算能力:做一个简单的图形发生器,利用MCU绘制复杂图形,例如:电子飞行仪表系统(EFIS)显示画面绘制等


    开箱测试、操作GPIO、串口调试以及利用DAC设计波形发生器,都已经完成,并在ChinaAET发了博文。

    如果感兴趣,可以去我的那个博客看看:http://blog.chinaaet.com/cuter521


    后面的TFT控制器驱动液晶屏比较麻烦,因为接线实在太多,目前还没有多少动力去做,等有时间了画块扩展版,把TFT控制器接口引出来,然后再调试。



4、网络摄像机调试规划



  • 第一步就是要调试上位机显示功能。一方面是调试整个项目的功能之一;另一方面是为摄像头的调试打下基础,如果加入摄像头之后,显示有问题,就可以知道问题出在摄像头控制部分,有助于问题的快速定位。

  • 第二步是利用DCMI实现对摄像头的控制。这块不必多说,主要是对摄像头的配置。

  • 第三步综合调试,问题改进。做到第二步,其实就差不多了,因为为了验证程序能够成功控制摄像头,必须显示成功才行。


5、上位机显示JPEG图片


首次调试并没有直接选择网口,而是选择常用的串口作为传输设备,降低了调试难度。网络传输也可以参考该方法进行。

首先,设计了一个小程序,把JPEG图片转化为16进制的数组,并保存在 .C文件内。关键代码如下:


fprintf(fp_w,"const unsigned char gImage_test_pic[]={");

while(!feof(fp_r))
{
if(i%10==0)
{
fprintf(fp_w,"\n");
}
i++;
ch=fread(buf,sizeof(char),1,fp_r);
printf("0x%X,",(unsigned char)buf[0]);
fprintf(fp_w,"0x%x,",(unsigned char)buf[0]);
}
fprintf(fp_w,"};\n");

这部分代码并不是很完善,还需要手动修改一下.C文件,后续打算做一个JPEG图片转.C文件的GUI的程序,到时候再完善。
然后,利用库函数里的发送函数,将图片数据通过串口发送至上位机。

6、测试结果


串口发送图片显示成功,如下图所示:


文章评论0条评论)

登录后参与讨论
相关推荐阅读
cuter 2018-04-20 09:23
【博客大赛】ST-LINK V2 DIY 之 原理图&PCB
废话不多说了,直接上图。原理图,这图也不是我原创的,跟官方开发板上的stlink v2.1相比的话,还是有不一样的地方,但也没动,因为毕竟固件是官方固件,源码不知道,贸然动电路的话,有可能弄巧成拙。板...
cuter 2018-04-19 09:35
【博客大赛】ST-LINK V2 DIY笔记 之 固件更新
手头上的固件版本是:STLinkV2.J16.S4;烧写该固件后,发现可以用STM32 ST-LINK Utility连接到待烧写芯片,但尝试用MDK进行仿真,则无法成功。针对这一问题,需要对STLi...
cuter 2018-04-13 15:02
【博客大赛】ST-LINK V2 DIY笔记(二)
测了好几天了,在公司电脑上也是可以用的,没什么问题。昨晚在自己电脑上烧写、仿真也没有出现问题,可能真的是我的电脑USB口不太稳定吧。又多做了几个:插入STLINK之后,红灯会闪烁,稳定下来后,说明可以...
cuter 2018-04-06 12:44
【博客大赛】ST-LINK V2 DIY笔记
最近一段时间调试STM32板子的时候,都是用JLINK+杜邦线,或者拿官方板子当STLINK用,可以用,但是体积比较大,有时候觉得比较麻烦。正好前一阵手头项目少,就想DIY一个STLINK。图是网上找...
EE直播间
更多
我要评论
0
15
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /3 下一条