欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

调试nrf24l01发送有关问题3天都没解决

更新时间: 2014-01-05 03:20:51 责任编辑: Author_N1

 

调试NRF24L01发送问题3天都没解决。
void init_NRF24L01(void)
{
 //u8 Buf[5]={0};
 
  Delay_us(100);


  CE_L();    // chip enable
  //CSN_H();   // Spi disable 
  
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // 写本地地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址
SPI_WR_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

SPI_WR_Reg(WRITE_REG + EN_AA,0x01);//0x01);      //  频道0自动 ACK应答允许
SPI_WR_Reg(WRITE_REG + EN_RXADDR, 0x01);  //  允许接收地址只有频道0,如果需要多频道可以参考Page21  
SPI_WR_Reg(WRITE_REG + NRFRegSTATUS , 0x0e);
SPI_WR_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 设置自动重发时间和次数:500us + 86us, 10 retrans...
SPI_WR_Reg(WRITE_REG + RF_CH, 0);        //   设置信道工作为2.4GHZ,收发必须一致 
SPI_WR_Reg(WRITE_REG + RF_SETUP, 0x07);    //设置发射速率为1MHZ,发射功率为最大值0dB

//SPI_WR_Reg(WRITE_REG + CONFIG, 0x0e);//0x0E);
 
CE_H();   
}

u8 nRF24L01_TxPacket(u8 * tx_buf)
{  u8 flag=0;
CE_L();
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); 
SPI_Write_Buf(WR_TX_PLOAD, DataBuf, TX_PLOAD_WIDTH);
SPI_WR_Reg(WRITE_REG + CONFIG, 0x0e);
CE_H();
Delay_ms(100);
sta=SPI_RD_Reg(NRFRegSTATUS);//此处STA变量执行后总被赋值为0x1F 意思
         //是TXFIFO寄存器满,RXFIFO为空大道最多重发中断,而实际没有发送出去。请问哪里有错。
if((sta&0x70)==TX_DS)
 flag=1;

 
return flag;
}


--参考方法--
SPI_Write_Buf(WR_TX_PLOAD, DataBuf, TX_PLOAD_WIDTH);DataBuf应与形参一致...
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:20:51
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20969/
本文WWW.DOC100.NET DOC100.NET版权所有。