中级会员
- 积分
- 289
- 金钱
- 289
- 注册时间
- 2013-11-12
- 在线时间
- 29 小时
|
5金钱
只有上电才能接收几次!复位不能接收!<br />
以下是代码:<br />
配置接收模式:<br />
void NRF24L01_RX_Mode(void)<br />
{<br />
NRF24L01_CE=0;<br />
NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除TX FIFO寄存器 <br />
NRF24L01_Write_Buf(WRITE_REG_NRF+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址<br />
<br />
NRF24L01_Write_Reg(WRITE_REG_NRF+EN_AA,0x00); //使能通道0的自动应答 <br />
NRF24L01_Write_Reg(WRITE_REG_NRF+EN_RXADDR,0x01);//使能通道0的接收地址 <br />
NRF24L01_Write_Reg(WRITE_REG_NRF+RF_CH,40); //设置RF通信频率 <br />
NRF24L01_Write_Reg(WRITE_REG_NRF+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度 <br />
NRF24L01_Write_Reg(WRITE_REG_NRF+RF_SETUP,0x07);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启 <br />
NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG, 0x0f);//配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,接收模式 <br />
NRF24L01_CE = 1; //CE为高,进入接收模式 +<br />
delay_us(20);<br />
}<br />
<br />
接收函数:<br />
u8 NRF24L01_RxPacket(u8 *rxbuf)<br />
{<br />
u8 sta; <br />
SPI2_SetSpeed(SPI_BaudRatePrescaler_16); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz) <br />
sta=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值 <br />
NRF24L01_Write_Reg(WRITE_REG_NRF+STATUS,sta); //清除TX_DS或MAX_RT中断标志<br />
if(sta&RX_OK)//接收到数据<br />
{<br />
NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//读取数据<br />
NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除RX FIFO寄存器 <br />
return 1; <br />
} <br />
return 0;//没收到任何数据<br />
}<br />
<br />
主函数:<br />
<br />
NRF24L01_Init();<br />
NRF24L01_RX_Mode();<br />
// Delay(20); <br />
while(1)<br />
{ <br />
if(NRF24L01_RxPacket(tmp_buf))<br />
{ <br />
for(i=1;i<RX_PLOAD_WIDTH+1;i++)<br />
{<br />
LCD_ShowxNum(0+j,120,*tmp_buf,1,16,0,0x0000);<br />
*tmp_buf=tmp_buf;<br />
j+=30; <br />
if(j>240)<br />
j=0; <br />
}<br />
LCD_ShowxNum(100,250,num++,3,16,0,0x00de); <br />
} <br />
}<br />
<br /> |
|