金牌会员
- 积分
- 1068
- 威望
- 519
- 贡献
- 299
- 兑换币
- 308
- 注册时间
- 2014-10-15
- 在线时间
- 125 小时
- 毕业学校
- zucc
|
我的24l01每接收完一次。要重新初始化接收初始化函数 才能接收第二次,这是为什么呢,有大神能讲解一下吗,以下是接收初始化函数
uint8 LPLD_Nrf24L01_RxModeInit(void)
{
uint8 Temp;
NRF24L01_CE_L;
// 芯片上电复位后
// 分别读取NRF24L01_RX_ADDR_P0、NRF24L01_RX_ADDR_P1、NRF24L01_TX_ADDR的值
// 查看以下数据
// NRF24L01_RX_ADDR_P0的复位值是否为0xE7E7E7E7
// NRF24L01_RX_ADDR_P1的复位值是否为0xC2C2C2C2
// NRF24L01_TX_ADDR的复位值是否为0xE7E7E7E7
// 如果正确证明SPI读写没有问题,反之亦然
LPLD_Nrf24L01_CheckID();
Temp=LPLD_Nrf24L01_WriteBuf(NRF24L01_WRITE_REG + NRF24L01_RX_ADDR_P0, RX_ADDRESS, NRF24L01_RX_ADR_LEN);
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_RX_PW_P0, NRF24L01_PLOAD_LEN);
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_EN_AA, 0x01); //频道0自动,ACK应答允许
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_EN_RXADDR, 0x01); //允许接收地址只有频道0
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_RF_CH, 40); //设置信道工作为2.4GHZ,收发必须一致
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_RF_SETUP, 0x0F); //设置发射速率为1MHZ,发射功率为最大值0dB
Temp=LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG + NRF24L01_CONFIG, 0x0F); //使能CRC校验,使能RX,并且上电
NRF24L01_CE_H;
Nrf24L01_DelayUs(2000);//等待Nrf24L01接收模式初始化完毕
return Temp;
} |
|