频率范围:2.400~2.4835GHz
理论最高频率:1.88×10^43Hz
模块引脚定义:
GND VCC
CE CSN
SCK MOSI
MISO IRQ
1地 2电源3.3v(电压不能太高,烧模块的。电压太低会丢配置参数,要重新 init();)
3片选 4SPI片选(低电平使能)
5时钟 6模块输入
7输出 8中断脚
3.3v电压太低会突然不能遥控了,要重新运行初始化函数才能遥控。
CE使能:高电平>130us工作,低电平待机,高电平使能天线
CSN:spi通信(低电平使能)
SCK:spi时钟(上升沿),(低电平修改数据,高电平发送)(取数据时多一个低电平,sck上升沿,读取D7,sck上升沿,读取D6。。。)
MOSI:模块输入,数据高位在前。D7,D6,D5,D4,D3,D2,D1,D0,D15,D14,D13.....
注:但地址不一样,它是D0,D1,D2.........D39这样输入的。
MISO:多一个脉冲低电平,模块输出数据。
IRQ:模块输出脚(发生中断时拉低电平)
设备可以{6收1发}
读寄存器地址 A AAAA //代表5个bit 位 。最大0x1F
空操作 0xFF //空操作,把要读的地址用spi写入后,需要写0xff,(写0xff的同时无线模块会输出该寄存器的设置)
写寄存器地址 1A AAAA //D5位,相当于二进制 10 0000是0x20,比如要写0xA0寄存器的时候,要写0x20逻辑或0xA0等于的值" | = "
寄存器 0x60 获取协议帧中6bit代表的数据包长度值。
寄存器 0x61 无线接收寄存器 (获取有效负载内容。低字节先输出)
寄存器 0xA0 无线发送寄存器(写入数据可以发送出去)(spi直接写0xa0,byte[0]数据0,byte[1]数据1。。。
寄存器 0xe1 只需写1字节 清空发送寄存器 (写0xe1 0xFF)
寄存器 0xe2 只需写1字节 清空无线接收寄存器(写0xe2 0xFF) 注意bit5位
寄存器 0xe3 只需写1字节 数据重发(直接写0xe3)
寄存器 0xb0 无线发送寄存器(写入数据可以发送出去,但不使用应答)(直接写0xb0,byte[0]数据,
byte[ n]数据 。。。32字节)
寄存器 1010.1PPP 0XA8 |= 无线协议帧中9bit中PID位,取值范围000~101,PPP代表分组,第1次时PID=1;
寄存器 0x00 7空 (多查看0x07状态寄存器)
6接收完成中断使能(1关0开,中断产生时IRQ脚,低电平)
5发送完成中断使能(1关0开,中断产生时IRQ脚,低电平)
4重发中断使能(1关0开,中断产生时IRQ脚,低电平)
3校验位使能(0关,1开)
2校验位长度选择(0是1字节,1是2字节)
1无线模式(1工作,0掉电)
0无线工作方式(0发送模式,1接收模式)
寄存器 0x01 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
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关)
寄存器 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模块频率必须一致)
7无
6543210 1:1Mhz+2400Mhz。 1111111频率最高2525MHz
寄存器 0x06
7 连续发送开关(1开,0关)
6
53速率250kbps(1开,0关)(和位3配合使用,位5位3 = 00:1Mbps 01:2Mbps 10:250kbps 11:不使用)
4锁定倍频器(1开,0关)只用于测试
3数据速率(和位5配合使用,位5位3 = 00:1Mbps 01:2Mbps 10:250kbps 11:不使用)
21发射功率(00:-18dbm 01:-12dbm 10:-6dbm 11:0dbm)(注:我的模块11是20dpm哈。。。)
0不用
寄存器 0x07 无线状态寄存器(写1清除对应的中断) 0x20|=0x07
7
6收到数据中断
5发送完成中断
4重发失败中断(超过设定的重发次数)
321 000通道0 001通道1 002通道2。。。。(可查看是哪个通道引起的中断)
0重复发送满标志
寄存器 0x08
7654:数据丢包累计计数器
3210:重发数据 计数器
寄存器 0x09
7654321:不用
0:载波检测(信号超过-64dbm时会置1)用于检测该频率下是否有其他发射机在占用
寄存器 0xa
39:38.。。。。。。2:1:0 (接收通道0的地址 注: 位39到位0可以随意改,但注意地址是D0.....D39这样写入的,且后面通道2345是D0~D7就结束了,D8~D39是跟通道1共用的 )
寄存器 0x0b
39:38.。。。。。。2:1:0 (接收通道1的地址 注: 位39到位0可以随意改,D0先输入~D39结束)
寄存器 0x0c
39:38.。。。。。。2:1:0 (接收通道2的地址 注: 位39到位8和通道1共用。D0,D1,D2,D3....D7结束,D8~D39地址段和通道1共用,想修改的话,只能修改通道1)
寄存器 0x0d
39:38.。。。。。。2:1:0 (接收通道3的地址,同上)
寄存器 0x0e
39:38.。。。。。。2:1:0 (接收通道4的地址)
寄存器 0x0f
39:38.。。。。。。2:1:0 (接收通道5的地址)
寄存器 0x10
39:38.。。。。。。2:1:0 (发射通道0地址,6发1收,地址要一样) 注:通道0地址用于发送数据和接收应答信号,地址是D0先输入,再D1,D2直到D39结束。但通道2后面就有限制,D0到D7就结束了,再写的话又是从D0开始了。通道2345的D8~D39的值是和通道1共用的。想修改的话,只能修改通道1。对于单一的模块而言:通道12345是用来接收数据的,通道0是用来发数据到上一级模块。数据发完后,通道0会立即变为接收模式,收到上级发来的应答信号。如果ACK正确表示发送成功。如果失败会立即重发,直到超过重发设定次数而停止。比如通道5是应答接收,在通道5接收到数据后,硬件会占用通道0发出应答信号给对面的模块。
寄存器 0x11
7
6
543210 通道0的有效字节(设置32就是只接收32字节)
寄存器 0x12
7
6
543210 通道1的有效字节 (最大32字节)
寄存器 0x13
7
6
543210 通道2的有效字节
寄存器 0x14
7
6
543210 通道3的有效字节
寄存器 0x15
7
6
543210 通道4的有效字节
寄存器 0x16
7
6
543210 通道5的有效字节
寄存器 0x17状态寄存器(只读)
7
6发上一数据包
5TX寄存器满(1满)
4TX寄存器空(1空)
3
2
1RX寄存器满(1满)
0RX寄存器空(1空)
寄存器 TX(0xA0)
位255~~~~~~~位0 (32字节)//byte[32]用于模块TX发送
寄存器 RX(0x61)
位255~~~~~~~位0 (32字节)//byte[32]用于模块RX接收
寄存器 0x1c 启用动态负载长度DPL
7
6
5 通道5(0关,1开)
4 通道4(0关,1开)
3 通道3(0关,1开)
2 通道2(0关,1开)
1 通道1(0关,1开)
0 通道0(0关,1开)
寄存器 0x1d
7
6
5
4
3
2使能动态负载总开关(1开)
1动态负载下使能ACK应答(1开)
0动态负载下使用不应答模式(1开)
如果实在不理解,还是连不上,那你就试试不应答模式,地址全是0xFFFFFFFF或0x00000000,2模块频率设置一样,发射模块重复发,接收模块硬件仿真调试,查看数据。