找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7784|回复: 8
打印 上一主题 下一主题
收起左侧

众拳基于STM8的NRF24L01 2.4G无线模块实验详解 含程序

  [复制链接]
跳转到指定楼层
楼主

NRF24L01 简介
NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。
芯片特点:
2.4G全球开放的ISM频段,免许可证使用。
最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。
126个可选的频道,满足多点通信和调频通信的需要。
内置CRC检错和点对多点的通信地址控制。
可设置自动应答,确保数据可靠传输。
采用SPI通信,可以很方便的连接到MCU上面。
NRF24L01 模块简介



CSN:SPI片选线
SCK:SPI时钟线
MOSI:SPI数据线(主机输出,从机输入)
MISO:SPI数据线(主机输入,从机输出)


CE:模式控制线,在CSN为低的情况下,CE协同CONFIG寄存器共同决定NRF24L01 的状态(参照NRF24L01 的状态机)


IRQ:中断信号线,中断时变为低电平,在以下三种情况变低:Tx FIFO 发完并且收到ACK(使能ACK情况下)、Rx FIFO 收到数据、达到最

大重发次数。


NRF24L01 SPI通讯时序图



空闲状态SCK为0,CPOL=0;数据在时钟第一个时间边沿采集,CPHA=0;
Cn:SPI命令位
Sn:STATUS寄存器位        
Dn:数据位( MSB,多字节传输时,低字节在前)
NRF24L01 工作模式介绍


其中,收发模式又有: Enhanced ShockBurst收发模式和ShockBurst收发模式,只有Enhanced ShockBurst收发模式支持自动ACK和自动重发。开启自动ACK,则默认选择Enhanced模式
Enhanced ShockBurst 模式介绍
Enhanced ShockBurst收发模式,使用片内的先入先出堆栈区,数据可以低速从微控制器送入,高速(1Mbps/2Mbps)从芯片发射,这样可以尽量节能。与射频协议相关的所有高速信号处理都在片内进行,这种做法有3大好处:
1,节能;
2,低的系统费用(低速微处理器也能进行高速射频发射);
3,数据在空中停留时间短,抗干扰性高;
    在Enhanced ShockBurst收发模式下,NRF24L01自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将使能发送过程。
Enhanced ShockBurst模式:发送方要求终端设备在接收到数据后有应答信号,以便发送方检测有无数据丢失,一旦丢失则重发数据。重发数据设置在地址为 0X04 的数据重发设置寄存器 用于设置其重发次数及设置在未收到应答信号后等待重发的时间。
    在接收模式下,最多可以接收6路不通的数据。每一个数据通道使用不同的地址,但是共用相同的频道。也就是说6 个不同的NRF24L01 设置为发送模式后可以与同一个设置为接收模式的NRF24L01 进行通讯,而设置为接收模式的NRF24L01可以对这6 个发射端进行识别。数据通道0 是唯一的一个可以配置为40 位自身地址的数据通道。1~5 数据通道都为8 位自身地址和32 位公用地址(由通道1设置)。所有的数据通道都可以设置为Enhanced ShockBurst 模式。



在接收端,确认收到数据后记录地址,并以此地址为目标地址发送应答信号。

在发送端,通道0被用作接收应答信号,因此通道0的接收地址要与发送地址端地址相等,以确保接收到正确的应答信号。


Enhanced ShockBurst 发送模式

初始化过程:
1)写Tx 节点的地址 TX_ADDR
2)写Rx 节点的地址(主要是为了使能Auto Ack) RX_ADDR_P0
3)使能AUTO ACK EN_AA
4)使能PIPE 0 EN_RXADDR
5)配置自动重发次数 SETUP_RETR
6)选择通信频率 RF_CH  频率计算公式:2400+RF_CH  (Mhz)
7)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP
8)配置24L01 的基本参数以及切换工作模式 CONFIG。


发送流程:
1. 把地址和要发送的数据按时序送入NRF24L01;
2. 配置CONFIG寄存器,使之进入发送模式;
3. 微控制器把CE置高(至少10us),激发Enhanced ShockBurstTM发射;
4. Enhanced ShockBurstTM发射:
①给射频前端供电;
②射频数据打包(加字头、CRC校验码);
③ 高速发射数据包;
④发射完成,NRF24L01进入空闲状态。


Enhanced ShockBurst 接收模式
初始化过程:
1)写Rx 节点的地址 RX_ADDR_P0
2)使能AUTO ACK EN_AA
3)使能PIPE 0 EN_RXADDR
4)选择通信频率 RF_CH
5)选择通道0 有效数据宽度 RX_PW_P0
6)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP
7)配置24L01 的基本参数以及切换工作模式 CONFIG。

接收流程:
1. 配置接收地址和要接收的数据包大小;
2. 配置CONFIG寄存器,使之进入接收模式,把CE置高。
3. 130us后,NRF24L01进入监视状态,等待数据包的到来;
4. 当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、地址和CRC校验位移去;
5. NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;
6. 微控制器把数据从FIFO读出(0X61指令);
7. 所有数据读取完毕后,可以清除STATUS寄存器。NRF2401可以进入四种主要的模式之一;


NRF24L01-SPI指令


寄存器介绍




















单片机源程序如下:
  1. /***********************************************************************
  2. *   作    者: 刘洋 张殿东
  3. *   版    本: V1.0
  4. *   日    期: 2016-05-03   
  5. *
  6. *   IAR开发环境    版本 V2.20.1
  7. *   ST库函数       版本 V2.2.0
  8. ***********************************************************************/

  9. #include "pbdata.h"//引入自定义公共头文件

  10. void BSP_Configuration(void);//硬件初始化函数声明

  11. /***********************************************************************
  12. *   函 数 名: main
  13. *   功能说明: c程序入口
  14. *   形    参:无
  15. *   返 回 值: 错误代码(无需处理)
  16. ***********************************************************************/
  17. int main(void)
  18. {
  19.   BSP_Configuration();//硬件驱动初始化函数
  20.   
  21.   NRF24L01_Demo3();  
  22. }
  23. /***********************************************************************
  24. *   函 数 名: BSP_Configuration
  25. *   功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
  26. *   形    参:无
  27. *   返 回 值: 无
  28. ***********************************************************************/
  29. void BSP_Configuration(void)
  30. {  
  31.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
  32.   UART1_Congfiguration();//调用RS232串口1初始化函数
  33.   LED_Init();//调用LED初始化函数
  34.   SPI_Configation();
  35.   NRF24L01_Init();
  36.   rim();//打开总中断
  37. }

  38. /*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
  39. #ifdef USE_FULL_ASSERT
  40. ……………………

  41. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

【众拳】剑齿虎开发板2.4G无线实验程序下载:
众拳剑齿虎NRF24L01 2.4G无线模块实验程序.zip (1.82 MB, 下载次数: 194)

实验资料下载:
NRF24L01 2.4G无线模块实验资料.zip (3.9 KB, 下载次数: 154)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:134294 发表于 2017-11-30 17:29 | 只看该作者
感谢!正在学习!
回复

使用道具 举报

板凳
ID:218002 发表于 2018-8-27 13:52 | 只看该作者

感谢,学习学习
回复

使用道具 举报

地板
ID:32574 发表于 2018-8-30 16:31 | 只看该作者
谢谢老师分享,正在研究nrf24l01。
还想请教老师个问题:如果想用电脑输入并发送类似001#-zt,则001#终端返回应答信号zt,并在终端指示灯闪烁提示需要怎么入手。

谢谢!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:418504 发表于 2018-10-31 14:19 | 只看该作者
谢谢老师分享,现在要用到这个模块奈何真心不知怎么下手 超赞
回复

使用道具 举报

6#
ID:418504 发表于 2018-10-31 14:20 | 只看该作者
真心很好 太棒了
回复

使用道具 举报

7#
ID:183532 发表于 2019-7-30 09:30 | 只看该作者
及时雨
回复

使用道具 举报

8#
ID:969296 发表于 2022-4-28 17:02 | 只看该作者
while (SPI_RF_IRQ!=0);//等待发送完成
回复

使用道具 举报

9#
ID:969296 发表于 2022-4-28 17:03 | 只看该作者
这里卡住了,怎么回事,楼主及大神请不吝赐教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表