NRF24L01

芯片简介

nprf2410是由nordic生产的工作在24ghz-250hz的ism频段的单片天线收发器芯片。无线收发器包括:频率发生器,增强。型"schockburst"模式控制器,功率放大器,晶体振荡器,调制器和解调器。
 

应用领域

无线鼠标键盘游戏机操纵杆
无线门禁
无线数据通讯
安防系统
遥控装置
遥感勘测
智能运动设备
工业传感器
玩具

引脚及其功能

引脚

通过以下六个引脚,便可实现模块的所有功能:

(1)MOSI:主器件数据输出,从器件数据输入

(2)MISO:主器件数据输入,从器件数据输出

(3)SCLK:时钟信号,由主器件产生

(4) CSN :从器件使能信号(片选线)

(5)CE:芯片使能,使能器件的发送模式或者接收模式。高电平有效,在发送和接收过程中都要将这个引脚拉高

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

(7)VCC:电压范围1.9V~3.6V,超过3.6V将会烧毁模块。一般电压3.3V左右。除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需电平转换。

通过 SPI 接口,可激活在数据寄存器 FIFO 中的数据,或者通过 SPI 命令访问寄存器。

在待机或掉电模式下,单片机通过 SPI 接口配置模块;

在发射或接收模式下,单片机通过 SPI 接口接收或发射数据。

工作模式

由 CE 和 PWR_UP (CONFIG寄存器第1位)、 PRIM_RX(CONFIG寄存器第0位) 两寄存器共同操纵:
 


也可以理解为NRF2401有工作模式有四种:
收发模式,配置模式,空闲模式,关机模式

发送

Enhanced ShockBurstTM发送流程

1.把地址和要发送的数据按时序送入NRF24L01;

2.配置CONFIG寄存器,使之进入发送模式;

3.微控制器把CE置高(至少10us),激发Enhanced ShockBurstTM发射;

4. 发射完成,NRF24L01进入空闲状态。

初始化NRF24L01到TX模式

1) CE置低

2) 写Tx节点的地址

3) 写Rx节点的地址,使能自动应答

4) 使能通道x的自动应答

5) 使能通道x的接收地址

6) 设置自动重发间隔时间和最大自动重发次数

7) 设置RF通道

8) 配置TX发射参数(低噪放大器增益、发射功率、无线速率)

9) 配置基本工作模式的参数

10)CE拉高,进入发送模式,注意CE要拉高一段时间才进入发送模式

/**
  * @brief  配置发送模式
  * @param  无
  * @retval 无
  */
void NRF_TX_Mode(void)
{  
	NRF_CE_LOW();		

   SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);    //写TX节点地址 

   SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); //设置RX节点地址,主要为了使能ACK   

   SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01);     //使能通道0的自动应答    

   SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址  

   SPI_NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次

   SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL);       //设置RF通道为CHANAL

   SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x07);  //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
	
   SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,发射模式,开启所有中断

/*CE拉高,进入发送模式*/	
  NRF_CE_HIGH();
    Delay(0xffff); //CE要拉高一段时间才进入发送模式
}

接收

Enhanced ShockBurstTM接收流程

1.配置接收地址和要接收的数据包大小;

2.配置CONFIG寄存器,使之进入接收模式,把CE置高;

3. 130us后,NRF24LO1进入监视状态,等待数据包的到来;

4.当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、地址和CRC校验位移去;

5.NRF24LO1通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;

6.微控制器把数据从FIFO读出(0X61指令);

7.所有数据读取完毕后,可以清除STATUS寄存器。进入四种主要的模式之—。

初始化NRF24L01到RX模式

1) CE置低

2)写RX节点地址

3)使能通道x的自动应答

4)使能通道0的接收地址

5)设置RF通信频率

6)选择通道x的有效数据宽度

7)设置TX发射参数

8)配置基本工作模式的参数

9)CE拉高,进入接收模式

/**
  * @brief  配置并进入接收模式
  * @param  无
  * @retval 无
  */
void NRF_RX_Mode(void)

{
	NRF_CE_LOW();	

   SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址

   SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01);    //使能通道0的自动应答    

   SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道0的接收地址    

   SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL);      //设置RF通信频率    

   SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度      

   SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x07); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   

   SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG, 0x0f);  //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 

/*CE拉高,进入接收模式*/	
  NRF_CE_HIGH();

}

此外,还应有系统的初始化,主要有GPIO初始化,SPI初始化,NRF24L01中断初始化。

在GPIO初始化中,需要注意各引脚的工作模式:

SPI时钟,设置为复用推挽输出

SPI输出引脚(SOMI),设置为复用推挽输出

SPI输入引脚(SOMO),设置为悬浮输入

CS、CE引脚,使用软件控制,所以直接设置成推挽输出

SPI指令

所有的 SPI 指令均在当 CSN 由低到高开始跳变时执行;从 MOSI 写命令的同时, MISO实时返回 24L01 的状态值; SPI 指令由命令字节和数据字节两部分组成。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值