大家好,我最近正在学习NRF24L01模块,遇到了几个问题,请各位帮帮忙。
使用原子哥的mini板与战舰板进行
通信,无线模块设置为通道0的时候,两者通信正常,设置为通道1时,就出现问题了。
具体表现为:接收端没有收到数据,发射端跟正常的时候一样(后来我把接收端的
电源关掉,发射端依旧在发数据,看起来跟正常的时候一样)
我修改了历程当中的·
NRF24L01_RX_Mode与NRF24L01_TX_Mode两个函数
具体函数如下:
[C] 纯文本查看 复制代码
const u8 TX0_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址const u8 RX0_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};
[C] 纯文本查看 复制代码
void NRF24L01_RX_Mode(void){NRF24L01_CE=0; NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P1,(u8*)RX0_ADDRESS,RX_ADR_WIDTH);//写RX节点地址 NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x02); //使能通道1的自动应答 NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x02);//使能通道1的接收地址 NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通信频率 NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道1的有效数据宽度 NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启 NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 NRF24L01_CE = 1; //CE为高,进入接收模式 } //该函数初始化NRF24L01到TX模式//设置TX地址,写TX数据宽度,设置RX自动应答的地址,填充TX发送数据,选择RF频道,波特率和LNA HCURR//PWR_UP,CRC使能//当CE变高后,即进入RX模式,并可以接收数据了 //CE为高大于10us,则启动发送. void NRF24L01_TX_Mode(){ NRF24L01_CE=0; NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX0_ADDRESS,TX_ADR_WIDTH);//写TX节点地址 NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX0_ADDRESS,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x02); //使能通道1的自动应答 NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x02); //使能通道1的接收地址 NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次 NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通道为40 NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启 NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断NRF24L01_CE=1;//CE为高,10us后启动发送}
实在搞不懂究竟出了什么问题,请各位指点指点。
谢谢!