常驻嘉宾
- 积分
- 3183
- 威望
- 2298
- 贡献
- 257
- 兑换币
- 597
- 注册时间
- 2011-10-2
- 在线时间
- 314 小时
|
void init_NRF24L01(void)
{
CE=0; // chip enable
CSN=1; // Spi disable
SCK=0; // Spi clock line init high
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_RW_Reg(WRITE_REG + EN_AA, 0x00); // 频道0自动 ACK应答不允许
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21
SPI_RW_Reg(WRITE_REG + RF_CH, 100); // 设置信道工作为2.5GHZ,收发必须一致
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为3字节
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB
SetRX_Mode();
}
初始化如上,需要关闭应答,然后调试起来比较方便,调试完成后再决定是否需要应答。
另外,发送完成或接受完成后都要重新设置接收模式(或发送模式)。
如果2.4G频道有干扰的话可以适当调高频率。
这样的话应该可以调通了。 |
|