コード例 #1
0
/*=====================================================================================================*/
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;
}
コード例 #2
0
ファイル: NRF.c プロジェクト: C47D/nRF24_Rx
/**
 * @brief Pin event handler prototype.
 * @param pin    Pin that triggered this event.
 * @param action Action that lead to triggering this event.
 */
void NRF_Init(NRF_INIT_t* init){
    NRF_SetChannel(init->channel);
    NRF_WriteSingleRegister(NRF_RF_SETUP, init->RF_SETUP_DR | init->RF_SETUP_PWR);
    NRF_WriteSingleRegister(NRF_SETUP_RETR, init->SETUP_RETR_ARD | init->SETUP_RETR_ARC);
    if(init->isTX){
        NRF_TxMode();
    }else{
        NRF_RxMode();
    }
    return;
}