wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4053|回復(fù): 1
收起左側(cè)

PAN3020 RF433MHz無線收發(fā)示例代碼 HC32L110低功耗單片機

[復(fù)制鏈接]
ID:540521 發(fā)表于 2021-4-9 18:21 | 顯示全部樓層 |閱讀模式
主控采用HC32L110低功耗單片機,射頻芯片PAN3020,SPI接口
概述1.png 管腳定義.png 3.jpg



//============================================================================//
//  * @file            RF.c
//  * @author         Shi Zheng
//  * @version        V1.1
//  * @date           24/4/2015
//  * @brief          pan3020 communication interface
//  * @modify user:   linjianan
//  * @modify date:   28/11/2015
//============================================================================//
#include "stdio.h"
//#include "RFAPI.H"
#include "RF.H"
#include "ddl.h"
#include "SRWF_1E80.h"

extern uint8_t lpUartSend(uint8_t *pBuf,uint8_t len);

const uint8_t TX_ADDRESS_DEF[5] = {0xCC,0xCC,0xCC,0xCC,0xCC};                    //RF 地址:接收端和發(fā)送端需一致
//unsigned short   Payload_Count = 0;
uint16_t   Payload_Count = 0;

uint8_t fb=0,fc=0;
extern void RF_CalVco( uint8_t * ptr_Dem_cal1);
extern uint8_t Dem_cal1_data[];
extern uint8_t RF_cal1_data[];

uint8_t Channel_Index=10;  
uint8_t const CHANNEL_TABLE[] = {16,24,32,40,48,56,64,72,80,88};

uint8_t temp = 0;
uint8_t RFmachine = 0;

/******************************************************************************/
//            SPI_init
//               init spi pin and IRQ  CE input/out mode
/******************************************************************************/
void SPI_init(void)
{
        Gpio_InitIO(CSN_PORT,    CSN_PIN,   GpioDirOut);
        Gpio_InitIO(MISO_PORT,   MISO_PIN,  GpioDirIn);
        Gpio_InitIO(MOSI_PORT,   MOSI_PIN,  GpioDirOut);
        Gpio_InitIO(SCK_PORT,    SCK_PIN,   GpioDirOut);
        Gpio_InitIO(SPIIRQ_PORT, SPIIRQ_PIN,GpioDirIn);
        Gpio_InitIO(SPICE_PORT,  SPICE_PIN,  GpioDirOut);
}


/******************************************************************************/
//            SPI_RW
//                SPI Write/Read Data
//            SPI寫入一個BYTE的同時,讀出一個BYTE返回
/******************************************************************************/
uint8_t SPI_RW( uint8_t         R_REG)
{
    uint8_t          i;
    for(i = 0; i < 8; i++)
    {
        SCK_LOW;
        if(R_REG & 0x80)
        {
            MOSI_HIGH;
        }
        else
        {
            MOSI_LOW;
        }
        R_REG = R_REG << 1;
        SCK_HIGH;
        if( MISO_STATUS )
        {
          R_REG = R_REG | 0x01;
        }
    }
    SCK_LOW;
    return R_REG;
}

/******************************************************************************/
//            RF_WriteReg
//                Write Data(1 Byte Address ,1 byte data)
/******************************************************************************/
void RF_WriteReg( uint8_t reg,  uint8_t wdata)
{
    CSN_LOW;
    SPI_RW(reg);
    SPI_RW(wdata);
    CSN_HIGH;
}


/******************************************************************************/
//            RF_ReadReg
//                Read Data(1 Byte Address ,1 byte data return)
/******************************************************************************/
uint8_t        ucRF_ReadReg( uint8_t reg)
{
     uint8_t tmp;

    CSN_LOW;
    SPI_RW(reg);
    tmp = SPI_RW(0);
    CSN_HIGH;

    return tmp;
}

/******************************************************************************/
//            RF_WriteBuf
//                Write Buffer
/******************************************************************************/
void RF_WriteBuf( uint8_t reg, uint8_t *pBuf, uint8_t length)
{
     uint8_t j;
    CSN_LOW;
    j = 0;
    SPI_RW(reg);
    for(j = 0;j < length; j++)
    {
        SPI_RW(pBuf[j]);
    }
    j = 0;
    CSN_HIGH;
}

/******************************************************************************/
//            RF_ReadBuf
//            Read Data(1 Byte Address ,length byte data read)
/******************************************************************************/
void RF_ReadBuf( uint8_t reg, unsigned char *pBuf,  uint8_t length)
{
  uint8_t byte_ctr;

  CSN_LOW;                                                                                          

  SPI_RW(reg);                                                                                       
  for(byte_ctr=0;byte_ctr<length;byte_ctr++)
    pBuf[byte_ctr] = SPI_RW(0);                                                                 

  CSN_HIGH;                                                                                   
}


void RF_PwrDwnMode(void)
{
  //關(guān)閉RF,PWR_UP 0, CE 0
  CE_LOW;
  //1111 1101
  RF_WriteReg(W_REGISTER+CONFIG,ucRF_ReadReg(CONFIG)&0xFD);
  delay10us(1);

  RFmachine = RFIDLEMODE;
}

void RF_STB1Mode(void)
{
  //RF STB1模式,PWR_UP 1, CE 0
  CE_LOW;
  //0000 0010
  RF_WriteReg(W_REGISTER+CONFIG,ucRF_ReadReg(CONFIG)|0x02);
  delay10us(1);
}

void RF_STB2Mode(void)
{
  //RF STB2模式,PWR_UP 1, CE 1
  CE_HIGH;
  //0000 0010
  RF_WriteReg(W_REGISTER+CONFIG,ucRF_ReadReg(CONFIG)|0x02);
  delay10us(1);
}

/******************************************************************************/
//            RF_TxMode
//                Set RF into TX mode
/******************************************************************************/
void RF_TxMode(void)
{
  uint8_t i;

   char tmpstr[64];
    CE_LOW;

  // 將RF設(shè)置成TX模式,允許發(fā)送中斷
    RF_WriteReg(W_REGISTER + CONFIG,  0X0E);                                                        
    delay10us(1);

    RFmachine = RFTXMODE;
    RF_TR_HIGH;

}


/******************************************************************************/
//            RF_RxMode
//            將RF設(shè)置成RX模式,準(zhǔn)備接收數(shù)據(jù)
/******************************************************************************/
void RF_RxMode(void)
{
  char tmpstr[64];

  uint8_t     RF_cal3_temp[]    = {0x01,0x08,0xD4,0x02,0x64};
  uint8_t     RF_cal3_temp1[]    = {0x01,0x08,0xD4,0x02,0x66};  
  CE_LOW;
  RF_WriteReg(W_REGISTER + CONFIG,  0X0F );                                                        // 將RF設(shè)置成RX模式
  delay1ms(20);
  CE_HIGH;                                                                                        // Set CE pin high
  delay10us(50);                //keep ce high at least 150us
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp, sizeof(RF_cal3_temp));
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp1, sizeof(RF_cal3_temp1));      
  delay1ms(2);

  RFmachine = RFRXMODE;
  RF_TR_LOW;

//  sprintf(tmpstr,"[RF Rx] sta %02X\r\n",ucRF_ReadReg(STATUS));
//  lpUartSend(tmpstr,strlen(tmpstr));


//  lpUartSend("[RF Rx]\r\n",strlen("[RF Rx]\r\n"));
}

/******************************************************************************/
//            RF_GetStatus
//            read RF IRQ status,3bits return
/******************************************************************************/
uint8_t ucRF_GetStatus(void)
{
    return ucRF_ReadReg(STATUS)&0x70;                                                                //讀取RF的狀態(tài)
}

/******************************************************************************/
//            RF_ClearStatus
//                clear RF IRQ
/******************************************************************************/
void RF_ClearStatus(void)
{
    RF_WriteReg(W_REGISTER + STATUS,0x70);                                                        //清除RF的狀態(tài)
}

/******************************************************************************/
//            RF_ClearFIFO
//                clear RF TX/RX FIFO
/******************************************************************************/
void RF_ClearFIFO(void)
{
    RF_WriteReg(FLUSH_TX, 0);                                                                        //清除RF 的 TX FIFO               
    RF_WriteReg(FLUSH_RX, 0);                                                                   //清除RF 的 RX FIFO        
}


/******************************************************************************/
//            RF_SetPower
//      in: RF_cal1_data
//      in: power   ndbm ,define by rf.h
/******************************************************************************/
void RF_SetPower( uint8_t * p,uint8_t power)
{   
    switch (power)
    {
    case RF18DBM :         
        *(p+1) &= ~0xfe;//8-15
        *(p+1) |= 0xfe;
        *(p+2) &= ~0x07;//16-23
        *(p+2) |= 0x07;  
        RF_WriteBuf(W_REGISTER + RF_CAL1,   p, 5);   
        break;

    case RF14DBM:

        *(p+1) &= ~0xfe;
        *(p+1) |= 0xf8;
        *(p+2) &= ~0x07;
        *(p+2) |= 0x01;  
        RF_WriteBuf(W_REGISTER + RF_CAL1,   p, 5);
        break;

    case RF9DBM:
         *(p+1) &= ~0xfe;
        *(p+1) |= 0xf8;
        *(p+2) &= ~0x07;
        *(p+2) |= 0x00;  
        RF_WriteBuf(W_REGISTER + RF_CAL1,   p, 5);     
        break;

    case RF1DBM:
        *(p+1) &= ~0xfe;
        *(p+1) |= 0x60;
        *(p+2) &= ~0x07;
        *(p+2) |= 0x00;  
        RF_WriteBuf(W_REGISTER + RF_CAL1,   p, 5);     
        break;


     default:
        break;
     }

}
/******************************************************************************/
//in Fb[5:0], FC[8:1]
// return none
//315   fre = 1/6*8000000*(200+fb+fc/400)hz
//433  fre = 1/4*8000000*(200+fb+fc/400)hz=400Mhz+2fbMhz+50fckHz
//868 915 feq = 1/2*8000000*(200+fb+fc/400)hz=800Mhz+4fbMhz+100kHz
// for example fre= 434.1khz ,Fb=0x11  Fc=0x01.  default fc[0]=0,only set fc[8:1](reg5) .

/******************************************************************************/

void RF_SetChannel(uint8_t bb,uint8_t cc )
{
//        uint8_t RFSetup_temp = 0;
//        Fb &= 0x3f;
//        RFSetup_temp = ucRF_ReadReg(RF_SETUP)&0xc0;
//        RFSetup_temp |= Fb;
        RF_WriteReg(W_REGISTER+RF_SETUP,bb|DATA_RATE);        
        RF_WriteReg(W_REGISTER+RF_CH,cc);        

}


/******************************************************************************/
//  發(fā)送數(shù)據(jù)
//            參數(shù):
//              1. ucTXPayload:需要發(fā)送的數(shù)據(jù)首地址
//              2. length:  需要發(fā)送的數(shù)據(jù)長度
/******************************************************************************/

void RF_Tx_TransmintData( uint8_t *ucTXPayload,  uint8_t length)
{

    uint8_t     RF_cal3_temp[]    = {0x01,0x08,0xD4,0x02,0x64};
    uint8_t     RF_cal3_temp1[]    = {0x01,0x08,0xD4,0x02,0x66};  

    if(!ucRF_GetStatus())                                                                               // rf 處于空閑狀態(tài)才發(fā)送數(shù)據(jù)
          {      
                                                   
            RF_WriteBuf(W_TX_PAYLOAD, ucTXPayload, length);                                               //write data to txfifo        
            CE_HIGH;                                                                                    //rf entery tx mode start send data
            delay10us(15);                                                                              //keep ce high at least 150us
            RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp, sizeof(RF_cal3_temp));                   // 切換時鐘
            RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp1, sizeof(RF_cal3_temp1));  
            CE_LOW;
    }
}

/******************************************************************************/
//發(fā)送結(jié)果
//            參數(shù):只在增強型模式下,使能ack帶payload有效
//              1. ucAckPayload:ackpayload的首地址
//              2. length:ackpayload 的長度

/*****************************************************************************/
extern uint8_t      lpUartSend(uint8_t *pBuf,uint8_t len);
#include "stdio.h"
#include "stdlib.h"

uint8_t  RF_Tx_CheckResult(uint8_t *ucAckPayload,  uint8_t length)
{
  uint8_t rtnTxResult;
  sMacHeader_t tmpSyncHeader;

  switch(ucRF_GetStatus())
  {
   case        TX_DS_FLAG:                                                                         // 普通型發(fā)送完成 或 增強型發(fā)送成功        
          Payload_Count++;                                                                // 增強型模式,累計ack次數(shù)                             

          rtnTxResult = TX_DS_FLAG;

          RF_ClearFIFO();
          RF_ClearStatus ();
          break;

    case        RX_TX_FLAG:                                                                        //增強型發(fā)送成功且收到payload         
          RF_ReadBuf(R_RX_PAYLOAD,ucAckPayload, length);

          Payload_Count++;  

          rtnTxResult = RX_TX_FLAG;

//           //將PAN3020接收到的數(shù)據(jù)通過串口轉(zhuǎn)發(fā)
//            lpUartSend(ucAckPayload, 16);


          RF_ClearFIFO();
          RF_ClearStatus ();              
          break;

    case        MAX_RT_FLAG:                                                                        // 增強型發(fā)送超時失敗                                                  
          rtnTxResult = MAX_RT_FLAG;

          RF_ClearFIFO();
          RF_ClearStatus ();
          break;
    default:
          rtnTxResult = TX_NULL_FLAG;
          break;                        
  }

  return rtnTxResult;

}

/******************************************************************************/
//            ucRF_DumpRxData
//            讀出接收到的數(shù)據(jù):
//            參數(shù):
//              1. ucPayload:存儲讀取到的數(shù)據(jù)的Buffer
//              2. length:    讀取的數(shù)據(jù)長度
//              Return:
//              1. 0: 沒有接收到數(shù)據(jù)
//              2. 1: 讀取接收到的數(shù)據(jù)成功
//              note: Only use in Rx Mode
//              length 通常等于 PAYLOAD_WIDTH
/******************************************************************************/
uint8_t ucRF_DumpRxData( uint8_t *ucPayload,  uint8_t length)
{
    if(ucRF_GetStatus()==0x40)
    {
//        RF_ReadBuf(R_RX_PAYLOAD, ucPayload, length);                                                
        return 1;
     }
     return 0;
}


////////////////////////////////////////////////////////////////////////////////
/******************************************************************************/
//            Vco_Calibration
//            
/******************************************************************************/
void RF_CalVco( uint8_t * Demod_Cal)
{   
  uint8_t i,j,h;
  uint8_t     RF_cal3_temp[]    = {0x01,0x08,0xD4,0x02,0x64};
  uint8_t     RF_cal3_temp1[]    = {0x01,0x08,0xD4,0x02,0x66};

  uint8_t Dem_cal2_data1[]   = {0x0B,0xE7,0x00,0x03};                                       //Dataout_Sel置1
  uint8_t RF_cal3_data1[]    = {0x01,0x08,0xD4,0x02,0x76};                                  //Vco_Calibration EN
  uint8_t RF_cal3_data2[]    = {0x01,0x18,0xD4,0x02,0x76};                                  //觸發(fā)Vco_Calibration_SPI_Triger

  CE_LOW;
  RF_WriteReg(W_REGISTER + CONFIG,  0X0F );                                                 //配置為接收模式
  CE_HIGH;

  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp, sizeof(RF_cal3_temp));
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp1, sizeof(RF_cal3_temp1));

  RF_WriteBuf(W_REGISTER + DEM_CAL2,   Dem_cal2_data1, sizeof(Dem_cal2_data1));
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_data1, sizeof(RF_cal3_data1));
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_data2, sizeof(RF_cal3_data2));

  i=ucRF_ReadReg(RPD);                                                                     
  j=ucRF_ReadReg(FIFO_STATUS);
  i >>= 2;
  i &= 0x30;
  j &= 0x0C;
  h = i|j;
  Demod_Cal[1] &= 0xC3;
  Demod_Cal[1] |= h;   
}
////////////////////////////////////////////////////////////////////////////////
//          以下部分與RF通信相關(guān),不建議修改
////////////////////////////////////////////////////////////////////////////////
/******************************************************************************/
//            pan3020_Initial
//                Initial RF
/******************************************************************************/
//uint16_t rfFreq; ///<ISM 頻率配置
//uint16_t rfPower; ///

#if 1
uint8_t firstpwrup = 0;

void RF_Init(uint16_t rfPower)
{
  uint8_t feature =0x00;

  uint8_t BB_cal_data[]     = {0x3f,0xFC,0x1F,0x1F,0x04};         
  uint8_t RF_cal3_data[]    = {0x01,0x08,0xD4,0x02,0x66};
  uint8_t Dem_cal2_data[]   = {0x0B,0xE7,0x00,0x01};           //如果使能動態(tài)payload,需要配置為  uint8_t Dem_cal2_data[]   = {0x0B,0xE7,0x00,0x00};
  uint8_t  RF_cal2_data[]   = {0xC8,0x1E,0x68,0x39,0xF6};   

/******************************************************************************/
//            433MHz
/******************************************************************************/      
#if((DATA_RATE == DR_400K) && (BAND == B433MHz))
        uint8_t Dem_cal1_data[]   = {0x01,0x8e,0x48,0x4c,0x80};   
        uint8_t RF_cal1_data[]    = {0xC4,0xFF,0xFF,0xDF,0xDB};

#elif((DATA_RATE==DR_40K) && (BAND==B433MHz))

        uint8_t Dem_cal1_data[]   = {0x01,0x4D,0x48,0x34,0x8C};   
        uint8_t RF_cal1_data[]    = {0xC4,0xFF,0xFF,0x5F,0xD8};

#elif((DATA_RATE==DR_80K) && (BAND==B433MHz))

        uint8_t  Dem_cal1_data[]  = {0x01,0x8D,0x48,0x4C,0x8C};     
        uint8_t  RF_cal1_data[]   = {0xC4,0xFF,0xFF,0xDF,0xD8};

#elif((DATA_RATE==DR_200K) && (BAND==B433MHz))
        uint8_t  Dem_cal1_data[]  = {0x01,0x8C,0x48,0x4C,0x84};   
        uint8_t  RF_cal1_data[]   = {0xC4,0xFF,0xFF,0xDF,0xD9};     

/******************************************************************************/
//            315MHz
/******************************************************************************/         

#elif((DATA_RATE==DR_400K) && (BAND == B315MHz))        
       uint8_t Dem_cal1_data[]   = {0x01,0xea,0x48,0x74,0x80};     
       uint8_t RF_cal1_data[]    = {0xC5,0xFF,0xFF,0xDF,0xDB};

#elif((DATA_RATE==DR_40K) && (BAND==B315MHz))         
        uint8_t Dem_cal1_data[]   = {0x01,0x69,0x48,0x44,0x8C};     
        uint8_t RF_cal1_data[]    = {0xC5,0xFF,0xFF,0x5F,0xD8};   

#elif((DATA_RATE==DR_80K) && (BAND==B315MHz))
       uint8_t  Dem_cal1_data[]  = {0x01,0xe9,0x48,0x74,0x8C};   
       uint8_t  RF_cal1_data[]   = {0xC5,0xFF,0xFF,0xDF,0xD8};

#elif((DATA_RATE==DR_200K) && (BAND==B315MHz))      
       uint8_t  Dem_cal1_data[]  = {0x01,0xE8,0x48,0x74,0x84};     
       uint8_t  RF_cal1_data[]   = {0xC5,0xFF,0xFF,0xDF,0xD9};   

/******************************************************************************/
//            868MHz
/******************************************************************************/     

#elif((DATA_RATE==DR_400K) && (BAND == B868MHz))        
       uint8_t Dem_cal1_data[]   = {0x01,0x88,0x48,0x4c,0x94};   
       uint8_t RF_cal1_data[]    = {0xd0,0xFF,0xFF,0xDF,0xDB};   

#elif((DATA_RATE==DR_40K) && (BAND==B868MHz))         
        uint8_t Dem_cal1_data[]   = {0x01,0x09,0x80,0x19,0x5C};     
        uint8_t RF_cal1_data[]    = {0xd0,0xFF,0xFF,0x5F,0xD8};

#elif((DATA_RATE==DR_80K) && (BAND==B868MHz))
       uint8_t  Dem_cal1_data[]  = {0x01,0x09,0x00,0x21,0x5C};     
       uint8_t  RF_cal1_data[]   = {0xD0,0xFF,0xFF,0xDF,0xD8};

#elif((DATA_RATE==DR_200K) && (BAND==B868MHz))      
       uint8_t  Dem_cal1_data[]  = {0x01,0x89,0x48,0x4c,0x9c};     
       uint8_t  RF_cal1_data[]   = {0xd0,0xFF,0xFF,0xDF,0xD9};

/******************************************************************************/
//            915MHz
/******************************************************************************/        
#elif((DATA_RATE==DR_400K) && (BAND == B915MHz))        
       uint8_t Dem_cal1_data[]   = {0x01,0x9c,0x48,0x54,0x84};     
       uint8_t RF_cal1_data[]    = {0xd0,0xFF,0xFF,0xDF,0xDB};     

#elif((DATA_RATE==DR_40K) && (BAND==B915MHz))         
        uint8_t Dem_cal1_data[]   = {0x01,0x1d,0x48,0x34,0x8C};      
        uint8_t RF_cal1_data[]    = {0xd0,0xFF,0xFF,0x5F,0xD8};   

#elif((DATA_RATE==DR_80K) && (BAND==B915MHz))
       uint8_t  Dem_cal1_data[]  = {0x01,0x1d,0x00,0x44,0x7C};     
       uint8_t  RF_cal1_data[]   = {0xD0,0xFF,0xFF,0xDF,0xD8};      

#elif((DATA_RATE==DR_200K) && (BAND==B915MHz))      
       uint8_t  Dem_cal1_data[]  = {0x01,0x9d,0x48,0x54,0x8c};     
       uint8_t  RF_cal1_data[]   = {0xD0,0xFF,0xFF,0xDF,0xD9};

#endif


#if(BAND == B433MHz)
      fb = 0x12;
      fc = 0x20;

#elif(BAND == B315MHz)
      fb = 0x25;
      fc = 0x20;  

#elif(BAND == B868MHz)
      fb = 0x11;
      fc = 0x20;  

#elif(BAND == B915MHz)
      fb = 0x1c;
      fc = 0x20;  
  //    fb = 0x11;
  //    fc = 0x20;        

#endif

    SPI_init();
    delay1ms(10);


#if(CE_USE_SPI==1)
        feature |=0x20;
#endif
if(PAYLOAD_WIDTH >32)
        feature |= 0x18;                                                                                 // fifo 64 byte                                                                       


    if ( firstpwrup == 0 )
    {      
        firstpwrup = 1;

        //以下三句,若每次初始化清零,增強模式下,count幀計數(shù)器永遠為0.
        RF_WriteReg(FLUSH_TX, 0);                                                                        // CLEAR TXFIFO                                             
        RF_WriteReg(FLUSH_RX, 0);                                                                        // CLEAR  RXFIFO
        RF_WriteReg(W_REGISTER + STATUS, 0x70);                                                                // CLEAR  STATUS        
    }

        RF_WriteReg(W_REGISTER + EN_RXADDR, 0x01);                                                        // Enable Pipe0
        RF_WriteReg(W_REGISTER + SETUP_AW,  0x03);                                                        // address witdth is 5 bytes
        RF_WriteReg(W_REGISTER + RX_PW_P0,  PAYLOAD_WIDTH);                                                // 64bytes
        RF_WriteBuf(W_REGISTER + TX_ADDR,   ( uint8_t*)TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF));                // Writes TX_Address to pan3020
        RF_WriteBuf(W_REGISTER + RX_ADDR_P0,( uint8_t*)TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF));                // RX_Addr0 same as TX_Adr for Auto.Ack  

        RF_WriteBuf(W_REGISTER + BB_CAL,    BB_cal_data,  sizeof(BB_cal_data));

        RF_WriteBuf(W_REGISTER + DEM_CAL1,   Dem_cal1_data, sizeof(Dem_cal1_data));
        RF_WriteBuf(W_REGISTER + DEM_CAL2,   Dem_cal2_data, sizeof(Dem_cal2_data));

        RF_WriteBuf(W_REGISTER + RF_CAL1,   RF_cal1_data, sizeof(RF_cal1_data));   
        RF_WriteBuf(W_REGISTER + RF_CAL2,   RF_cal2_data, sizeof(RF_cal2_data));
        RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_data, sizeof(RF_cal3_data));
            
#if(TRANSMIT_TYPE == TRANS_ENHANCE_MODE)      
        //自動傳輸設(shè)置 7:4, 0000 250us, 1111,9530us;  3:0, 0000 不帶自動重傳 0011 3次重傳, 1111 15次重傳
        RF_WriteReg(W_REGISTER + SETUP_RETR,0x03);                                                        //傳輸延遲250us,  3 retrans...         
        RF_WriteReg(W_REGISTER + EN_AA,     0x01);                                                        // Enable Auto.Ack:Pipe0         
   RF_WriteReg(ACTIVATE, 0x73);        
#if(1== EN_DYNPLOAD)                                                        
        feature |= 0x04;                                                                                //  ENDYNPD               
        RF_WriteReg(W_REGISTER +DYNPD, 0x01);     
   #endif  
   #if(1==EN_ACK_PAYLOAD)                                                                             // en ack+payload
        feature |= 0x02;
   #endif         
#elif(TRANSMIT_TYPE == TRANS_BURST_MODE)                                                               
        RF_WriteReg(W_REGISTER + SETUP_RETR,0x00);                                                        // Disable retrans...         
        RF_WriteReg(W_REGISTER + EN_AA,     0x00);                                                        // Disable AutoAck
#endif
        RF_WriteReg(W_REGISTER +FEATURE, feature);   
        RF_WriteReg(W_REGISTER + RF_SETUP,  DATA_RATE|fb);                                              //set datarate
        RF_WriteReg(W_REGISTER + RF_CH,  fc);

        //RF_SetPower(RF_cal1_data,RF_POWER);                                                                // set power
        RF_SetPower(RF_cal1_data,rfPower);                                                                // set power

//        RF_SetChannel(fb,fc);                                                                // set fre
   /*     RF_CalVco(Dem_cal1_data);                                                                         //Vco_Calibration
        RF_WriteBuf(W_REGISTER + DEM_CAL1,   Dem_cal1_data, sizeof(Dem_cal1_data));
        RF_WriteBuf(W_REGISTER + DEM_CAL2,   Dem_cal2_data, sizeof(Dem_cal2_data));
        RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_data, sizeof(RF_cal3_data)); */
}
#endif


/******************************************************************************/
//                            進入載波模式
/******************************************************************************/
void RF_Carrier(uint8_t Fb,uint8_t Fc)
{

  uint8_t  BB_cal_data[]    = {0x09,0x04,0x07,0x1F,0x05};
  uint8_t Dem_cal1_data[]   = {0xE1,0x8e,0x48,0x4c,0x80};
  uint8_t Dem_cal2_data[]   = {0x0B,0xE7,0x00,0x05};
  uint8_t RF_cal1_data[]    = {0xC4,0xFF,0xFF,0xDF,0xDB};
  uint8_t RF_cal2_data[]    = {0xC8,0x1E,0x68,0x39,0xF6};
  uint8_t RF_cal3_data[]    = {0x01,0x08,0xD4,0x02,0x66};
  uint8_t     RF_cal3_temp[]    = {0x01,0x08,0xD4,0x02,0x64};
  uint8_t     RF_cal3_temp1[]    = {0x01,0x08,0xD4,0x02,0x66};


  SPI_init();
  CE_HIGH;
  delay10us(500);                                                                        
  RF_WriteReg(W_REGISTER + CONFIG, 0x0E);
  RF_WriteReg(W_REGISTER + RF_SETUP,  0xd2);         
  RF_SetChannel(fb,CHANNEL_TABLE[Channel_Index]);
  RF_WriteBuf(W_REGISTER + BB_CAL,  BB_cal_data,  sizeof(BB_cal_data));
  RF_WriteBuf(W_REGISTER + RF_CAL2,  RF_cal2_data,  sizeof(RF_cal2_data));
  RF_WriteBuf(W_REGISTER + RF_CAL3,  RF_cal3_data,  sizeof(RF_cal3_data));  
  RF_WriteBuf(W_REGISTER + DEM_CAL2, Dem_cal2_data, sizeof(Dem_cal2_data));
  delay10us(500);        
  RF_WriteBuf(W_REGISTER + DEM_CAL1, Dem_cal1_data, sizeof(Dem_cal1_data));
  delay10us(500);        
  RF_SetPower(RF_cal1_data,RF_POWER);
  CE_LOW;
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp, sizeof(RF_cal3_temp));
  RF_WriteBuf(W_REGISTER + RF_CAL3,   RF_cal3_temp1, sizeof(RF_cal3_temp1));

}

/***************************************end of file ************************************/

全部代碼51hei下載地址:
SNWL433 - change.7z (169.14 KB, 下載次數(shù): 50)


回復(fù)

使用道具 舉報

ID:342653 發(fā)表于 2022-3-1 10:11 | 顯示全部樓層
您好,請問一下RF_TR是哪一個腳呀
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
欧美一区免费| 欧美一区二区三区视频免费| 精品一区av| 91精品久久久| 天堂在线网站| 中文无码精品一区二区三区| 亚洲av无日韩毛片久久| 日韩国产精品一区二区| 久久人人97超碰精品888| 欧美日韩一级黄| 国产欧美综合在线观看第十页| 亚洲欧美综合| 亚州一区二区| 成人性生交大片免费看网站| videoxxxx另类日本极品| 久操久操久操| 中文字幕男人天堂| 久久人妻无码aⅴ毛片a片app| 天天操天天摸天天爽| 美媛馆国产精品一区二区| 欧洲精品在线视频| 中文国产亚洲喷潮| 欧洲在线/亚洲| 国产精品欧美一级免费| 韩国欧美国产一区| 亚洲经典一区| 三级小说欧洲区亚洲区| 日韩欧美少妇| 人妖欧美1区| 色哟哟在线观看| ass大特写| 国产又白又嫩又紧又爽18p| 国产免费视频一区二区三区| 久久久久久久久久一区二区三区| 国产一级二级在线观看| 色国产在线视频| 97中文字幕在线| 欧美日韩国产综合视频在线| 亚洲精品美腿丝袜| 国产福利一区二区三区| 男女精品网站| 欧美日韩国产精品一区二区亚洲| 亚洲第一论坛sis| 国产一区一区| 素人一区二区三区| 交100部在线观看| 超碰在线免费播放| 黄色美女网站在线观看| 中文字字幕在线中文乱码电影| 2018狠狠干| 免费日本黄色| 污视频网站入口| 欧美日韩亚洲国内综合网| 亚洲精品18p| 在线观看国产成人| 九九九在线观看| 久久精品www人人爽人人| 色哟哟精品观看| 风间由美一二三区av片| 国产不卡一二三| 亚洲色偷偷色噜噜狠狠99网 | 久久久久亚洲AV| 国产精品视频在| 男人舔女人下部高潮全视频| 国产精品一级黄片| 麻豆精品免费视频| av永久免费观看| 免费网站在线高清观看| 国产三级aaa| 欧美成人国产精品高潮| 久草视频手机在线观看| 国产无套粉嫩白浆内谢| 精品深夜av无码一区二区老年| 国产精品成人免费观看| 精品一区二区三区人妻| 亚洲视频免费播放| 久久久久久久久久成人| 国产一区二区麻豆| 丰满少妇被猛烈进入| 欧美黄色一级片视频| 国产在线播放观看| 国产91美女视频| 欧美亚洲另类色图| 国产一线二线三线在线观看| 天天干天天玩天天操| 婷婷激情综合五月天| 亚洲成a人无码| 五月天综合视频| 少妇影院在线观看| 在线免费观看一级片| 后入内射欧美99二区视频| 久热免费在线视频| 日本亲与子乱a| 国产黄视频在线观看| 午夜影院在线免费观看| 国产美女福利在线| 欧美片第一页| 动漫av一区| 中文不卡在线| 奇米777欧美一区二区| 成人免费视频国产在线观看| 国产精品污www在线观看| 亚洲一区在线电影| 91精品国产综合久久久久久久久久| 亚洲精品久久久久中文字幕欢迎你 | 亚洲日本黄色| 免费成人美女在线观看.| 国产精品资源在线观看| 中文av一区二区| 欧美午夜片在线免费观看| 欧美日韩免费高清一区色橹橹 | 97影院在线观看| 国产福利小视频在线| 亚洲国产福利视频| 狠狠色成人综合网图片区 | 日韩欧乱色一区二区三区在线 | 欧美性猛交xxxx| 日韩女优视频免费观看| 亚洲一级一级97网| 国产精品igao视频| 欧美第一黄网| 亚洲国产精品毛片av不卡在线| 中文字幕一区二区人妻电影丶| 黑鬼狂亚洲人videos| 中文字幕第2页| 久久精品免视着国产成人 | 中文字幕国产视频| h片免费观看| 日本在线观看大片免费视频| 色悠久久久久综合先锋影音下载 | 欧美久久久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 欧美激情第一页xxx| 91在线在线观看| 婷婷五月综合缴情在线视频| 青青草成人免费视频| 日本黄色中文字幕| 国产精品jvid在线观看| 色就是色亚洲色图| 欧美黄页在线免费观看| 狠狠入ady亚洲精品经典电影| 不卡视频在线观看| 欧美性猛片aaaaaaa做受| 久久av.com| 国产一区二区精品免费| www.欧美日本| 黄色在线观看免费| 综合区小说区图片区在线一区| 日韩加勒比系列| 99re66热这里只有精品4| 欧美新色视频| av激情成人网| 99视频+国产日韩欧美| 国产喷白浆一区二区三区| 欧美日韩电影一区| 777精品视频| 伊人狠狠色丁香综合尤物| 国产香蕉精品视频| 亚洲一区 中文字幕| 九九热在线视频| av手机在线观看| 欧美二区视频| 亚洲欧美另类综合偷拍| 一区二区欧美激情| 日本高清久久一区二区三区| 国产白袜脚足j棉袜在线观看| 国产一区二区在线视频聊天| 福利在线白白| av在线播放一区二区| 日本伊人色综合网| 色一情一乱一乱一91av| 性亚洲最疯狂xxxx高清| 国产激情片在线观看| 亚洲午夜精品久久久久久高潮| 男人天堂一区二区| 日韩a级作爱片一二三区免费观看| 亚洲乱码一区| 国产成人精品午夜视频免费| 欧美一区二区精品| 91久久精品在线| 欧美成人手机在线视频| 伊人成人在线观看| 激情视频免费观看在线| 精品国产一区二区三区不卡蜜臂| 成人的网站免费观看| 日韩精品电影网| 视频一区二区精品| 男女性高潮免费网站| 九色91偷拍| 黑人精品一区| 九九精品视频在线看| 欧美xingq一区二区| 成人啪啪免费看| 精产国品一二三区| 亚洲成年电人电影网站| 日本美女久久久| 最新在线中文字幕| 桥本有菜亚洲精品av在线| 深夜激情久久| 91亚洲男人天堂| 一本色道久久综合狠狠躁篇怎么玩| 色一情一乱一伦一区二区三欧美 | 亚洲最新合集| 国产成人调教视频在线观看| 亚洲国产精品成人综合色在线婷婷| 最近2019免费中文字幕视频三| 青青草原网站在线观看| 久久久黄色大片| 国产真实乱偷精品视频| 福利电影导航| 欧美在线观看视频一区| 亚洲高清一区二区三区| 欧美专区国产专区| 日韩久久久久久久久久久| 美女禁区视频免费观看精选| 91九色国产在线播放| 九九九久久久精品| 国产性色av一区二区| 妞干网在线观看视频| 国产农村妇女毛片精品| 菠萝菠萝蜜在线视频免费观看| 亚洲一区二区毛片| 亚洲第一精品夜夜躁人人爽| 亚洲区一区二区三区| 国产亚洲欧美在线精品| 国产三级在线免费| 丝袜诱惑亚洲看片| 亚洲人成绝费网站色www | 国产精品无码在线播放| 四虎影视国产在线视频| 久久99精品久久久| 中文精品99久久国产香蕉| 欧美aⅴ在线观看| 日本高清视频免费看| 麻豆国产在线| 久久久久久久久久久久久久久99| 69影院欧美专区视频| 99久久人妻精品免费二区| 日本免费三片免费观看| 在线视频亚洲专区| 日本高清无吗v一区| 欧美国产视频在线观看| 亚洲大片免费观看| 午夜影院免费在线| 91网站视频在线观看| 日本精品免费观看| av网站免费在线看| 在线观看污网站| 日本中文字幕一区| 久久亚洲一区二区三区四区五区高| 国产无色aaa| 成年网站免费观看| 午夜影院在线免费观看| 在线成人www免费观看视频| 亚洲二区在线播放视频| 欧美黄色一级片视频| 国产精品一区二区午夜嘿嘿嘿小说 | 国内精品麻豆| 亚洲理论电影| 91.麻豆视频| 男女视频网站在线观看| 一本大道久久精品| 欧美久久香蕉| 6080国产精品一区二区| 亚洲熟妇无码一区二区三区导航| 日韩欧美一区二区三区视频 | 伊人av在线播放| 亚州福利视频| 亚洲欧美日韩专区| 蜜月aⅴ免费一区二区三区 | 男人艹女人网站| 亚洲日韩视频| 久久视频这里只有精品| 午夜理伦三级做爰电影| 在线观看av网| 国产成人av在线影院| 国产日韩在线精品av| 欧美 日韩 精品| 亚洲欧美在线成人| 色94色欧美sute亚洲线路二| 日本欧美视频在线观看| xxxx性欧美黑人| 今天的高清视频免费播放成人| 日韩一区二区三区在线播放| 精品无码人妻一区二区免费蜜桃| 成人影院免费观看| 国产免费成人在线视频| 欧美日韩一区在线播放| 午夜av入18在线| 国产乱码精品一区二区三区四区| 亚洲精品美女久久| 国产精品无码网站| 中国日本在线视频中文字幕| www国产亚洲精品久久麻豆| 99理论电影网| 亚洲精品一区二区三区四区| 天天躁日日躁狠狠躁欧美巨大小说| 亚洲第一福利视频| 成人免费无遮挡无码黄漫视频| 免费在线看黄网站| 亚洲男同性视频| 国产精品久久久久久久久电影网| 免费看污网站| av激情在线| 精品久久久久久久久中文字幕| 国产自产在线视频| 97cao在线| 国产成人99久久亚洲综合精品| 成人av中文| 影音先锋在线中文字幕| 欧美三级网页| 亲子乱一区二区三区电影| 成人免费视频国产免费| 精品按摩偷拍| 中文字幕日韩欧美精品在线观看| 五月综合色婷婷| 九九九伊在线综合永久| 日韩免费在线观看| 中文字幕 自拍| 伊人久久视频| 欧美一级日韩一级| 30一40一50老女人毛片| h片视频在线观看| 欧美影视一区二区三区| 中文字幕18页| 懂色av一区| 91精品国产综合久久香蕉的特点| 亚洲精品视频大全| 黄毛片在线观看| 日韩欧美国产系列| 影音先锋男人资源在线观看| 日韩精品免费观看视频| 亚洲精品久久久一区二区三区 | 日日噜噜夜夜狠狠| 99reav在线| 疯狂欧美牲乱大交777| 女王人厕视频2ⅴk| 国产后进白嫩翘臀在线观看视频| 欧美人妖巨大在线| 久久久久久成人网| www久久久| 精品国产视频在线| 天天操天天干天天摸| av中字幕久久| 国产精品免费久久久久影院| 午夜黄色小视频| 日韩精品午夜视频| 热re99久久精品国产99热 | 欧美激情1区| 成人免费视频网址| 精品欧美日韩一区二区| 国产精品综合一区二区三区| 手机福利在线视频| 亚洲欧洲闷骚av少妇影院 | 粉嫩嫩av羞羞动漫久久久| 一区不卡字幕| 中文在线中文字幕| 午夜精品福利一区二区蜜股av| 国产情侣久久久久aⅴ免费| 自拍偷拍欧美视频| 中文字幕精品网| 国产剧情久久久| 欧美亚洲三区| 三级三级久久三级久久18| 8×8x拔擦拔擦在线视频网站| 亚洲在线中文字幕| 国产伦精品一区二区三区妓女| 国产麻豆精品| 欧美亚洲国产另类| 欧美日韩人妻精品一区在线| 成人日韩在线观看| www.午夜精品| 色呦呦视频在线| 国产精品伊人色| 黄色a级片免费| 精品一性一色一乱农村| 亚洲四色影视在线观看| 国产手机精品视频| 久久97超碰色| 久久精品国产精品亚洲色婷婷| 超碰个人在线| 亚洲天堂第二页| 亚洲第一天堂影院| 国产一区二区三区视频在线播放| 丰满少妇久久久| 888av在线视频| 色悠悠国产精品| 欧美77777| 成人精品电影在线观看| jizz欧美性11| 成人免费网站www网站高清| 欧美激情图片区| 国产成在线观看免费视频| 最新热久久免费视频| 日本少妇高潮喷水xxxxxxx| 亚洲资源网站| 精品欧美日韩| 国产youjizz在线| 国产视频丨精品|在线观看| 午夜精品小视频|