寄存器读地址 AAAAA //读地址时,直接输入寄存器地址就可以。
空操作 0xff //空操作,把要读的地址用spi写入后,需要写0xff,(写0xff的同时无线模块会输出该寄存器的设置)
写寄存器地址 1AAAAA //相当于二进制100000是十六进制的0x20,比如要写0x00寄存器的时候,要写0x00+0x20等于的值
寄存器 0x60 255位~0位 无线接收寄存器 (高字节先输出)
寄存器 0x61 255位~0位 无线接收寄存器 (低字节先输出)
寄存器 0xc2 写0xff 清空无线接收寄存器(直接写0xe2,0xff)
寄存器 0x80 255位~0位 无线发送寄存器(写入数据可以发送出去)(直接写0xa0,uchar数据,uchar数据 。。。32字节)
寄存器 0x90 255位~0位 无线发送寄存器(写入数据可以发送出去,但不使用应答)(直接写0xb0,uchar数据,uchar数据 。。。32字节)
寄存器 0xc1 写0xff 清空发送寄存器 (直接写0xe1,0xff)
寄存器 0xc3 数据重发(写地址0xe3)
寄存器 0x00 7不用
6接收完成中断使能(1关0开中断产生时IRQ脚底电平)
寄存器 0x01 5发送完成中断使能
4接收满中断
3校验使能
2校验位选择(0:8位1:9位)
1无线使能(1开,0关)
0无线工作方式(1接收模式0发送模式)
7不用
6不用
5数据通道5自动应答(1开0关)
4数据通道4自动应答(1开0关)
3数据通道3自动应答(1开0关)
2数据通道2自动应答(1开0关)
1数据通道1自动应答(1开0关)
寄存器 0数据通道0自动应答(1开0关)
7不用
6 不用
5 接收通道5允许(1开,0关)
4 接收通道4允许(1开,0关)
3 接收通道3允许(1开,0关)
2 接收通道2允许(1开,0关)
1 接收通道1允许(1开,0关)
0 接收通道0允许(1开,0关)
0x02
寄存器 0x03
7
6
5
4
3
2
10RX / TX地址字段宽度(00:无效01:3字节10:4字节11:5字节)
寄存器 0x04
7654自动重发延时 0000:250微秒 0001:500微秒。。。。1111:4000微秒
3210自动重发次数 0000:关 0001:1次 0002:2次 1111:15次
寄存器 0x05
频率最高2.45GHz
寄存器 0x06 用,位5位3 = 00:1Mbps 7不用
6543210 0000000频率最低。 1111111
7连续载波传输(1开,0关)
6
5速率250kbps(1开,0关) (和位3配合使 10:250kbps 11:不使用)
4(1开,0关)
3数据速率(0:1Mbps 1:2Mbps)(和位5配
01:2Mbps
合使用,位5位3 = 00:1Mbps 01:2Mbps 10:250kbps 11:不使用)
21(00:-18dbm 01:-12dbm 10:-6dbm 11:0dbm)
0(信号增益)(1开0关)
寄存器 0x07 无线状态寄存器(写1清除对应的中断)
7
6收到数据中断
5发送完成中断
4重发失败中断(超过设定的重发次数)
321 000通道0 001通道1 002通道2。。。。(可查看是哪个通道引起的中断)
0重复发送满标志
寄存器 0x08
7654:数据丢包计数器
寄存器
3210:重发数据 计数器
7654321:载波内容
0x09
0:载波检测
寄存器 0xa
40:39:38.。。。。。。2:1:0 (0 注: 位39到位0可以随意改 )
寄存器 0x0b
40:39:38.。。。。。。2:1:0 (通道1的地址,注:位39到位8的值被锁定0xC2C2C2C2 位7到位0可以随意改)
寄存器 0x0c
40:39:38.。。。。。。2:1:0 (通道2的地址,注:位39到位8的值被锁定0xC2C2C2C2 位7到位0可以随意改)
寄存器 0x0d
40:39:38.。。。。。。2:1:0 (通道3的地址,注:位39到位8的值被锁定0xC2C2C2C2 位7到位0可以随意改)
寄存器 0x0e 位39到位8的值被锁定0xC2C2C2C2 寄存器 0x0f
40:39:38.。。。。。。2:1:0 (通道4的地址,注: 位7到位0可以随意改)
40:39:38.。。。。。。2:1:0 (通道5的地址,注:位39到位8的值被锁定0xC2C2C2C2 位7到位0可以随意改)
寄存器 0x10 位39到位0可以随意改)
寄存器 0x11 是只接收32字节)
寄存器 0x12
40:39:38.。。。。。。2:1:0 (,注:
7
6
543210 通道0的有效字节(设置32就
7
6
543210 通道1的有效字节
寄存器 寄存器 寄存器
7
6
543210
7
6
543210
7
通道2的有效字节
通道3的有效字节
0x13 0x14 0x15
6
543210 通道4的有效字节
寄存器 0x16
寄存器 7
6
543210 通道5的有效字节
状态寄存器(只读)
7
6发上一数据包
5TX寄存器满(1满)
4TX寄存器空(1空)
3
0x17
2
1RX寄存器满(1满)
0RX寄存器空(1空)
寄存器 寄存器 寄存器 TX
位255~~~~~~~位0 RX
位255~~~~~~~位0 0x1c 启用动态载荷长度
7
6
5 通道5开
4 通道4开
3 通道3开
32字节)32字节) (
(
2 通道2开
1 通道1开
0 通道0开
寄存器 0x1d
7
6
5
4
3
2使能动态载荷(1开)
1使能载荷应答(1开)
0 使能发送载荷但不应答(1开)
//***************************************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接收数据地址
#define RX_ADDR_P2 0x0C // 频道2接收数据地址
#define RX_ADDR_P3 0x0D // 频道3接收数据地址
#define RX_ADDR_P4 0x0E // 频道4接收数据地址
#define RX_ADDR_P5 0x0F // 频道5接收数据地址
#define TX_ADDR 0x10 // 发送地址寄存器
#define RX_PW_P0 0x11 // 接收频道0接收数据长度
#define RX_PW_P1 0x12 // 接收频道0接收数据长度
#define RX_PW_P2 0x13 // 接收频道0接收数据长度
#define RX_PW_P3 0x14 // 接收频道0接收数据长度
#define RX_PW_P4 0x15 // 接收频道0接收数据长度
#define RX_PW_P5 0x16 // 接收频道0接收数据长度
#define FIFO_STATUS 0x17 // FIFO栈入栈出状态寄存器设置
//**************************************************************************************
发射地址
const u8 TX_ADDRESS [TX_ADR_WIDTH]={}; //发送地址(地址要和接收通道地址一致)
接收地址
const u8 RX_ADDRESS0[RX_ADR_WIDTH]={}; //接收0通道地址(地址随便改,但必须和发射地址一致)
const u8 RX_ADDRESS1[RX_ADR_WIDTH]={0x01,}; //接收1通道地址0xc2是被锁死的,只能改0x01
const u8 RX_ADDRESS2[RX_ADR_WIDTH]={0x02,,}; //接收2通道地址 写的时候是低位先写,所以只要写1次
const u8 RX_ADDRESS3[RX_ADR_WIDTH]={0x03,,}; //接收3通道地址
const u8 RX_ADDRESS4[RX_ADR_WIDTH]={0x04,,}; //接收4通道地址
const u8 RX_ADDRESS5[RX_ADR_WIDTH]={0x05,}; //接收5通道地址
注:红底字的值可以随意改, 的值被锁死了。
要想通讯:条件:1 接收地址和发射地址必须一致
2 无线模块0x05寄存器的值必须一致(发射/接收这2模块)
因篇幅问题不能全部显示,请点此查看更多更全内容