新手上路
- 积分
- 36
- 金钱
- 36
- 注册时间
- 2016-10-8
- 在线时间
- 17 小时
|
1金钱
最近在调试NRF24L01 用的是网上常规的205的demo,又找了野火的demo进行修改,目前通讯都比较正常了,但是有一个问题,必须提前给接收方上电,再给发送方上电,才能够正常通讯,否则发送方就会提示发送失败(达到超时次数)!!!
while(1)
{
#ifdef Open_TX
TX_Mode(TX_BUF);
NRF24L01_Send();
//_printf("\r\nSend data£o0x%x\r\n",TX_BUF[0]);
Delay(0xffff);
#else
RX_Mode();
NRF24L01_Receive();
Delay(0x3fff);
#endif
}
void NRF24L01_Send(void)
{
u8 status=0x00;
static u8 sss;
//delay1us(10);
CE(0);
SPI_Write_Buf(WR_TX_PLOAD, TX_BUF, TX_PLOAD_WIDTH);
CE(1);
while(IRQ);
delay1us(10);
status=SPI_Read_Reg(STATUS); // ¶áè¡×′쬼Ä′æÆäà′ÅD¶Ïêy¾Y½óêÕ×′¿ö
SPI_RW_Reg(WRITE_REG_NRF24L01 + STATUS, status); // Çå3yTX£¬èÃIRQà-μí£»
SPI_RW_Reg(FLUSH_TX,NOP);
//printf("STATUS½óêü×′쬣o0x%2x\r\n",status);
if(status&TX_DS) /*tx_ds == 0x20*/
{
//printf("STATUS½óêü×′쬣o0x%2x\r\n",status);
printf("\r\nSEND OK0x%2x",sss++);
}
else if(status&MAX_RT)
{
//Delay(0xffffff);
printf("\r\nSEND ERROR!!!");
//SPI_RW_Reg(WRITE_REG_NRF24L01 + STATUS, 0x10); // Çå3yTX£¬èÃIRQà-μí£»
}
}
|
最佳答案
查看完整内容[请看2#楼]
问题找到:1、杜邦线的问题,造成无线模块上电初始化不通过2、程序里面没有模块检测部分,造成有时候无线模块上电没有初始化好就开始发送或者接收
我看了原子哥的程序,进行了修改,现在ok了,还是要谢谢原子哥
|