大家好,我最近在做NRF24L01的通信,发现一个非常奇怪的问题。
NRF24L01有6个接收管道,每个管道都可以配置接收地址,接收模块的接收地址与发射模块的发射地址需要相同才可以通信。
我按照手册配置完成,地址宽度配置为3个字节,初始化配置如下:
Clear_IRQ(); //清空所有中断
W_24L01_Reg(CONFIG,0x0A); //使能CRC,开机
W_24L01_Reg(EN_AA,0x00); //关闭所有通道自动ACK
W_24L01_Reg(FEATURE,0x01); //使能NO_ACK命令
W_24L01_Reg(EN_RXADDR,0x3F); //使能P0-P5所有接收管道
W_24L01_Reg(SETUP_AW,0x01); //无线地址宽度:3字节
W_24L01_Reg(RF_CH,50); //频率:2460MHz
W_24L01_Reg(RF_SETUP,0x27); //空速:250k,功率,0x27:7dB
W_24L01_RX_TX_ADDR(TX_ADDR,TX_ADDR_1B); //发射地址3字节
W_24L01_RX_TX_ADDR(RX_ADDR_P0,RX_ADDR_P0_1B); //管道0的接收地址
W_24L01_RX_TX_ADDR(RX_ADDR_P1,RX_ADDR_P1_1B); //管道1的接收地址
W_24L01_Reg(RX_ADDR_P2,RX_ADDR_P2_1B); //管道2的接收地址
W_24L01_Reg(RX_ADDR_P3,RX_ADDR_P3_1B); //管道3的接收地址
W_24L01_Reg(RX_ADDR_P4,RX_ADDR_P4_1B); //管道4的接收地址
W_24L01_Reg(RX_ADDR_P5,RX_ADDR_P5_1B); //管道5的接收地址
W_24L01_Reg(RX_PW_P0,RX_PW_MID); //管道0接收字节长度:1
W_24L01_Reg(RX_PW_P1,RX_PW_MID); //管道1接收字节长度:1
W_24L01_Reg(RX_PW_P2,RX_PW_MID); //管道2接收字节长度:1
W_24L01_Reg(RX_PW_P3,RX_PW_MID); //管道3接收字节长度:1
W_24L01_Reg(RX_PW_P4,RX_PW_MID); //管道4接收字节长度:1
W_24L01_Reg(RX_PW_P5,RX_PW_MID); //管道5接收字节长度:1
然后问题来了,当我把接收地址的最后一个字节改为0xA5时,这时接收就特别不稳定,经常丢数据,请教一下各位大神,有谁知道这是什么原因吗? |