24L01的系统里有发送端和接收端。发送端的发送地址填的是接收端的地址,接收地址是发送端如果转为接收模式接收数据的地址。24L01有6个通道,各个通道收发地址可以不同,除了通道0。主要是因为24L01默认通道0接收自动应答的信息,接收端接到发送端的数据后,会向发送端的地址(发送地址)发送应答信息,也就是通道0的接收地址要和一样发送地址一样才能接到应答信号。
你可以试试把原子哥的程序改一改:发送端发送地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE5,0xE4,0xE3,0xE2,0xE1},发送端接收地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE1,0xE2,0xE3,0xE4,0xE5};接收端发送地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE1,0xE2,0xE3,0xE4,0xE5},接收地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE5,0xE4,0xE3,0xE2,0xE1}.这时程序就会接收不到应答信号,产生MAX_RT中断,主程序里的NRF24L01_TxPacket(tmp_buf)函数一直返回MAX_TX,主程序显示Send Failed,但其实数据可以发送过去
我也是刚刚学24L01,可能有地方表述不清楚,你看一看吧,有什么心得也给我分享下
24L01的系统里有发送端和接收端。发送端的发送地址填的是接收端的地址,接收地址是发送端如果转为接收模式接收数据的地址。24L01有6个通道,各个通道收发地址可以不同,除了通道0。主要是因为24L01默认通道0接收自动应答的信息,接收端接到发送端的数据后,会向发送端的地址(发送地址)发送应答信息,也就是通道0的接收地址要和一样发送地址一样才能接到应答信号。
你可以试试把原子哥的程序改一改:发送端发送地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE5,0xE4,0xE3,0xE2,0xE1},发送端接收地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE1,0xE2,0xE3,0xE4,0xE5};接收端发送地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE1,0xE2,0xE3,0xE4,0xE5},接收地址写TX_ADDRESS[TX_ADR_WIDTH]={0xE5,0xE4,0xE3,0xE2,0xE1}.这时程序就会接收不到应答信号,产生MAX_RT中断,主程序里的NRF24L01_TxPacket(tmp_buf)函数一直返回MAX_TX,主程序显示Send Failed,但其实数据可以发送过去
我也是刚刚学24L01,可能有地方表述不清楚,你看一看吧,有什么心得也给我分享下
举报