打印

51+STM32+SD卡+znFAT+NRF24L01射频实现"文件无线传输"【自定协议】

[复制链接]
4095|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2014-1-30 01:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2014-1-30 02:05 编辑


网站 www.znmcu.cn 论坛 www.znmcu.cn/bbs
znFAT技术交流群:145948643

在振南的ZN-X开发板上配备了NRF24L01射频收发模块的接口,兼容公版模块。znFAT文件系统与射频能有什么关系呢?它们搭配在一起又能实现什么功能呢?应该说它的意义还是比较大的,可以实现文件数据的无线传输功能。这为文件系统的应用创造了新的思路。
你有没有过这样的经历。当你进入飞机场时,会通过蓝牙或网络接收到一些信息文件,诸如通知或新闻等。再比如有的时候我们需要为野外工作的设备升级固件,但又很难接近设备,也许你会希望有一种脱机烧录器,可以读取SD卡上的程序文件,通过无线方式完成烧录工作。有人基于射频的无线通信技术之后,很多东西都可以驭之于数里之外了。
NRF24L01是非常经典的2.4GHz射频通信芯片,它以高可靠性、高数据传输速率等优点得到人们的广泛应用。此实验中使用NRF24L0151STM32(两块ZN-X开发板),再配以SD卡与振南的znFAT文件系统方案,最终完成文件的无线传输与存储。实验示意如下图。

实验中51单片机读取SD卡中的某一文件,将其数据按一定的通信协议分多帧以无线方式传至STM32STM32接收数据解析后将有效数据写入到SD卡的文件中。在这个过程中,SD卡、NRF24L01等硬件的底层驱动以及znFAT文件系统其实都不是问题,它们在振南的眼里已经比较成熟了。最重要的其实是通信协议,它是使得数据传输有条不紊进行的核心。
振南这里使用的是一种自定义的文件传输协议,它简单易行,又能基本上保证数据的正确性。协议具体内容如下图所示。

在代码里,首先检测数据头是否为’@’,如果是则认为它是一个合法的数据包,进而开始对后面的数据进行解析,否则认为它是一个非法数据包,输出错误提示。由于NRF24L01一次最多只能收发32字节的数据,所以本协议中数据包总长度为32字节。每次传输的最大数据长度为28字节,其余4个字节,分别用于数据头、有效数据长度与当前数据包的包号(0N)。有效数据长度用来告诉我们从此包数据中提取多少有效数据,写入到SD卡中;数据包号可用于侦查是否有数据包丢失,进而采取相应的措施(比如重传,不过此实验中没有实现重传机制,如果出现包现象,则直接补0)。

实验相关图片效果 :
  
  
在线演示视频:http://v.youku.com/v_show/id_XNjY3NjM5ODIw.html

源代码: 51.rar (385.61 KB)
               STM32.rar (366.29 KB)

相关帖子

沙发
swustlx86| | 2014-1-30 13:04 | 只看该作者
南哥大年三十还发技术贴,过来支持一下。新年快乐!m

使用特权

评论回复
板凳
woshansi| | 2014-1-30 21:21 | 只看该作者
这样是不是有点贵呀,24l01好像不是多便宜

使用特权

评论回复
地板
znmcu|  楼主 | 2014-1-30 23:31 | 只看该作者
24l01挺便宜的

使用特权

评论回复
5
lirunze| | 2014-1-31 16:11 | 只看该作者
新年快乐 啊

使用特权

评论回复
6
Xy201207| | 2014-2-2 19:02 | 只看该作者
支持

使用特权

评论回复
7
liaojihua2010| | 2014-7-17 13:43 | 只看该作者
一如既往支持振南兄

使用特权

评论回复
8
旭日东起| | 2014-7-17 16:59 | 只看该作者

一如既往支持振南兄

使用特权

评论回复
9
armxu| | 2016-4-27 16:04 | 只看该作者
不错,刚学会用NRF24L01发送简单数据,学传送文件正好提高下!!
谢谢振南共享!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:振南的znFAT -- 单片机上上的FAT32文件系统 www.znmcu.cn

4474

主题

5195

帖子

33

粉丝