基于stm32f407的无线视屏传输项目

材料:STM32F407两块   NRF24L01两个,OV2640摄像头一个,TFTLCD4.3寸显示屏一个,IS62WV51216(sram)一个

注:一开始在无线传输模块的选材上有串口wifiESP8266和NRF24L01两个,先选择了ESP8266进行测试,这个wifi模块传输距离,面对阻隔物体的传输比NRF24L01强,但是经过深入学习总结,这个模块传输速度很慢,因为限制在了串口的速率上,比如115200的波特率计算下来10kb/s左右的传输速率,而NRF24L01则是115kb/s的传输速率,所以最后放弃了ESP8266.局限于各方面因素只能选择NRF24L01,如果有后生的话,有能力的话,建议选择sdio接口的WIFI模块。这个模块是我在正点原子论坛上了解到的,速度很块。


上图:

  

             


视频链接:http://v.youku.com/v_show/id_XMjUxNzI0MDM3Mg==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0


自己在这个项目中的思路:

1.先将摄像头数据过去回来打印出来,在遮挡摄像头等变化的时候看某一个位置点的数据是否有变化。

2.将获取回来的摄像头数据按照lcd屏的写入数据方式写进去,调试图像和摄像头配置

3.将NRF24L01通信的8位数据传输方式改为16位数据传输方式,并且加入视频传输开始和结束的标志。

4.(装配)将摄像头显示和无限通信结合在一起,调试程序运行的bug等


项目中的技术运用:

1.ov2640的摄像头数据通过DCMI接口获取并配置摄像头参数。

2.DCMI获取到的摄像头数据通过DMA传输到一个很大数组中。

3.单凭stm32f407的内置内存并不够,再通过FSMC内存控制器来添加外部sram(1M)  fsmc片选3

4.通过SPI对NRF24L01j进行配置和读写数据

5.通过FSMC对LCD进行控制,这里是fsmc片选4


遇到的问题以及解决方法:

1.通过数组将摄像头数据用显示屏显示出来会花屏

解决方法:因为DMA速度比较快,而外部SRAM读写速度比较慢,所以就导致数组的读取跟不上DMA的速度,然后我通过大量实验摄像头窗口参数和显示屏用到的大小参数,找到可以显示真实图像不花屏的参数匹配值:240*240比较理想,最终还是通过外部sram能够级到的DMA的一个值。


2.预计视频信息传输是不到一秒一帧,但实际两到三秒

思考:因为NRF24L01大概是128kb/s,我要传输的115kb左右的数据,所以理论上一秒钟就够了,但是实际总是残酷的,SPI读写速度才37.5MHZ最大,如果改成DMA传输的SPI通道,收益不高,也就快一秒左右,并且要用到DMA和SPI的双重读写上的新函数,这个时序没有官方说明时序等注意的地方还是不太好做的一件事情。


3.视频在传输的时候会花,花的还一塌糊涂

解决方法:发现这个问题后,我还以为是自己视频的开头结尾没有处理好,以及SRAM和lcd在FSMC片选上的冲突,最后一一排除,排出的方法就是在单独的SRAM写数据和LCD显示上尝试。最终发现是自己将接收端的NRF24L01碰到了盒子上,有阻隔了(有点坑,哈哈)最后放在一块后效果还是可以的。



总结:程序其实也没什么,我一会放在下面,有时候还会有一点花屏,所以说,传输模块一定要选择好,建议可以尝试sdio接口的wifi,如果做出来可以一起分享



代码地址:http://download.csdn.net/detail/zhaoyuaiweide/9757743





评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值