两个模块,一个发送一个接收,修改原子哥的代码经测试
单片机与模块SPI
通信没有问题,但无法通信
uchar NRF24L01_TxPacket(uchar *txbuf)
{
uchar sta;
CE=0;
SPI_W_DBuffer(W_TX_PLOAD,txbuf,TX_DATA_WITDH);//写数据到TX BUF 32个字节
CE=1;//启动发送
while(IRQ!=0);//等待发送完成
sta=SPI_R_byte(STATUS); //读取状态寄存器的值
SPI_W_Reg(W_REGISTER+STATUS,sta); //清除TX_DS或MAX_RT中断标志
if(sta&0x10)//达到最大重发次数
{
SPI_W_Reg(FLUSH_TX,0xff);//清除TX FIFO寄存器
return 2;
}
if(sta&0x20)//发送完成
{
return 1;
}
return 3;//其他原因发送失败
}
这个函数的返回值是2,就是达到最大重发次数,这说明发送成功了没?