当前位置:文档之家› NRF24L01功能使用文档

NRF24L01功能使用文档

NRF24L01功能使用文档
NRF24L01功能使用文档

NRF24L01使用文档

基于c8051f330单片机

目录

芯片简介 (3)

1 NRF24L01功能框图 (4)

2 NRF24L01状态机 (5)

3 Tx与Rx的配置过程 (7)

3.1 Tx 模式初始化过程 (7)

3.2 Rx模式初始化过程 (8)

4控制程序详解 (9)

4.1 函数介绍 (9)

4.1.1 uchar SPI_RW(uchar byte) (9)

4.1.2 uchar SPI_RW_Reg (uchar reg, uchar value) (10)

4.1.3 uchar SPI_Read (uchar reg); (10)

4.1.4 uchar SPI_Read_Buf (uchar reg, uchar *pBuf, uchar bytes); (11)

4.1.5 uchar SPI_Write_Buf (uchar reg, uchar *pBuf, uchar bytes); (11)

4.1.6 void RX_Mode(void) (12)

4.1.7 void TX_Mode(void) (13)

4.2 NRF24L01相关命令的宏定义 (13)

4.3 NRF24L01相关寄存器地址的宏定义 (14)

5 实际通信过程示波器图 (16)

1)发射节点CE与IRQ信号 (17)

2)SCK与IRQ信号(发送成功) (18)

3)SCK与IRQ信号(发送不成功) (19)

芯片简介

NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst 协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。

1 NRF24L01功能框图

Fig.1 NRF24L01 BLOCK DIAGRAM

NRF24L01的框图如Fig.1所示,从单片机控制的角度来看,我们只需要关注Fig.1右面的六个控制和数据信号,分别为CSN、SCK、MISO、MOSI、IRQ、CE。

CSN:芯片的片选线,CSN为低电平芯片工作。

SCK:芯片控制的时钟线(SPI时钟)

MISO:芯片控制数据线(Master input slave output)

MOSI:芯片控制数据线(Master output slave input)

IRQ:中断信号。无线通信过程中MCU主要是通过IRQ与NRF24L01进行通信。

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

2 NRF24L01状态机

NRF24L01的状态机见Fig.2所示,对于NRF24L01的固件编程工作主要是参照NRF24L01的状态机。主要有以下几个状态

Power Down Mode:掉电模式

Tx Mode:发射模式

Rx Mode:接收模式

Standby-1Mode:待机1模式

Standby-2 Mode:待机2模式

上面五种模式之间的相互切换方法以及切换所需要的时间参照Fig.2。

Fig.2 NRF24L01 State Machine

对24L01的固件编程的基本思路如下:

1)置CSN为低,使能芯片,配置芯片各个参数。(过程见3.Tx与Rx的配置过程)配置参数在Power Down状态中完成。

2)如果是Tx模式,填充Tx FIFO。

3)配置完成以后,通过CE与CONFIG中的PWR_UP与PRIM_RX参数确定24L01要切换到的状态。

Tx Mode:PWR_UP=1; PRIM_RX=0; CE=1 (保持超过10us就可以);

Rx Mode: PWR_UP=1; PRIM_RX=1; CE=1;

4) IRQ引脚会在以下三种情况变低:

Tx FIFO 发完并且收到ACK(使能ACK情况下)

Rx FIFO 收到数据

达到最大重发次数

将IRQ接到外部中断输入引脚,通过中断程序进行处理。

3 Tx与Rx的配置过程

本节只是叙述了采用ENHANCED SHORT BURST通信方式的Tx 与Rx的配置及通信过程,熟悉了24L01以后可以采用别的通信方式。

3.1 Tx 模式初始化过程

初始化步骤 24L01相关寄存器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

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

8 ) 选择通道0 有效数据宽度Rx_Pw_P0

9)配置24L01的基本参数以及切换工作模式CONFIG

Tx 模式初始化过程

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

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

8 ) 选择通道0 有效数据宽度 Rx_Pw_P0

9)配置24L01的基本参数以及切换工作模式 CONFIG。

3.2 Rx模式初始化过程

初始化步骤 24L01相关寄存器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

Rx模式初始化过程:

初始化步骤 24L01相关寄存器

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。

4 控制程序详解

4.1 函数介绍

NRF24L01的控制程序主要包括以下几个函数

uchar SPI_RW(uchar byte);

uchar SPI_RW_Reg(uchar reg, uchar value);

uchar SPI_Read(uchar reg);

uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bytes);

uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes);

void RX_Mode(void);

void TX_Mode(void);

4.1.1 uchar SPI_RW(uchar byte)

uchar SPI_RW(uchar byte)

{

bit_ctr;

uchar

for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit

{

MOSI = (byte & 0x80); // output 'byte', MSB to MOSI

byte = (byte << 1); // shift next bit into MSB..

SCK = 1; // Set SCK high..

byte |= MISO; // capture current MISO bit

SCK = 0; // ..then set SCK low again }

return(byte); // return read byte

}

最基本的函数,完成GPIO模拟SPI的功能。将输出字节(MOSI)从MSB循环输出,同时将输入字节(MISO)从LSB循环移入。上升沿读入,下降沿输出。(从SCK被初始化为低电平可以判断出)。

4.1.2 uchar SPI_RW_Reg (uchar reg, uchar value)

uchar SPI_RW_Reg(uchar reg, uchar value)

{

status;

uchar

CSN = 0; // CSN low, init SPI transaction

status = SPI_RW(reg); // select register

SPI_RW(value); // ..and write value to it..

CSN = 1; // CSN high again

return(status); // return nRF24L01 status byte

}

寄存器访问函数:用来设置24L01的寄存器的值。基本思路就是通过WRITE_REG命令(也就是0x20+寄存器地址)把要设定的值写到相应的寄存器地址里面去,并读取返回值。对于函数来说也就是把value值写到reg寄存器中。

需要注意的是,访问NRF24L01之前首先要enable芯片(CSN=0;),访问完了以后再disable 芯片(CSN=1;)。

4.1.3 uchar SPI_Read (uchar reg);

uchar SPI_Read(uchar reg)

{

uchar

reg_val;

CSN = 0; // CSN low, initialize SPI communication...

SPI_RW(reg); // Select register to read from..

reg_val = SPI_RW(0); // ..then read registervalue

CSN = 1; // CSN high, terminate SPI communication

return(reg_val); // return register value

}

读取寄存器值的函数:基本思路就是通过READ_REG命令(也就是0x00+寄存器地址),把寄存器中的值读出来。对于函数来说也就是把reg寄存器的值读到reg_val中去。

4.1.4 uchar SPI_Read_Buf (uchar reg, uchar *pBuf, uchar bytes);

uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bytes)

{

status,byte_ctr;

uchar

CSN = 0; // Set CSN low, init SPI tranaction

status = SPI_RW(reg); // Select register to write to and read status byte

for(byte_ctr=0;byte_ctr

pBuf[byte_ctr] = SPI_RW(0); // Perform SPI_RW to read byte from nRF24L01 CSN = 1; // Set CSN high again

return(status); // return nRF24L01 status byte

}

接收缓冲区访问函数:主要用来在接收时读取FIFO缓冲区中的值。基本思路就是通过READ_REG命令把数据从接收FIFO(RD_RX_PLOAD)中读出并存到数组里面去。

4.1.5 uchar SPI_Write_Buf (uchar reg, uchar *pBuf, uchar bytes); uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes)

{

uchar status,byte_ctr;

CSN = 0; // Set CSN low, init SPI tranaction

status = SPI_RW(reg); // Select register to write to and read status byte

Uart_Delay(10);

for(byte_ctr=0; byte_ctr

CSN = 1; // Set CSN high again

return(status); // return nRF24L01 status byte

}

发射缓冲区访问函数:主要用来把数组里的数放到发射FIFO缓冲区中。基本思路就是通过WRITE_REG命令把数据存到发射FIFO(WR_TX_PLOAD)中去。

4.1.6 void RX_Mode(void)

设定24L01为接收方式,配置过程详见3.2 Rx模式初始化过程。

void RX_Mode(void)

{

CE=0;

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);

SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // Enable Auto.Ack:Pipe0

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // Enable Pipe0

SPI_RW_Reg(WRITE_REG + RF_CH, 40); // Select RF channel 40

SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled..

CE = 1; // Set CE pin high to enable RX device

// This device is now ready to receive one packet of 16 bytes payload from a TX device sending to address

// '3443101001', with auto acknowledgment, retransmit count of 10, RF channel 40 and datarate = 2Mbps.

}

4.1.7 void TX_Mode(void)

设定24L01为发送方式,配置过程详见3.1 Tx模式初始化过程。

void TX_Mode(void)

{

CE=0;

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);

SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // Writes data to TX payload

SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // Enable Auto.Ack:Pipe0

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // Enable Pipe0

SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...

SPI_RW_Reg(WRITE_REG + RF_CH, 40); // Select RF channel 40

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // TX_PWR:0dBm, Datarate:2Mbps,

LNA:HCURR

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled..

CE=1;

}

4.2 NRF24L01相关命令的宏定义

nRF24L01的基本思路就是通过固定的时序与命令,控制芯片进行发射与接收。控制命令如FIG..4.2.1所示。

FIG.4.2.1

前面提到的函数也要与这些命令配合使用,比如

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);

相关命令的宏定义如下:

#define READ_REG 0x00 // Define read command to register

#define WRITE_REG 0x20 // Define write command to register

#define RD_RX_PLOAD 0x61 // Define RX payload register address

#define WR_TX_PLOAD 0xA0 // Define TX payload register address

#define FLUSH_TX 0xE1 // Define flush TX register command

#define FLUSH_RX 0xE2 // Define flush RX register command

#define REUSE_TX_PL 0xE3 // Define reuse TX payload register command

#define NOP 0xFF // Define No Operation, might be used to read status register

4.3 NRF24L01相关寄存器地址的宏定义

#define CONFIG 0x00 // 'Config' register address

#define EN_AA 0x01 // 'Enable Auto Acknowledgment' register address #define EN_RXADDR 0x02 // 'Enabled RX addresses' register address

#define SETUP_AW 0x03 // 'Setup address width' register address

#define SETUP_RETR 0x04 // 'Setup Auto. Retrans' register address

#define RF_CH 0x05 // 'RF channel' register address

#define RF_SETUP 0x06 // 'RF setup' register address

#define STATUS 0x07 // 'Status' register address

#define OBSERVE_TX 0x08 // 'Observe TX' register address

#define CD 0x09 // 'Carrier Detect' register address

#define RX_ADDR_P0 0x0A // 'RX address pipe0' register address

#define RX_ADDR_P1 0x0B // 'RX address pipe1' register address

#define RX_ADDR_P2 0x0C // 'RX address pipe2' register address

#define RX_ADDR_P3 0x0D // 'RX address pipe3' register address

#define RX_ADDR_P4 0x0E // 'RX address pipe4' register address

#define RX_ADDR_P5 0x0F // 'RX address pipe5' register address

#define TX_ADDR 0x10 // 'TX address' register address

#define RX_PW_P0 0x11 // 'RX payload width, pipe0' register address

#define RX_PW_P1 0x12 // 'RX payload width, pipe1' register address

#define RX_PW_P2 0x13 // 'RX payload width, pipe2' register address

#define RX_PW_P3 0x14 // 'RX payload width, pipe3' register address

#define RX_PW_P4 0x15 // 'RX payload width, pipe4' register address

#define RX_PW_P5 0x16 // 'RX payload width, pipe5' register address

#define FIFO_STATUS 0x17 // 'FIFO Status Register' register address

5 实际通信过程示波器图

对于NRF24L01的编程主要是通过命令(WRITE_REG,READ_REG等等),控制线CE、CSN)以及中断信号IRQ共同完成的。

对于发射节点,如果使能ACK与IRQ功能,则当通信成功以后(也就是发射节点收到了接收节点送回的ACK信号)IRQ线会置低。

对于接收节点,如果使能ACK与IRQ功能,则当通信成功以后(主要是根据Enhanced ShockBurst协议认为成功收到了有效数据宽度的数据)IRQ线会置低。

根据以上两种情况,用示波器抓了以下几个图形,分别介绍如下:

1)发射节点CE与IRQ信号

FIG5.1

黄色信号是CE,绿色信号是IRQ,当把节点配置为发射节点以后,将要传送的数据通过 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH)函数送到发送FIFO缓冲区。CE为高超过10us,缓冲区中的数据通过无线向外发出。 如果使能IQR的全部功能(TX_DS,RX_DS,MAX_RT)当发送节点收到接收节点发来的ACK(表示接收节点成功收到信号)或是达到最大发射次数,IRQ会变为低电平,同时CONFIG的相关标志位()会置1。清除标志位(向CONFIG的标志位写1)以后,IRQ又变为高电平。

从FIG5.1可以看出,CE置高后将近10msIRQ才置低。IRQ置低是由于达到最大发射次数(MAX_RT=1),出现该情况可能是由于接收节点的配置与发射节点不符(例如发射接收频率不同,或者发射接收字节不等),或者根本就没有接收节点(例如接收节点就根本没上电)。

2)SCK与IRQ信号(发送成功)

Fig5.2

Fig5.2中绿色信号是SCK,黄色信号是IRQ。第一批绿色信号表示节点的配置过程。MOSI信号(Fig5.2中未显示出)在SCK的下降延送入24L01节点。(配置一个寄存器需要两组SCK信号,填充N字节的BUFFER需要N+1组SCK信号)。

配置完信号以后,将CE(Fig5.2中未显出)置高,则24L01开始发送(或接收)数据,当发送(或接收)完成以后(或是达到最大发射次数),IRQ置低。单片机根据当时的状态进行相应的处理。

第二批绿色信号表示单片机在IRQ为低时对24L01的处理过程。可以是读FIFO(作为接收节点时),写FIFO(作为发射节点时),或是Reset 24L01(达到最大发射次数时)。

从Fig5.2可以看到,从第一批SCK的最后一个信号到IRQ置低大概需要1ms

(对比于Fig5.1的12ms),说明通信成功(说明IRQ不是MAX_RT引起的)。3)SCK与IRQ信号(发送不成功)

Fig5.3

Fig5.3与Fig5.2类似,只不过从第一批最后一个SCK信号到IRQ置低的时间间隔变为将近10ms,表明通信部不成功,IRQ是由于达到最大发射次数引起的。

4)SCK、IRQ、CE信号

Fig5.4

Fig5.4中紫色信号是发射端CE,绿色信号是接收端IRQ,黄色信号是发射端IRQ。Fig5.4表示如下逻辑:

发射节点在配置完成以后(配制过程Fig5.2未显示),CE置高,发射节点FIFO 中的数据发出;接收节点成功接收到数据,IRQ置低(从紫色信号与绿色信号之间的时间间隔可以判断出通信成功);接收节点自动发射ACK(在发射和接收节点都使能ACK),发射节点收到ACK后IRQ置低,表示发送成功。

不同通信环境可能造成发射节点的IRQ与接收节点的IRQ产生将对的相位变化(表现在示波器上面就是黄色信号靠近绿色信号或者远离绿色信号)。出现这种情况主要是由于不同的通信环境造成接收端发送的ACK信号要重发几次才

NRF24L01无线模块收发程序(实测成功 多图)

NRF24L01无线模块收发程序(实测成功多图) 本模块是NRF24L01无线传输模块,用于无线传输数据,距离不远,一般只是能够满足小距离的传输,目测是4-5m,价格一般是4元左右,可以方便的买到。 51最小系统学习板就可以,当时是用了两块学习板,一块用于发送,一块用于接收。 小车也是比较容易购到的,四个端口控制两个电机,两个控制一个电机,当两个端口高低电平不同时电机就会转动,即为赋值1和0是电机转动,赋值可以用单片机作用,当然这是小车启动部分,前进后退左转右转就是你赋值0和1的顺序问题了。

整体思路是用发射端的按键控制小车,即为按键按下就前进,再按其他按键实现其他功能,本次程序是在用NRF24L01发射数据在接收端用1602显示的基础上改变。 下面是程序源码(有好几个文件,分别创建) ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////// #include #include #include'1602.h' #include'delay.h' #include 'nrf24l01.h' #define uint unsigned int #define uchar unsigned char uint Weight_Shiwu=1234; unsigned char KeyScan(void);//键盘扫描 // unsigned char KeyScan(void);//键盘扫描 //#define KeyPort P0 sbit KEY1 = P0^0; sbit KEY2 = P0^1; sbit KEY3 = P0^2; sbit KEY4 = P0^3; sbit KEY5 = P0^4; void main() { // char TxDate[4]; // LCD_Init(); //初始化液晶屏 // LCD_Clear(); //清屏

开发文档介绍

开发文档介绍 软件开发文档是软件开发使用和维护过程中的必备资料。它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料。 软件文档可以分为开发文档和产品文档两大类。 开发文档包括:《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系统分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、《QA 文档》、《项目总结》等。产品文档包括:《产品简介》、《产品演示》、《疑问解答》、《功能介绍》、《技术白皮书》、《评测报告》。用户文档《安装手册》、《使用手册》、《维护手册》、《用户报告》、《销售培训》等。 开发文档 1. 《功能要求》-- 来源于客户要求和市场调查,是软件开发中最早期的一个环节。 客户提出一个模糊的功能概念,或者要求解决一个实际问题,或者参照同类软件的一个功能。有软件经验的客户还会提供比较详细的技术规范书,把他们的要求全部列表书写在文档中,必要时加以图表解说。这份文档是需求分析的基础。 2. 《投标方案》-- 根据用户的功能要求,经过与招标方沟通和确认,技术人员开 始书写《投标方案》,方案书一般包括以下几个重要的章节:前言-- 项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。需求分析-- 项目要求、软件结构、功能列表、功能描述、注意事项等。技术方案-- 总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。项目管理-- 描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。技术支持-- 公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。系统报价-- 软、硬件平台报价列表、软件开发费用、系统维护费用等。项目进度-- 整个项目的进度计划,包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。 3. 《需求分析》-- 包括产品概述、主要概念、操作流程、功能列表和解说、注意 事项、系统环境等。以《功能要求》为基础,进行详细的功能分析( 包括客户提出的要求和根据开发经验建议的功能) ,列出本产品是什么,有什么特殊的概念,包括哪些功能分类,需要具备什么功能,该功能的操作如何,实现的时候该注意什么细节,客户有什么要求,系统运行环境的要求等。这里的功能描述跟以后的使用手册是一致的。 4. 《技术分析》-- 包括技术选型、技术比较、开发人员、关键技术问题的解决、 技术风险、技术升级方向、技术方案评价,竞争对手技术分析等。以《需求分析》为基础,进行详细的技术分析( 产品的性能和实现方法) ,列出本项目需要使用什么技术方案,为什么,有哪些技术问题要解决,估计开发期间会碰到什么困难,技术方案以后如何升级,对本项目的技术有什么评价等。 5. 《系统分析》-- 包括功能实现、模块组成、功能流程图、函数接口、数据字典、 软件开发需要考虑的各种问题等。以《需求分析》为基础,进行详细的系统分析( 产

nRF24L01无线通信模块使用手册12

深圳市德普施科技有限公司 nRF24L01无线通信模块使用手册 一、模块简介 该射频模块集成了NORDIC公司生产的无线射频芯片nRF24L01: 1.支持2.4GHz的全球开放ISM频段,最大发射功率为0dBm 2.2Mbps,传输速率高 3.功耗低,等待模式时电流消耗仅22uA 4.多频点(125个),满足多点通信及跳频通信需求 5.在空旷场地,有效通信距离:25m(外置天线)、10m(PCB天线) 6.工作原理简介: 发射数据时,首先将nRF24L01配置为发射模式,接着把地址TX_ADDR和数据TX_PLD 按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从发送堆栈中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC_CNT)达到上限,MAX_RT置高,TX_PLD不会被清除;MAX_RT或TX_DS置高时,使IRQ变低,以便通知MCU。最后发射成功时,若CE为低,则nRF24L01进入待机模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入待机模式2。 接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在接收堆栈中,同时中断标志位RX_DR置高,IRQ变低,以便通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。 三、模块引脚说明

NRF24L01无线模块收发程序例程

//下面是接收的NRF24L01的程序。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include "nrf24l01.h" #include #define uchar unsigned char #define uint unsigned int sbit IRQ =P1^2;//输入 sbit MISO =P1^3; //输入 sbit MOSI =P1^1;//输出 sbit SCLK =P1^4;//输出 sbit CE =P1^5;//输出 sbit CSN =P1^0;//输出 uchar RevTempDate[5];//最后一位用来存放结束标志 uchar code TxAddr[]={0x34,0x43,0x10,0x10,0x01};//发送地址 /*****************状态标志*****************************************/ uchar bdata sta; //状态标志 sbit RX_DR=sta^6; sbit TX_DS=sta^5; sbit MAX_RT=sta^4; /*****************SPI时序函数******************************************/ uchar NRFSPI(uchar date) { uchar i; for(i=0;i<8;i++) // 循环8次 { if(date&0x80) MOSI=1; else MOSI=0; // byte最高位输出到MOSI date<<=1; // 低一位移位到最高位 SCLK=1; if(MISO) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据date|=0x01; // 读MISO到byte最低位 SCLK=0; // SCK置低 } return(date); // 返回读出的一字节 } /**********************NRF24L01初始化函数*******************************/ void NRF24L01Int() {

nRF24L01无线通信模块使用手册

nRF24L01无线通信模块使用手册 一、模块简介 该射频模块集成了NORDIC公司生产的无线射频芯片nRF24L01: 1.支持2.4GHz的全球开放ISM频段,最大发射功率为0dBm 2.2Mbps,传输速率高 3.功耗低,等待模式时电流消耗仅22uA 4.多频点(125个),满足多点通信及跳频通信需求 5.在空旷场地,有效通信距离:25m(外置天线)、10m(PCB天线) 6.工作原理简介: 发射数据时,首先将nRF24L01配置为发射模式,接着把地址TX_ADDR和数据TX_PLD按照时序由SPI 口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD 从发送堆栈中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC_CNT)达到上限,MAX_RT置高,TX_PLD不会被清除;MAX_RT或TX_DS置高时,使IRQ变低,以便通知MCU。最后发射成功时,若CE为低,则nRF24L01进入待机模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入待机模式2。 接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在接收堆栈中,同时中断标志位RX_DR置高,IRQ 变低,以便通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。 二、模块电气特性 参数数值单位 供电电压5V 最大发射功率0dBm 最大数据传输率2Mbps 电流消耗(发射模式,0dBm)11.3mA 电流消耗(接收模式,2Mbps)12.3mA 电流消耗(掉电模式)900nA 温度范围-40~+85℃ 三、模块引脚说明 管脚符号功能方向 1GND电源地 2IRQ中断输出O 3MISO SPI输出O 4MOSI SPI输入I 5SCK SPI时钟I 6NC空 7NC空 8CSN芯片片选信号I 9CE工作模式选择I 10+5V电源

NRF24L01功能使用文档

NRF24L01使用文档 基于c8051f330单片机

目录 芯片简介 (3) 1 NRF24L01功能框图 (4) 2 NRF24L01状态机 (5) 3 Tx与Rx的配置过程 (7) 3.1 Tx 模式初始化过程 (7) 3.2 Rx模式初始化过程 (8) 4控制程序详解 (9) 4.1 函数介绍 (9) 4.1.1 uchar SPI_RW(uchar byte) (9) 4.1.2 uchar SPI_RW_Reg (uchar reg, uchar value) (10) 4.1.3 uchar SPI_Read (uchar reg); (10) 4.1.4 uchar SPI_Read_Buf (uchar reg, uchar *pBuf, uchar bytes); (11) 4.1.5 uchar SPI_Write_Buf (uchar reg, uchar *pBuf, uchar bytes); (11) 4.1.6 void RX_Mode(void) (12) 4.1.7 void TX_Mode(void) (13) 4.2 NRF24L01相关命令的宏定义 (13) 4.3 NRF24L01相关寄存器地址的宏定义 (14) 5 实际通信过程示波器图 (16) 1)发射节点CE与IRQ信号 (17) 2)SCK与IRQ信号(发送成功) (18) 3)SCK与IRQ信号(发送不成功) (19)

芯片简介 NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst 协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。

nrf24l01无线模块NRF24L01模块收发c程序

//许多人都在找nrf24l01无线模块的c程序;我以前刚接触无线//时用的就是nrf24l01模块;搜索了许多程序有很多都没法直接用;甚至还怀疑模块是不是被我搞坏了;拿去让别人检测模块又是好的;为避免大家走弯路;我将我的程序发出来供大家参考; 这是nrf24l01无线模块pcb图; 下面有Nrf24l01无线模块的收发c程序;以下程序经本人亲自测试;绝对能用!! 请注意以下几点: 1、24L01模块的电源电压是否为3V-3.6V之间; 2、如果您用的单片机是5V的话,请在IO口与模块接口之间串一个1K电阻; 3、检查模块的GND是否与单片机的GND相连接 4、先用程序进行调试,如果IO口不同,请更改IO口或相关时序; 5、如果是51系列单片机,晶振请选用11.0592M Hz; 模块供电最好用asm1117 5v转3.3v 稳压 测试单片机是stc89c52;at89c52 通用; 收发一体;

一大截不废话了;上程序;此程序是按键控制led;当按下s的时候对应接受的led会闪闪发光;很简单的~如果要实现其他更先进的功能;自己发掘吧~~ 务必将硬件连接正确;否则;它不会工作的~~当然做什么都要严谨~~错一点就差大了~~ 《《收发一体程序》》 #include #include typedef unsigned char uchar; typedef unsigned char uint; //****************************************NRF24L01端口定义

*************************************** sbit M ISO =P1^3; sbit M OSI =P1^4; sbit SCK =P1^2; sbit CE =P1^1; sbit CSN =P3^2; sbit IRQ =P3^3; //************************************按键*************************************************** sbit KEY=P2^0; //***************************************************************************** sbit led=P2^1; //*********************************************NRF24L01*********************** ************** #define TX_ADR_WIDTH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width #define TX_PLOAD_WIDTH 20 // 20 uints TX payload #define RX_PLOAD_WIDTH 20 // 20 uints TX payload uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址//***************************************NRF24L01寄存器指令******************************************************* #define READ_REG 0x00 // 读寄存器指令 #define WRITE_REG 0x20 // 写寄存器指令 #define RD_RX_PLOAD 0x61 // 读取接收数据指令 #define WR_TX_PLOAD 0xA0 // 写待发数据指令 #define FLUSH_TX 0xE1 // 冲洗发送FIFO指令 #define FLUSH_RX 0xE2 // 冲洗接收FIFO指令 #define REUSE_TX_PL 0xE3 // 定义重复装载数据指令 #define NOP 0xFF // 保留 //*************************************SPI(nRF24L01)寄存器地址**************************************************** #define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 // 自动应答功能设置 #define EN_RXADDR 0x02 // 可用信道设置 #define SETUP_AW 0x03 // 收发地址宽度设置 #define SETUP_RETR 0x04 // 自动重发功能设置 #define RF_CH 0x05 // 工作频率设置 #define RF_SETUP 0x06 // 发射速率、功耗功能设置 #define STATUS 0x07 // 状态寄存器 #define OBSERVE_TX 0x08 // 发送监测功能 #define CD 0x09 // 地址检测 #define RX_ADDR_P0 0x0A // 频道0接收数据地址 #define RX_ADDR_P1 0x0B // 频道1接收数据地址

生物软件使用说明书大全

生物软件使用说明书大全 生物软件使用说明书大全 转自: SPSS10教程 SAS6.12统计教程 统计软件SAS 8.2教程 Stata统计学教程入门 Eviews3.1使用入门教程1 软件中文使用说明书大全 ? ·NoteExpress初级教程(step by step) ? ·常用生物软件简介汇总(window 版) ? ·STATISTICA/w 5.0及其在医学中的应用 ? ·利用Excel处理统计数据 ? ·数据分析、科技绘图的必备工具-Microcal O () ? ·Band Leader中文使用说明书 ? ·BioEdit中文使用说明书下载 ) ? ·Cn3D中文说明书下载 ? ·Gel-PRO ANALYZER凝胶定量分析软件演示操作 ) ? ·Gene Construction Kit中文使用手册 ) ? ·aminoXpress中文使用说明书 ) ? ·DNAtools中文说明书下载 ? ·综合性序列分析软件DNAStar中文使用说明书 ) ? ·Reference Manager 10中文使用说明书 ? ·Genamics中文使用说明书) ? ·Vector NTI9.0中文使用说明书 ) ? ·Winplas中文使用说明书 ? ·RNA Structure 3中文使用说明书) ? ·Primer Premier中文使用说明) ? ·进化树分析及相关软件使用说明) ? ·观察生物分子的窗口——RasMol 2.6 ) ? ·RNAdraw1.1b2功能介绍) ? ·SEQUIN3使用中文说明书 ? ·JELLYFISH 1.3 使用手册) ? ·Omiga使用中文说明书 ? ·Excel 提速12招 ? ·修复受伤的Excel文件 ? ·用好Word 2003的比较功能 ? ·抓图高手:SnagIt使用技巧3例 ? ·DNASTAR-MAPDRAW软件使用教程[图解] ? ·DNASTAR-EDITSEQ软件使用教程[图解] ? ·核酸序列分析软件DNAssist1.0教程[图解] ? ·BandScan使用教程[图解] ? ·蛋白序列分析软件包ANTHEPROT 4.3中文说明书

详细功能介绍及使用说明

关键使用说明在使用过程中的翻译机最下方的信息栏中都有简明说明,本文档将更详细的对每个功能及使用技巧做说明: 一、基本功能 1、设置文件——保存设置文件:保存当前所有设置到SFSave文件夹中,便于下次导入使用而不用重复操作 2、设置文件——导入设置文件:从SFSave文件夹中导入指定的设置文件从而沿用之前保存的设置 3、窗口——窗口置顶:可以控制窗口是否永久置顶 4、帮助:内有简明使用步骤,BUG反馈途径等帮助信息 5、推广:雨滴网相关的网址 6、获取游戏窗口句柄:划定识别区之前以及导入设置文件之后的必须步骤,在不更换游戏程序的前提下不用重复捕获。点击按钮后会有特殊蓝色半透明阴影出现(以下简称迷雾)。迷雾会随着鼠标的位置识别有句柄的窗口并将其覆盖(常见于WIN7或以上系统)或交替闪烁(常见于XP系统)。鼠标移动到游戏窗口后迷雾自动将其覆盖,左键单击迷雾即可捕获覆盖的窗口,右键单击放弃捕获。捕获完毕后会弹出确认窗口,若正确捕获,窗口内能看到缩小的游戏画面。 7、划定识别区:在游戏画面上直接划定一个矩形区域,本软件会对该区域进行OCR(光学字符识别)从而提取文字。点击按钮后覆盖游戏窗口的迷雾又会出现,直接在迷雾上框出要识别的区域即可,操作方式与普通截图软件类似(即左键单击想划定的区域的起点,鼠标移到终点再左键单击一次即可)。右键可重画已经指定起点但还未指定终点的识别区,若起点也未指定,则会退出划区模式而放弃划区。在之前划定过识别区的前提下,显示的绿框是之前已经划定的识别区,红框是正要划定/修改的识别区。 8、修改识别区:点击并成功“划定识别区”后该按钮会变为“修改识别区”。功能与“划定识别区”相同,直接无视之前的识别区在迷雾上划定新识别区即可。右键单击放弃修改。 9、激活:获取游戏窗口句柄并划定识别区后,或者,导入设置文件并获取游戏窗口句柄后;就具备了激活翻译循环的基本条件。点击按钮即可激活翻译循环。程序将自动开始循环翻译。 10、暂停:点击“激活”按钮后,该按钮将变为“暂停”。点击按钮后将停止翻译循环。 11、添加翻译栏:可以新增一行翻译栏,多个翻译栏使用的是同一游戏句柄,故新增翻译栏不必重新获取游戏句柄。但不同的翻译栏有各自的设置,互不影响,需要单独进行设定。 12、删除翻译栏:删除最下方的翻译栏。为防止手滑删除,删除后大部分设置仍会保留。 13、修改标签:“激活”按钮上方的标签可以修改,便于用户记忆翻译栏对应翻译的是什么东东。 二、扩展功能【注意】:以下设置只有点确定后才生效,点取消放弃所做的任何更改。 1、自动化设置:点击后弹出对应设置窗口,能切换手动模式和自动模式(默认)。自动模式下能设定翻译时间间隔(默认2秒)以减少CPU开销。时间间隔可以输入0~99的整数。CPU性能在酷睿I3或以上的可以尝试设置为0秒以获得最佳性能。手动模式下每次翻译完毕后会自动停止翻译,需要手动激活才进行一次识别、翻译。 2、真人语音设置:点击后弹出对应设置窗口,能进行真人语音朗读的相关设置,包括:是否开启、音量、是否等待朗读完毕再开始下一轮翻译。 提示:点击“激活”按钮下方的小喇叭可以直接开启/关闭语音朗读。

NRF24L01无线模块C语言程序

NRF24L01无线模块C语言程序 24MHz晶振 #include #include #include #include #include #include #define U8 unsigned char #define U16 unsigned int #define TX_ADDR_WITDH 5 //发送地址宽度设置为5个字节 #define RX_ADDR_WITDH 5 //接收地址宽度设置为5个字节 #define TX_DATA_WITDH 1//发送数据宽度1个字节 #define RX_DATA_WITDH 1//接收数据宽度1个字节 #define R_REGISTER 0x00//读取配置寄存器 #define W_REGISTER 0x20//写配置寄存器 #define R_RX_PAYLOAD 0x61//读取RX有效数据 #define W_TX_PAYLOAD 0xa0//写TX有效数据 #define FLUSH_TX 0xe1//清除TXFIFO寄存器 #define FLUSH_RX 0xe2//清除RXFIFO寄存器 #define REUSE_TX_PL 0xe3//重新使用上一包有效数据 #define NOP 0xff//空操作 #define CONFIG 0x00//配置寄存器 #define EN_AA 0x01//使能自动应答 #define EN_RXADDR 0x02//接收通道使能0-5个通道 #define SETUP_AW 0x03//设置数据通道地址宽度3-5 #define SETUP_RETR 0x04//建立自动重发 #define RF_CH 0x05//射频通道设置 #define RF_SETUP 0x06//射频寄存器 #define STATUS 0x07//状态寄存器 #define OBSERVE_TX 0x08//发送检测寄存器 #define CD 0x09//载波 #define RX_ADDR_P0 0x0a//数据通道0接收地址 #define RX_ADDR_P1 0x0b//数据通道1接收地址 #define RX_ADDR_P2 0x0c//数据通道2接收地址 #define RX_ADDR_P3 0x0d//数据通道3接收地址 #define RX_ADDR_P4 0x0e//数据通道4接收地址 #define RX_ADDR_P5 0x0f//数据通道5接收地址

Gblocks使用说明书-by florawz1

Gblocks使用说明书(by florawz) 1.首先打开软件,进入主页面 2.输入O ,然后回车,对话框显示输入一个文件或路径 此时将比对好的(.fas)文件拖入对话框。对话框即出现该文件的路径(如图) 按回车,即导入该序列。对话框上部出现下列信息 3.快速比对:输入G,然后回车。在原比对文件所在文件夹内即可出现Gblocks 已经处理好的文件

.fas-gb文件可用Bioedit和DNAMAN打开。 打开.htm文件,可查看可视化的处理结果(如图) 4.主菜单: t. 指定的序列类型(可以是蛋白质,DNA或者密码子)。 输入一个t,回车。序列类型改为Condons 再输入一个t,回车。序列类型改为DNA(如此循环修改)

o. 打开一个文件。必须为 NBRF/PIR 或 FASTA 格式 ,序列长度不限。打开 NBRF/PIR-格式的序列时,在序列备注第一行要注明序列类型 如: >P1;byflorawz ------MEYLLQEYLPILVFLGMASALAIVLILAAAVIAVRN--PDPEKVSAYECGFNAF D-DARMKFDVRFYLVSILFIIFDLEVAFLFPWAVSFASLS-DVAFWGLMVFLAVLTVGFA YEWKKGALEWA----------------------* (fas格式则不需要,第一行直接为>byflorawz即可) 注意:在使用Glocks分析前,序列缺口必须先消除。 在将比对文件拖进改软件时,要去路径掉末尾的空格。 打开多个文件 :必须建立一个path文件。输入各个相关文件的路径,在安装好的文件包内可以看到一个"paths"范例,用word打开此文件,即可看到各个文件的所在路径(如图) 多条比对序列的处理:如果所有的比对文件的路径都在一个paths文件,且各个比对文件的序列条数,以及物种的顺序都是相同的,那么这些比对文件在最后的结果中可以连接起来。如果各个比对文件的序列条数不同,那么也可以一起处理,但是最后不能连接。 b. 显示 Block 限制性参数 (详情见下页). s. 显示保存菜单(详情见下页). g. 处理计算 q. 退出 5.限定性参数菜单

NRF24L01无线发射简易教程

NRF24L01 简易教程

先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下: 首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。 我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。我们所写的教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。 作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。 具体的要求如下: 1、具备发送和接收的能力。 2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形 式。 3、把接收到的数据传送到PC 进行查看。 4、发送端每隔大约1.5 秒发送一次数据,永久循环。以上是程序的要求,若您想自行 设计出硬件接口,您也是可以添加一条呢:使用DIY 方 式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。 我们使用的方式是画PCB 的方式呢,若您自己做了接口板子,那么您可以对比下一呢,O(∩_∩)O! 我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。 为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V 转3.3V 电路、NRF24L01 模块接口。并且全部引出单片机的IO 口,另外还加了5 个电源输出接口,为扩展使用。还包括了电源指示LED 以及一个IO 口独立控制的LED,这个独立控制的LED用于NRF24L01 接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。

系统功能操作说明手册

系统功能操作说明手册日期:2020年07月01日

目录 一、操作功能说明 (3) 二、采购意向公告发布操作说明 (3)

一、操作功能说明 为便于供应商及时了解政府采购信息,根据《河南省财政厅关于开展政府采购意向公开工作的通知》(豫财购〔2020〕8号)等有关规定,现增加【采购意向公告】功能,将采购单位政府采购意向进行公开。 本操作手册主要涉及功能:采购意向公告 二、采购意向公告发布操作说明 采购人登录【河南省电子化政府采购系统】点击【信息发布】菜单下的【采购意向公告】,操作如下图所示。 点击右上角的【起草公告】,在【编辑政府采购意向公告】页面进行政府采购意向公告的信息填写。

政府采购意向公告填写说明: 公告名称:单位名称+意向公告的开始年月至结束月+政府采购意向。 意向公告的开始年月至结束月填写说明:“年”可以手工输入四位数的阿拉伯数字年份,也可以点击“年”份输入框进行年份选择,操作如下图所示: “月”也可以手工输入阿拉伯数字1-12,也可点击“月”输入框进行月份的选择方法同上。 公告内容:

序号:手工输入采购内容排序的整数位数字。 采购项目名称:填写具体采购项目的名称。 预算金额:手工可输入整数位8位,小数位6位的金额,单位:万元。 预计采购时间:可以手工输入1-12月阿拉伯数字,也可点击“月”输入框进行月份的选择,注意:月份填写或输入必须在公告意向开始月份和结束月份内。 如填写的采购采购内容需要增加或删除可以点击后面的“增加”或“删除”图标进行操作,操作如下图所示: 公告信息填写完成后点击右上角的“保存”按钮,进行信息保存。操作如下图所示:

nrf24l01(2.4G模块)

NRF24L01(2.4G模块) 一、模块简介 (1)2.4GHz全球开放ISM频段免许可证使用。 (2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强。 (3)126频道,满足多点通信和跳频通信需要。 (4)内置硬件CRC检错,和点对点通信地址控制。 (5)低功耗,1.9-3.6V工作,待机模式下22uA;掉电模式900nA。 (6)内置2.4GHz天线,体积小巧:15mm×29mm。 (7)模块可软件设置地址,只有收到本机地址时才会输出数据(提供中断提示),可直接接各种单片机使用,软件编程非常方便。 (8)内稳压电路,使用各种电源包括DC/DC开关电源均有很好的通道效果。 (9)2.54mm间距接口,DIP封闭。 (10)工作于Enhanced ShockBurst具有Automatic packet handling,Auto packet transaction handling,具有可选的内置包应答机制,极大地降低丢包率。 (11)与51单片机P0口连接的时候,需要加10K的上拉电阻,与其余口连接不需要。(12)其他系列的单片机,如果是5V的,请参考该系列单片机IO口输出电流大小,如果超过10mA,需要串联电阻分压,否则容易烧毁模块!如果是3.3V的,可以直接和RF24L01模块的IO口线连接。比如AVR系列单片机。如果是5V的一般串接2K的电阻。 二、接口电路 说明: 1)VCC脚接电压范围为:1.9V-3.6V,不能在这个敬意之外,超过3.6V将会烧毁模块。推荐电压3.3左右。 2)除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需转换。当然对3V左右的单片机更加适用了。 3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI,不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以。 4)如果需要其他封装接口,比如密脚插针,或者其他形式的接口,可联系我们定做。 三、引脚说明

nRF24L01温度发送与接收程序

/******************************************************* ** 温度无线发送程序 ** 时间:2012.2.3 ** ——by Keliwen *******************************************************/ #include #include #include #include typedef unsigned char uchar; typedef unsigned int uint; /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度 uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定义一个静态发送地址 uchar RX_BUF[TX_PLOAD_WIDTH]; uchar TX_BUF[TX_PLOAD_WIDTH]; sbit CSN = P1^0; // Chip Enable pin signal (output) sbit MOSI= P1^1; // Slave Select pin, (output to CSN, nRF24L01) sbit IRQ = P1^2; // Interrupt signal, from nRF24L01 (input) sbit MISO= P1^3; // Master In, Slave Out pin (input) sbit SCLK= P1^4; // Serial Clock pin, (output) sbit CE = P1^5; // Master Out, Slave In pin (output) // SPI(nRF24L01) commands #define READ_REG 0x00 // Define read command to register #define WRITE_REG 0x20 // Define write command to register #define RD_RX_PLOAD 0x61 // Define RX payload register address #define WR_TX_PLOAD 0xA0 // Define TX payload register address #define FLUSH_TX 0xE1 // Define flush TX register command #define FLUSH_RX 0xE2 // Define flush RX register command #define REUSE_TX_PL 0xE3 // Define reuse TX payload register command #define NOP 0xFF // Define No Operation, might be used to read status register // SPI(nRF24L01) registers(addresses) #define CONFIG 0x00 // 'Config' register address #define EN_AA 0x01 // 'Enable Auto Acknowledgment' register address #define EN_RXADDR 0x02 // 'Enabled RX addresses' register address

NRF24L01详细教程..

先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下: 首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。 我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。我们所写教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。 作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。 具体的要求如下: 1、具备发送和接收的能力。 2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形 式。 3、把接收到的数据传送到PC 进行查看。 4、发送端每隔大约1.5 秒发送一次数据,永久循环。 以上是程序的要求,若您想自行设计出硬件接口,您也是可以添加一条呢:使用DIY 方式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。 我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。 为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V 转3.3V 电路、NRF24L01 模块接口。并且全部引出单片机的IO 口,另外还加了5 个电源输出接口,为扩展使用。还包括了电源指示LED 以及一个IO 口独立控制的LED,这个独立控制的LED用于NRF24L01 接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。

开发功能文档规范

1 系统环境 1.1开发平台介绍 IDE及版本介绍 1.2系统环境介绍 操作系统、版本、配置 1.3运行环境介绍 web容器、配置 1.4数据库介绍 名称、版本、工具介绍、配置 1.5插件介绍 名称、版本、环境要求、来源、使用介绍若有使用原版介绍作为文档附件 1.6 版本控制 版本控制方式、项目名称、服务器地址、使用说明 2 关键技术 说明系统采用的技术关键、技术升级方向、存在的技术风险、对技术方案的总体评价等等。 3 总体设计 3.1 体系结构 说明系统采用的体系架构(尽量用图示来辅助描述)。 3.2 主要功能 说明本系统实现的主要功能。

3.3 模块接口 各模块间接口所用到的数据接口(为其他的人提供的接口和需要使用的别人的接口) 3.3.1 提供的接口描述 3.3.2 使用接口描述 3.4 处理流程 说明本系统的主要处理流程(尽量用图示来辅助描述)。 4 数据结构设计 4.1 数据词典设计 写出包名及各个类的类名,及数据库的命名规则。 如果是面向对象写类间关系,若非面向对象写数据库命设计等。 给出本系统内所使用的每个数据结构、数据项的名称及它们之间的层次关系。 4.2 数据库设计 给出数据库名称、数据库表的设计、各表之间的关系、索引的设计等。 5 模块设计 说明各模块的设计考虑。每个模块的具体描述包括以下内容: 5.1 模块描述 说明该模块的主要功能、特点、逻辑流程。可采用“输入——处理——输出”的形式描述(尽量用图示来辅助描述)。

5.2 主要算法 说明该模块选用的算法,包括计算公式、计算步骤等。 5.3 主要方法或函数的设计 包括实现功能、名称、返回值、参数说明、与其它方法或函数的调用关系等。 5.4 主要界面的设计 描述与该模块相关的主要界面的设计及之间的跳转关系,各模块间传递的参数 6业务流程设计 包含完整的流程图 7 开发计划说明

相关主题
文本预览
相关文档 最新文档