/*=====================================================================================================*/ void NRF24L01_Init( u8 NRF_INIT_MODE ) { NRF_CE = 0; NRF_SetAddr(NRF_TX_ADDR, TX_ADDRESS); // 設定 TX 地址 NRF_SetAddr(NRF_RX_ADDR_P0, RX_ADDRESS); // 設定 RX 地址 NRF_WriteReg(CMD_W_REG | NRF_EN_AA, 0x01); // 致能通道0的自動應答 NRF_WriteReg(CMD_W_REG | NRF_EN_RXADDR, 0x01); // 致能 data Pipe 0 的接收地址 NRF_WriteReg(CMD_W_REG | NRF_SETUP_RETR, 0x1A); // 設定自動重發間隔時間:500us + 86us;最大自動重發次數:10次 NRF_SetChannel(NRF_CHANAL); // 設定傳輸通道(頻率) NRF_SetDataRate(NRF_RATE_250Kbps); // 設定傳輸速率 2Mbps // NRF_WriteReg(CMD_W_REG | NRF_RX_PW_P0, NRF_TX_PL_WIDTH); // 設定通道0的有效數據寬度 switch(NRF_INIT_MODE) { case NRF_MODE_FTLR: NRF_WriteReg(CMD_W_REG | NRF_CONFIG, 0x0E); // Power UP,Enable 16bit CRC,TX Mode,no mask NRF_FlushRxFIFO(); NRF_FlushTxFIFO(); break; case NRF_MODE_FRLT: NRF_FlushRxFIFO(); NRF_FlushTxFIFO(); NRF_WriteReg(CMD_W_REG | NRF_CONFIG, 0x0F); // Power UP,Enable 16bit CRC,RX Mode,no mask break; } NRF_WriteReg(CMD_RX_PL_WID, 0x73); NRF_WriteReg(CMD_W_REG | NRF_DYNPD, 0x01); NRF_WriteReg(CMD_W_REG | NRF_FEATURE, 0x07); NRF_CE = 1; }
/*=====================================================================================================*/ static void NRF_RxData( u8 *RxBuf ) { NRF_ReadBuf(CMD_R_RX_PLOAD, RxBuf, NRF_RX_PL_WIDTH); NRF_FlushRxFIFO(); }