⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radio.c

📁 cc1110,cc2510透传代码,IAR环境的
💻 C
字号:
/*-------------------------------------*
 *	             头文件               *
 *---------------------------------------------------------------------------*/

#include "includes.h"

/*-------------------------------------*
 *	           变量定义               *
 *---------------------------------------------------------------------------*/

byte  __xdata radioPktBuffer[ 1 + PACKET_LENGTH + 2];
int16 perRssiOffset;             	

/*-------------------------------------*
 *	           函数定义               *
 *---------------------------------------------------------------------------*/

void radioConfigure(uint32 dataRate, uint32 frequency)
{
    //Turning on crystal oscillator
    SET_MAIN_CLOCK_SOURCE(CRYSTAL);
    // Setting the frequency
    //halRfSetRadioFrequency(frequency);
    FREQ2 = 0x5D;   //Freqency : 2433Mhz
    FREQ1 = 0x93;
    FREQ0 = 0xB1;
     /**********************************************************************
     *                                                                     *
     * 250 kbps MSK  setup (for other data rates or modulation formats,    *
     * please see SmartRF Studio).                                         *
     *                                                                     *
      *********************************************************************/
    // Dynamic packet length and append status
    PKTLEN = 0xFF;
    PKTCTRL0 = 0x05;
    PKTCTRL1 = 0x04;
    // IF frequency
    FSCTRL1 = 0x0A;
    FSCTRL0 = 0x00;
    // filter BW, data rate,
    MDMCFG4 = 0x2D;
    MDMCFG3 = 0x3B;
    // Modulation format, detection level
    MDMCFG2 = 0x73;
    MDMCFG1 = 0x22;
    MDMCFG0 = 0xF8;
    // Deviation setting
    DEVIATN = 0x00;
    // Calibration synth
    MCSM2 = 0x07;
    MCSM1 = 0x30;
    MCSM0 = 0x10;
    // Frequency offset compensation configuration
    FOCCFG = 0x1D;
    // Bit synchronization
    BSCFG = 0x1C;
    // AGC settings
    AGCCTRL2	= 0xC7;
    AGCCTRL1	= 0x00;
    AGCCTRL0	= 0xB2;
      // Front end settings (from SmartRf04)
    FREND1 = 0xB6;
    FREND0 = 0x10;
      // Synth calibration
    FSCAL3 = 0xEA;
    FSCAL2 = 0x0A;
    FSCAL1 = 0x00;
    FSCAL0 = 0x11;
      // From Smart RF Studio
    FOCCFG = 0x1D;
    BSCFG = 0x1C;
//    FSTEST = 0x59;
//    PTEST = 0x7F;
//    AGCTEST = 0x3F;
    TEST2 = 0x88;
    TEST1 = 0x31;
    TEST0 = 0x09;
    // Output power
    PA_TABLE0 = 0xFF;
    return;
}
/******************************************************************************
* @fn  halRfConfig
*
* @brief
*      This function configures the radio for simple send and receive operation.
*      Advanced IEEE 802.15.4 functionality such as Address Decoding, AutoAck
*      etc is not employed. CRC value is automatically calculated to enable
*      detection of packet corruption. The desired frequency is set. The
*      function returns TRUE if the configuration is successful.
*
* Parameters:
*
* @param  UINT32 frequency
*         The desired Radio Frequency in kHz.
*
* @return BOOL
*         Returns TRUE if the configuration is successful and FALSE otherwise.
*
******************************************************************************/
void halRfConfig(void)
{        
#if(chip == 1110)
          PA_TABLE0 = 0xC0;
          FREQ2 = 0x12;  //Freqency : 470Mhz
          FREQ1 = 0x13;
          FREQ0 = 0xB1;
#endif
#if(chip == 2510)
          PA_TABLE0 = 0xFF;
          FREQ2 = 0x5D;   //Freqency : 2433Mhz
          FREQ1 = 0x93;
          FREQ0 = 0xB1;
#endif
          PKTLEN = 0xFF;
          PKTCTRL1 = 0x04;
          PKTCTRL0 = 0x05;     //Append status
          FSCTRL1  = 0x06;     //20kbps
          FSCTRL0  = 0x00;     //20kbps
          CHANNR   = 0x02;
          MDMCFG4  = 0xC9;     //20kbps
          MDMCFG3  = 0x93;     //20kbps
          MDMCFG2  = 0x03;     //20kbps
          MDMCFG1  = 0x22;     //20kbps
          MDMCFG0  = 0xF8;     //20kbps
          DEVIATN  = 0x34;     //20kbps
          MCSM2    = 0x07;     //20kbps
          MCSM1    = 0x30;     //20kbps
          MCSM0    = 0x10;     //20kbps
          FOCCFG   = 0x16;     //20kbps
          BSCFG    = 0x6C;     //20kbps
          AGCCTRL2 = 0x43;     //20kbps
          AGCCTRL1 = 0x40;     //20kbps
          AGCCTRL0 = 0x91;     //20kbps
          FREND1 = 0x56;       //20kbps
          FREND0 = 0x10;       //20kbps
          FSCAL3 = 0xA9;       //20kbps
          FSCAL2 = 0x0A;       //20kbps
          FSCAL1 = 0x00;       //20kbps
          FSCAL0 = 0x11;       //20kbps
          FSTEST = 0x59;       //20kbps
          PTEST = 0x3F;        //20kbps
          AGCTEST = 0xE7;      //20kbps
          TEST2=0x81;
          TEST1=0x35;
          TEST0=0x0B;
//--------------------------------------------------------------
      // Calibrating synth.
      SIDLE();
      SCAL();
      while(MARCSTATE != 0x01);
         RFTXRXIF = 0;
   return;
}



bool pktCheckValidity(void)
{
  // Check if received packet has correct CRC
  if (pktCheckCrc())
  {
      return true;
  }
  // For  wrong CRC
  else
  {
      return false;
  }
}

bool pktCheckCrc(void)
{
    // Check if CRC_OK bit (bit 7) in the second status byte received is set
    if(radioPktBuffer[radioPktBuffer[0] + 2] & 0x80){
        radioPktBuffer[radioPktBuffer[0] + 2] = 0x00;   // Clear status byte in buffer
        return true;
    }
    else {
        return false;
    }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -