文档库 最新最全的文档下载
当前位置:文档库 › nRF24L01无线通信模块使用手册

nRF24L01无线通信模块使用手册

nRF24L01无线通信模块使用手册
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。

二、模块电气特性

三、模块引脚说明

四、模块与AT89S52单片机接口电路

注:上图为示意连接,可根据自己实际需求进行更改;使用AT89S52MCU模块时,请将Nrf24L01通讯模块每个端口(MOSI、SCK、CSN和CE)接4.7K的排阻上拉到VCC增强其驱动能力(如下图:)。若使用其它单片机与Nrf24L01通讯模块相连时请串联2K电阻。

五、工作模式控制

模式PWR_UP PRIM_RX CE FIFO寄存器状态

接收模式 1 1 1 -

发射模式 1 0 11 数据存储在FIFO寄存器中,

发射所有数据发射模式 1 0 0→12 数据存储在FIFO寄存器中,

发射一个数据待机模式II 1 0 1 TX FIFO为空

待机模式I 1 - 0 无正在传输的数据

掉电模式0 - - -

注1:进入此模式后,只要CSN置高,在FIFO中的数据就会立即发射出去,直到所有数据数据发射完毕,之后进入待机模式II。

注2:正常的发射模式,CE端的高电平应至少保持10us。24L01将发射一个数据包,之后进入待机模式I。

六、数据和控制接口

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

①IRQ(低电平有效,中断输出)

②CE(高电平有效,发射或接收模式控制)

③CSN(SPI信号)

④SCK(SPI信号)

⑤MOSI(SPI信号)

⑥MISO(SPI信号)

通过SPI接口,可激活在数据寄存器FIFO中的数据;或者通过SPI命令(1个字节长度)访问寄存器。

在待机或掉电模式下,单片机通过SPI接口配置模块;在发射或接收模式下,单片机通过SPI接口接收或发射数据。

1.SPI指令

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

SPI命令字节表

指令名称指令格式

(二进制)

字节数操作说明

R_REGISTER 000A AAAA 1~5 读寄存器。AAAAA表示寄存器地址。

W_REGISTER 001A AAAA 1~5 写寄存器。AAAAA表示寄存器地址,只

能在掉电或待机模式下操作。

R_RX_PAYLOAD 0110 0001 1~32 在接收模式下读1~32字节RX有效断气。

从字节0开始,数据读完后,FIFO寄存器

清空。

W_TX_PAYLOA

D 1010 0000 1~32 在发射模式下写1~31字节TX有效数据。

从字节0开始。

FLUSH_TX 1110 0001 0 在发射模式下,清空TX FIFO寄存器。

FLUSH_RX 1110 0010 0 在接收模式下,清空RX FIFO寄存器。在

传输应答信号时不应执行此操作,否则不

能传输完整的应答信号。

REUSE_TX_PL 1110 0011 0 应用于发射端。重新使用上一次发射的有

效数据,当CE=1时,数据将不断重新发

射。在发射数据包过程中,应禁止数据包

重用功能。

NOP 1111 1111 0 空操作。可用于读状态寄存器。

SPI读写时序见下面两图。在写寄存器之前,一定要进入待机模式或掉电模式。其中,Cn——SPI指令位;Sn——状态寄存器位;Dn——数据位(低字节在前,高字节在后;每个字节中高位在前)

SPI读时序

SPI写时序

七、寄存器内容及说明

地址

(十六进制)

寄存器位复位值类型说明

00 CONFIG 配置寄存器

Reserved 7 0 R/W 默认为0

MASK_RX_DR 6 0 R/W 可屏蔽中断RX_RD

1:中断产生时对IRQ没影响0:RX_RD中断产生时,IRQ 引脚为低

MASK_TX_DS 5 0 R/W 可屏蔽中断TX_RD

1:中断产生时对IRQ没影响0:TX_RD中断产生时,IRQ 引脚为低

MASK_MAX_

RT 4 0 R/W

可屏蔽中断MAX_RT

1:中断产生时对IRQ没影响

0:MAX_RT中断产生时,IRQ

引脚为低

EN_CRC 3 1 R/W CRC使能。如果EN_AA中任意一位为高,则EN_CRC为高。

CRCO 2 0 R/W CRC校验值:0:1字节

1:2字节

PWR_UP 1 0 R/W 0:掉电1:上电PRIM_RX 0 0 R/W 0:发射模式1:接收模式

01

EN_AA

Enhanced

ShockBurst?

使能“自动应答”功能Reserved 7:6 00 R/W 默认为00

ENAA_P5 5 1 R/W 数据通道5自动应答使能位ENAA_P4 4 1 R/W 数据通道4自动应答使能位ENAA_P3 3 1 R/W 数据通道3自动应答使能位ENAA_P2 2 1 R/W 数据通道2自动应答使能位ENAA_P1 1 1 R/W 数据通道1自动应答使能位ENAA_P0 0 1 R/W 数据通道0自动应答使能位

八、模块编程控制

1.ShockBurst TM发射模式

①设置PRIM_RX为低。

②通过SPI接口,将接收节点地址(TX_ADDR)和有效数据(TX_PLD)写入模块,写TX_PLD时,CSN必须一直置低。

③置CE为高,启动发射。CE高电平持续时间至少为10us。

④ShockBurst TM发射模式:

系统上电

启动内部16MHz时钟

数据打包

数据发射

⑤若启动了自动应答模式(ENAA_P0=1),则模块立即进入接收模式(NO_ACK已设置)。如果接收到应答信号,则表示发射成功,TX_DS置高且TX FIFO中的有效数据被移出;如果没有接收到应答信号,则自动重发(自动重发已设置);如果自动重发次数超过最大值(ARC),MAX_RT置高,在TX FIFO中的数据不被移出。当MAX_RT和TX_DS置高时,IRQ激活。只有重新写状态寄存器(STA TUS)才能关闭IRQ。如果重发次数达到最大后,仍没有接收到应答信号,在MAX_RT中断清除之前,不会再发射数据。PLOS_CNT 计数器会增加,每当有一个MAX_RT中断产生。

⑥如果CE置低,则系统进行待机模式I,否则发送TX FIFO寄存器中的下一个数据包。当TX FIFO中的数据发射完,CE仍为高时,系统进入待机模式II。

⑦在待机模式II下,CE置低,则进入待机模式I。

2.ShockBurst TM接收模式

①设置PRIM_RX为高,配置接收数据通道(EN_RXADDR)、自动应答寄存器(EN_AA)和有效数据宽度寄存器(RX_PW_PX)。

②置CE为高,启动接收模式。

③130us后,模块检测空中信号,

④接收到有效的数据包后(地址匹配、CRC检验正确),数据储存在RX FIFO中,RX_DR 置高。

⑤如果启动了自动应答功能,则发送应答信号。

⑥MCU置CE为低,进入先机模式I。

⑦MCU可通过SPI接口将数据读出

⑧模块准备好进入发射模式或接收模式或待机模式。

九、RF通道频率

RF通道频率指的是nRF24L01所使用的中心频率,该频率范围从 2.400GHz到2.525GHz,以1MHz区分一个频点,故有125个频点可使用。

由参数RF_CH确定,公式为:F0 = 2400 + RF_CH(MHz)

十、示例程序

接收模块与发射模块大部分程序代码相同,如下:

1.SPI命令和寄存器配置头文件API.h(根据第六、七两点编写)

#ifndef _BYTE_DEF_

#define _BYTE_DEF_

typedef unsigned char BYTE;

#endif

// SPI命令

#define READ_REG 0x00 //读第0个寄存器

#define WRITE_REG 0x20 //写第0个寄存器

#define RD_RX_PLOAD 0x61 //在接收模式下使用,读有效数据

#define WR_TX_PLOAD 0xA0 //在发送模式下使用,写有效数据

#define FLUSH_TX 0xE1 //在发送模式下使用,清TX FIFO寄存器

#define FLUSH_RX 0xE2 //在接收模式下使用,清RX FIFO寄存器

#define REUSE_TX_PL 0xE3 //发送方使用,重复发送最后的数据

#define NOP 0xFF //空操作,用于读状态寄存器STATUS的值

// nRF24L01寄存器地址

#define CONFIG 0x00 //配置寄存器,8bit

#define EN_AA 0x01 //自动应答设置寄存器,8bit

#define EN_RXADDR 0x02 //接收地址设置寄存器,8bit

#define SETUP_AW 0x03 //地址宽度设置寄存器,8bit

#define SETUP_RETR 0x04 //自动重复发送设置寄存器,8bit

#define RF_CH 0x05 //RF通道寄存器,8bit

#define RF_SETUP 0x06 //RF设置寄存器,8bit

#define STATUS 0x07 //状态寄存器,8bit

#define OBSERVE_TX 0x08 //发送观测寄存器,8bit

#define CD 0x09 //载波检测寄存器,8bit,

#define RX_ADDR_P0 0x0A //接收地址数据通道0,40bit

#define RX_ADDR_P1 0x0B

#define RX_ADDR_P2 0x0C

#define RX_ADDR_P3 0x0D

#define RX_ADDR_P4 0x0E

#define RX_ADDR_P5 0x0F

#define TX_ADDR 0x10 //发送地址.发送方使用,40bit

#define RX_PW_P0 0x11 //通道0接收的有效数据字节长度(1-32字节),8bit

#define RX_PW_P1 0x12

#define RX_PW_P2 0x13

#define RX_PW_P3 0x14

#define RX_PW_P4 0x15

#define RX_PW_P5 0x16

#define FIFO_STATUS 0x17 //FIFO状态寄存器,8bit

2.SPI操作头文件(与单片机的接口设置在此头文件中)

#define uchar unsigned char

#define TX_ADR_WIDTH 5 //地址长度为5个字节

#define TX_PLOAD_WIDTH 20 //数据长度为20个字节

uchar const TX_ADDRESS[TX_ADR_WIDTH] = {0xE7,0xE7,0xE7,0xE7,0xE7};

char rx_buf[TX_PLOAD_WIDTH]; //接收缓冲区

uchar flag; //标志位

int test[12];

#define CE P0_0 //芯片使能:Chip Enable

#define CSN P0_1 //片选信号:Chip Select Not

#define SCK P1_2 //串行时钟信号:Serial Clock

#define MOSI P0_3 //主发从收:Master In Slave Out

#define MISO P0_4 //主收从发:Master Out Slave In

#define IRQ P3_2 //中断查询:Interrupt Request

uchar bdata sta;

sbit RX_DR = sta^6;

sbit TX_DS = sta^5;

sbit MAX_RT = sta^4;

uchar SPI_RW(uchar byte)//写一个字节到nRF24L01,并返回此时nRF24L01的状态及数据

{

uchar bit_ctr;

for(bit_ctr=0;bit_ctr<8;bit_ctr++) //先写字节的高位,再写低位

{

MOSI = (byte & 0x80); //MOSI取byte最高位

byte = (byte << 1); //byte左移一位

SCK = 1; //SCK从高到低时开始写入

byte |= MISO;

//获取MISO位.从MOSI写命令的同时,MISO返回nRF24L01的状态及数据

SCK = 0;

}

return(byte);

}

uchar SPI_RW_Reg(BYTE reg, BYTE value)//将字节value写入寄存器reg

{

uchar status;

CSN = 0; //CSN为0时,才能进行SPI读写

status = SPI_RW(reg); //选择寄存器reg

SPI_RW(value); //写字节value到该寄存器

CSN = 1; //终止SPI读写

return(status);

}

BYTE SPI_Read(BYTE reg)//读寄存器reg状态字

{

BYTE reg_val;

CSN = 0; //CSN为0时,才能进行SPI读写

SPI_RW(reg); //选择寄存器reg

reg_val = SPI_RW(0); //写0,什么操作也不进行,仅仅为了读寄存器状态

CSN = 1; //终止SPI读写

return(reg_val);

}

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

//从寄存器reg读出数据,典型应用是读RX数据或RX/TXF地址

{

uchar status,byte_ctr;

CSN = 0; //CSN为0时,才能进行SPI读写

status = SPI_RW(reg); //选择寄存器reg并返回其状态字

for(byte_ctr=0;byte_ctr

pBuf[byte_ctr] = SPI_RW(0); //从寄存器读数据

CSN = 1; //终止SPI读写

return(status); //返回状态值

}

uchar SPI_Write_Buf(BYTE reg, BYTE *pBuf, BYTE bytes)//将数据写入寄存器,如TX数据,RX/TX地址等.

{

uchar status,byte_ctr;

CSN = 0; //CSN为0时,才能进行SPI读写

status = SPI_RW(reg); //选择寄存器reg并返回其状态字

for(byte_ctr=0; byte_ctr

SPI_RW(*pBuf++); //写数据到寄存器

CSN = 1; //终止SPI读写

return(status); //返回状态值

}

//接收模式初始化:设置RX地址,RX数据宽度,RF通道,速率,低噪声放大器增益

//设置完之后,将CE置高,准备好接收数据

void RX_Mode(void)

{

SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);

// 写TX_Address 到nRF24L01 SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 自动重发延时:500us + 86us;重发次数:10次SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);

//将地址TX_ADDRESS写入寄存器0的数据通道0 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); //ENAA_P0=1,数据通道0自动应答

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); //ERX_P0=1,使能

SPI_RW_Reg(WRITE_REG + RF_CH, 40); //40个通信频段

SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);

//数据通道0的RX数据长度为TX_PLOAD_WIDTH,要与发送的一致

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0F);

//速率为2Mbps,发送功率为0dBm,低噪声放大器增益为1

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);

//PRIM_RX=1,接收方;PWR_UP=1;CRC检验字为2字节;

}

//发送模式初始化:设置发送地址,设置发送的数据,设置接收方地址,RF通道,速率等,与接收类似

void TX_Mode(void)

{

SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);

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);

SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);

SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a);

SPI_RW_Reg(WRITE_REG + RF_CH, 40);

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0f);

}

void show_status(void) //显示状态寄存器的值

{

test[0] = SPI_Read(EN_AA); //0x01

test[1] = SPI_Read(EN_RXADDR); //0x01

test[2] = SPI_Read(SETUP_AW); //0x03,5个字节

test[3] = SPI_Read(SETUP_RETR); //0x1a

test[4] = SPI_Read(RF_CH); //0x28

test[5] = SPI_Read(RF_SETUP); //0x0f

test[6] = SPI_Read(RX_ADDR_P2);

test[7] = SPI_Read(RX_ADDR_P3);

test[8] = SPI_Read(RX_ADDR_P4);

test[9] = SPI_Read(RX_ADDR_P5);

test[10] = SPI_Read(RX_PW_P0); //0x14

test[11] = SPI_Read(STA TUS);

}

void init_io(void)

{

CE = 0; //待机

CSN = 1; //SPI禁止读写

SCK = 0;

}

void Inituart(void)//设置串口工作模式

{

TMOD |= 0x20; //定时器1工作在方式2,8位自动重装模式TL1 = 0xfd; //波特率为9600

TH1 = 0xfd;

SCON = 0x50; //模式1,8位数据

TR1 = 1; //启动定时器1

TI=1;

}

void init_int0(void)//外部中断设置

{

EA=1; //允许全局中断

ES=1; //开串行口中断

EX0=1; //允许外部中断0

}

void delay_ms(unsigned int x) //毫秒级延时

{

unsigned int i,j;

i=0;

for(i=0;i

{

j=108;

while(j--);

}

}

3.发送模块主函数(向接收模块发射数据“abcdefg”,中断方式)

void main(void)

{

int i;

init_io(); //IO端口设置

Inituart(); //串口设置

init_int0(); //外部中断0设置

for(i=0;i<7;i++) //待发的数据tx_buf,发送的数据为”abcdefg”七个字母tx_buf[i] = 'a'+i;

while(1)

{

CE = 0; //Standby-1模式

TX_Mode(); //发送设置

CE = 1; //启动发送模式

delay_ms(20);

CE = 0; //Standby-1模式

delay_ms(1000);

}

}

//中断函数

//如果RX_DR=1,则读取数据,之后清除标志位;

//如果TX_DS或MAX_RT为1,则仅清除中断标志位

void ISR_int0(void) interrupt 0

{

sta=SPI_Read(STATUS); //读状态寄存器STATUS

if(RX_DR) //如接收到数据,则中断

{

SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//读取接收的数据

flag=1; //标志位置高

}

if(MAX_RT) //重发中断达到最大数

SPI_RW_Reg(FLUSH_TX,0); //清除TX FIFO寄存器

SPI_RW_Reg(WRITE_REG+STATUS,sta); //清除RX_DR,TX_DS和MAX_RT中断标志位

}

4.接收模块主函数(接收并在串口输出,同时输出状态寄存器的值,使用查询方式)

void main(void)

{

int i;

init_io(); //IO端口设置

Inituart(); //串口设置

init_int0(); //外部中断0设置

CE=0; //Standby-1模式

RX_Mode(); //设置接收模式

CE = 1; //准备接收数据

while(1)

{

sta=SPI_Read(STATUS);

if(RX_DR) //接收到数据

{

SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//读取接收的数据

for(i=0;i<7;i++)

printf("%c ",rx_buf[i]); //通过串口发送接收到的数据

printf("\n");

show_status(); //输出状态寄存器的值,可不用此操作

for(i=0;i<12;i++)

printf("%x ",test[i]);

printf("\n");

delay_ms(10);

}

if(MAX_RT) //重发中断达到最大数

SPI_RW_Reg(FLUSH_TX,0); //清除TX FIFO寄存器

SPI_RW_Reg(WRITE_REG+STATUS,sta); //清除RX_DR,TX_DS和MAX_RT中断标志位

}

}

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(); //清屏

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电源

生物软件使用说明书大全

生物软件使用说明书大全 生物软件使用说明书大全 转自: 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中文说明书

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模块收发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接收数据地址

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(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参考程序(包含多个实例)

(相关人员如觉得本人水平低下,还请见谅) Nrf24L01的使用程序和使用方法和简单操作: 功能: 无线对发程序。两个模块a,b,实现按下一个按键,会在对方的数码管上显示3或4,在本机上显示1,2。 当一个模块,比如a模块。当两个按键按下其中一个,则会在另一个模块b上显示数字3,4(具体根据按下哪个按键)。以上功能描述,B模块按键按下,如同a模块一样的功能,不做系统性描述了。 下面给出程序中几个地方的解释: #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 // 保留 类似这种的描述,可以等同于READ_REG =0x00;这个是经过实际程序测试出来的,比如 以下程序: #include #define k 0xfe void main() { P1=k; } 则会出现此类结果:

MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); // shift next bit into MSB.. SCK = 1; // Set SCK high.. uchar |= MISO; // capture current MISO bit SCK = 0; 此处为spi的核心,是spi协议的编程,其中uchar |= MISO; 表示uchar |= MISO | uchar; MOSI = (uchar & 0x80);其中0x80是1000 0000,与上uchar,这种&,是按位与,故可以从uchar提取出一个电平给mosi。 MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); 这两句组合起来用,就实现了把uchar编程8位2进制数后的每一位都可以发送给mosi;Uchar的只待对象,就是上面的诸如#define FLUSH_TX 0xE1 这样的数,或者是相关的发送数据。 *pBuf这个并不是一个主要的问题,实际这个是涉及指针问题的,带*的跟地址有关系,但是我们其实不需要很关心编译的时候数据被具体存入哪个地址,即使是很重要的数据。 void init_NRF24L01(void) { inerDelay_us(100); CE=0; // chip enable CSN=1; // Spi disable SCK=0; // SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG + RF_CH, 0); // 设置信道工作为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB } 在整个初始化中我们看到: CE=0; // chip enable CSN=1; // Spi disable 这是设置整个的状态。如过状态设置成待机,则引脚可能变为高阻。(以上并非全部引脚)

nrf24l01无线模块

基于nRF24L01的无线温度采集系统设计 1引言 温度采集系统所采集的温度通常通过RS485、CAN总线通信方式传输至上位机,但这种方式维护较困难,不利于工业现场生产;而无线通信GPRS技术传输距离长,通信可靠稳定,但设计复杂、成本昂贵。这里采用工业级内置硬件链路层协议的低成本单芯片nRF24L01型无线收发器件实现系统间的无线 通信,完成无线信号的接收、显示及报警功能。 2nRF24L01简介 nRF24L01是一款工业级内置硬件链路层协议的低成本无线收发器。该器件工作于2.4GHz全球开放ISM频段,内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合增强型ShockBu rst技术,其输出功率和通信频道可通过程序配置。拥有ShockBurst和Enhanced ShockBurst两种数据传输模式。可直接与单片机I/O连接,外接元件数目少。nRF24L01功耗低,以-6dBm的功率发射时,工作电流仅9mA;接收时,工作电流仅12.3mA,多种低功率工作模式(掉电和空闲模式)更利于节能 设计。 3系统硬件设计 系统硬件设计主要由采集发送和接收显示两部分组成。图1为采集发送电路原理图,该电路主要由温度传感器DS18B20、单片机STC12LE5408和nRF24L01组成。 STC12LE5408是增强型8051单片机,速度快,集成度高,电压范围宽(2.2~3.8V),和MCS-5 1系列单片机指令系统完全兼容。其内部还有8KB Flash程序存储器,512字节RAM、2KB EEPRO M、4路PWM以及硬件看门狗(WDT)等资源.性价比高。 DSl8B20是DALLAS公司生产的单总线数字1-Wire温度传感器,可把温度信号直接转换成串行数字信号供单片机处理,采用1-Wire接口。DSl8B20的数据端DQ可通过4.7kΩ的上拉电阻接STC12LE5 408。nRF24L01的CE,CSN,SCK,MOSI,MISO,IRQ引脚则可接STC12LE5408的任意端口,但需在编程时注意,这里接至P1端口。由于nRF24L01具有接收数据功能,所以接收显示电路由单片机ST C12LE5408、nRF24L01和显示电路组成。所采集的数据也通过串口发送至PC机进行处理。

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 接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。

常见生物软件使用技巧汇集

常见生物软件使用技巧汇集 Q1.怎么查找序列保守区? A1:很多人查找序列保守区,一般通过序列多重比对后,肉眼判断序列保守区,但此法难免太主观,不具重复性,且选择的保守区无法受统计上的显著性检验。其实,实现这一目的,可以使用DnaSP--> “Analysis” -->“Conserved DNA regi on”...

Q2. 多个FASTA格式保存的单条序列如何批量快速合并为一个文件? A2 :一条条添加,费时费劲,且容易出错。解决的办法有两个:一是可以通过DNAMAN的“多重序列比对”后导出功能,即:添加序列所在的目录,或全选相关文件,进行多重比对,导出Clustal aln 文件,然后再转换为FASTA;二是使用我们2012年新开发的序列火枪手套件的“Seq Merger.exe” 即可快速实现合并。 Q3. 如何解决Clustalx 多重比对(*.Aln格式)后转为MEGA 格式时提示出错的问题? A3:检查所转换MEGA 的*.meg 文件最后几行内容是否有*号,全部删减之即可。因为Clustalx 多重比对后,程序会自动添加一致序列。

Q4. 为什么DNAMAN软件的很多功能菜单都显示无法使用? A4:DNAMAN软件的精华在于通道(Channel)的应用,遇到功能菜单呈灰度无法使用时,不妨将序列载入通道后再试试... Q5. 如何让多重比对美观显示又不占篇幅? A5:推荐使用Web Logo (https://www.wendangku.net/doc/6510743679.html,/logo.cgi)或Sequence L ogo之类的在线工具处理。其实这类工具还有一个妙用-可用于设计简并引物,简并序列一目了然,如下图的第7个碱其位点,G/A=R。 Q6. 如何在多重比对序列的上方显示对应的蛋白质二级结构? A6:使用ESPript(http://espript.ibcp.fr/ESPript/cgi-bin/ESPript.cgi)对多重比对序列着色的同时,上传预测的蛋白质结构文件*.pdb 即可,效果如下图所示,详见《马铃薯Y病毒pipo基因的分子变异及结构特征分析》一文。具体操作方法可以参考《ESpript 美化多重比对序列图解(By Raindy) 》。

NRF24L01无线模块

XL24L01P‐D01模块手册

尊敬的客户: 您好,感谢您选用本公司的无线模块,为了更快更好的使用此产品,请您仔细阅读本使用说明。无线传输距离受空间环境,输出速率,天线等因素影响,本公司标注的距离为基于本公司的测试硬件的开阔地测试距离,仅供参考。深圳市汇睿微通科技开发有限公司为专业无线模块制造厂商,具有多年的无线模块开发设计和制造生产能力,使用中有任何技术问题,请及时联系本公司的技术支持! 一:模块简介 XL24L01P‐D01是采用挪威NORDIC公司的nrf24L01p 2.4G无线收发IC设计的一款高性能2.4G无线收发模块,采用GFSK调制,工作在2400‐2483M的国际通用ISM频段,最高调制速率可达2MBPS。XL24L01P-D01集成了所有与RF协议相关的高速信号处理部分,如:自动重发丢失数据包和自动产生应答信号等,模块的SPI接口可以利用单片机的硬件SPI口连接或用单片机的I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口,便于使用低成本单片机。 模块大小32*15.2mm,2.54mm间距的双排插针接口,使用内置PCB天线设计,开阔地1MBPS速率下,收发10个字节的数据量测试距离最远约70米左右。 1.1 模块尺寸: 管脚次序 管脚定义 功能描述 1 GND 电源地(方形焊盘) 2 VIN 输入电源(3.0—3.3V) 3 CE 工作模式选择,RX或TX模式选择 4 CSN SPI使能,低有效 5 SCK SPI时钟 6 MOSI SPI输入 7 MISO SPI输出 8 IRQ 中断输出

二:模块功能 2.1 特性 z工作频率 2400‐2483M,共125个工作频道, 符合国际通用ISM法规, z FSK/GSK调制 z支持2M的高速数据传输,减少发射时间,降低平均功耗。 z当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了平均功耗收 z自动重发功能,自动检查和重发丢失的数据包,重发时间及重发次数可软件控制z自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程 z内置硬件CRC检错和点对多点通信地址控制 z数据包传输错误计数器及载波检测功能可用于跳频设置 z可同时设置六路接收通道地址,可选择性的打开接收通道 z自动存储未收到的应答信号的数据包 2.2 应用范围 无线遥控 机器人控制 家庭自动化 智能玩具 游戏无线控制器 无线传感器 无线语音

NRF24L01的C51单片机讲解

#include #include /*********************************************************************** ****************/ /* NRF24L01 的管脚定义,以及在本程序中的应用,VCC接3.3V电源,可以通过5V用电压转换芯片 /*得到,NC 管脚可以接可以不接,暂时没用途。本程序应用于51或者52单片机,是两个模块进行通讯 /*成功的简单指示,现象是:模块1的 KEY1 对应模块1的LED1 和模块2的LED3 ,模块1的 KEY2 对应模 /*块1的LED2 和模块2的LED4,发过来也对应。 /*********************************************************************** ****************/ typedef unsigned char uchar; typedef unsigned char uint; /************************************NRF24L01端口定义 ***********************************/ =P1^3; sbit MOSI =P1^2; sbit SCK =P1^1; sbit CSN =P1^0; sbit IRQ =P3^2; //数字输入(可屏蔽中断) /************************************按键 ***********************************************/ sbit KEY1=P2^7;//按键S1 sbit KEY2=P2^2;//按键S2 /************************************数码管位选 ******************************************/ sbit led1=P1^0; //LED0 sbit led2=P1^1; //LED1 sbit led3 =P1^2; //LED2 sbit led4 =P1^3; //LED3 sbit led5 =P1^4; //LED4 /*********************************************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}; //接收地址

相关文档
相关文档 最新文档