NRF24L01 无线通信模块使用方法

原文出处:http://blog.csdn.net/mc_hust/article/details/39473913


昨天登录百度账号,无意间发现漏看了好多朋友的私信,其中不少是找我探讨关于NRF2401模块的。从12年到14年的信件都有(平时很少注意系统提示信息。。。)。

hust-MC.jpg

实在不好意思,也许很多朋友已经搞定这个模块了,也许有的还在研究。用了半天的时间找出了相关资料并整理好,在这里统一共享给大家,希望能够帮到大家。

NRF24L01是在2012年全国电子设计大赛中使用过的一款无线通信模块,通过SPI向芯片写入数据从而控制芯片发送、接收消息。2401的官方手册下载链接可以在文章的末尾找到。下面是我总结的几点使用步骤,大家也可以直接跳过下面的讲解,因为下载链接里面已经有非常完整的配套数据手册。如果在使用过程中遇到什么问题,或者需要单片机配套源代码,可以随时来这里给我留言,大家一起讨论,相互学习~~

操作步骤:
  1. 模块初始化。初始状态时,LED、CE、SCK引脚均拉低,CSN拉高,SPI初始完成。随后分别设置SPI接收,发送的地址。设置工作频道、数据长度、发射频率等信息。模块随即进入等待状态。
  2. 设置工作模式。拉低CE设置为stand by I 模式,配置SPI读写寄存器,随后拉高CE,短暂延时。配置好工作模式(所有工作模式及相应寄存器位详见数据手册)。
  3. 发送:打包好数据,通过NRF24L01_TxPacket()函数发送数据包;
    接收:通过NRF24L01_RxPacket()等待数据的到来。

PS:代码中有多处短延时,由于SPI对于时序要求高,一定要查清楚所用主控芯片的晶振,指令周期。延时不当会直接导致模块无法正常工作!


        大家在使用中还有什么疑问,欢迎随时来讨论。
另外,很多朋友通过百度知道向我询问源代码,但是由于百度账号登陆的不多,未能即时回复。如果大家需要配套源代码,可以在下面留下联系方式,我会即时的将源代码发送给各位,希望能够帮到大家~~ 谢谢!

文档链接:http://yun.baidu.com/share/link?shareid=1590497368&uk=67973003



原文出处:http://blog.csdn.net/mc_hust/article/details/39473913


  • 14
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 227
    评论
RF2401接收端代码 39 //芯片测试用,无需修改 40 #define TEST_2 0x8E // MSB D143-D136 41 #define TEST_1 0x08 // D135~D128 42 #define TEST_0 0x1c // D127~D120 43 // 注意 DATAx_W+ADDRx_W+CRC 的值必须小于256!单个数据包的大小必须小于32字节(256位) 44 #define DATA2_W 0x10 //未用到--0x10=2字节 //频道2发送/接受数据长度(单位:Bit) 45 #define DATA1_W 0x20 //28字节 16 位 //频道1发送/接受数据长度(单位:Bit) 46 //频道2接收地址 <-频道2未使用 47 #define ADDR2_4 0x00 48 #define ADDR2_3 0x1c 49 #define ADDR2_2 0xcc 50 #define ADDR2_1 0xcc 51 #define ADDR2_0 0xcc 52 // 频道1接收地址 (当前模块地址) <-只是用频道1 53 #define ADDR1_4 0x00 54 #define ADDR1_3 0xcc 55 #define ADDR1_2 0xcc C51 COMPILER V7.20 RX 04/14/2010 15:16:13 PAGE 2 56 #define ADDR1_1 0xcc 57 #define ADDR1_0 0xcc 58 //接收地址位置设置--CRC设置 59 #define ADDR_W 0x8 //0x10 =2字节 //发送/接收地址宽度(单位:Bit) 60 #define CRC_L 0x0 //CRC模式 0:8位 1:16位 61 #define CRC_EN 0x1 //CRC校验 0:禁止 1:启用 62 //频道设置--发送方式设置--速率设置--频率设置 63 #define RX2_EN 0x0 //双频道功能 0:禁用 1:启用 64 #define CM 0x1 //0:Direct Mode 1: Shockburst Mode 65 #define RFDR_SB 0x0 //传输速率 0:250k 1: 1M (250k比1M传输距离远) 66 #define XO_F 0x3 //16M D12 D11 D10 确定 5种频率 67 #define RF_PWR 0x3 //信号发射功率---0DB 68 // 69 #define RF_CH 0x2 //Channal 频率设置Channel=2400MHz+RF_CH*1.0MHz 70 #define RXEN 0x1 //0:TX 1:RX 71 //<将设置信息组合成每个字节的数据信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 227
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值