void InitRadio(void) { // Set the High-Power Mode Request Enable bit so LPM3 can be entered // with active radio enabled PMMCTL0_H = 0xA5; PMMCTL0_L |= PMMHPMRE_L; PMMCTL0_H = 0x00; WriteRfSettings(&rfSettings); WriteSinglePATable(PATABLE_VAL); }
/* * Phy implementation functions */ void phy_init(void) { //Set radio state state = Idle; spi_init(); radioConfigureInterrupt(); //Reset the radio core ResetRadioCore(); //Write configuration WriteRfSettings(&rfSettings); last_tx_cfg.eirp=0; last_tx_cfg.spectrum_id = 0; last_tx_cfg.sync_word_class=0; }
void Init_cc1100(void) { int i; //ENCC1101; POWER_UP_RESET_CC1100(); //上电复位 delayms(20); WriteRfSettings(); //写入配置 // Set RX FIFO threshold halRfWriteReg(CC_FIFOTHR, FIFO_THRESHOLD); halRfWriteReg(CC_MCSM1, 0x33); /* TX完成后保持RX状态,(RESET:0x30) */ // Set GDO0 to be RX FIFO threshold signal halRfWriteReg(CC_IOCFG0, 0x00); // Set up interrupt on GDO0 //halDigioIntSetEdge(&pinGDO0, HAL_DIGIO_INT_RISING_EDGE); //halDigioIntConnect(&pinGDO0, &Rx_fifo_half_full); //halDigioIntEnable(&pinGDO0); // Set GDO2 to be packet received signal halRfWriteReg(CC_IOCFG2, 0x06); // Set up interrupt on GDO2 //halDigioIntSetEdge(&pinGDO2, HAL_DIGIO_INT_FALLING_EDGE); //halDigioIntConnect(&pinGDO2, &Rx_packet_recvd); //halDigioIntEnable(&pinGDO2); delayms(10); Spi_Write_Burst(CC_PATABLE,PaTabel,8); //功率配置 Spi_Write_Strobe(CC_SCAL); for(i=0; i<100; i++) Spi_Write_Strobe(CC_SNOP); Spi_Write_Strobe(CC_SIDLE); //进入空闲 Spi_Write_Strobe(CC_SFRX); //清空接受区 Spi_Write_Strobe(CC_SRX); //进入接收 rf_data.rf_state = RX_STATE_RX; _timer_rx_timeout = TIME_OUT; _flag_rx_timeout = FALSE; // Spi_Write_Strobe(CC_SPWD); //进入接收 //CSN_H; //上电拉高 }
void main() { system_init(buffer, sizeof(buffer), buffer, sizeof(buffer)); #if RF == CC1101 || RF == CC1120 spi_init(); #endif ResetRadioCore(); int p = ReadSingleReg(PARTNUM); log_print_string("PARTNUM 0x%x", p); p = ReadSingleReg(VERSION); log_print_string("VERSION 0x%x", p); log_print_string("started"); WriteRfSettings(&rfSettings); // WriteSingleReg(IOCFG2,0x0B); //GDO2 Output Pin Configuration // WriteSingleReg(IOCFG0,0x0C); //GDO0 Output Pin Configuration // WriteSingleReg(FIFOTHR,0x47); //RX FIFO and TX FIFO Thresholds // WriteSingleReg(PKTCTRL0,0x22); //Packet Automation Control // WriteSingleReg(FSCTRL1,0x08); //Frequency Synthesizer Control // WriteSingleReg(FREQ2,0x10); //Frequency Control Word, High Byte // WriteSingleReg(FREQ1,0xB1); //Frequency Control Word, Middle Byte // WriteSingleReg(FREQ0,0x3A); //Frequency Control Word, Low Byte // WriteSingleReg(MDMCFG4,0xCA); //Modem Configuration // WriteSingleReg(MDMCFG3,0x83); //Modem Configuration // WriteSingleReg(MDMCFG2,0xB0); //Modem Configuration // WriteSingleReg(DEVIATN,0x35); //Modem Deviation Setting // WriteSingleReg(MCSM0,0x18); //Main Radio Control State Machine Configuration // WriteSingleReg(FOCCFG,0x16); //Frequency Offset Compensation Configuration // WriteSingleReg(AGCCTRL2,0x43); //AGC Control // WriteSingleReg(WORCTRL,0xFB); //Wake On Radio Control // WriteSingleReg(FREND0,0x11); //Front End TX Configuration // WriteSingleReg(FSCAL3,0xE9); //Frequency Synthesizer Calibration // WriteSingleReg(FSCAL2,0x2A); //Frequency Synthesizer Calibration // WriteSingleReg(FSCAL1,0x00); //Frequency Synthesizer Calibration // WriteSingleReg(FSCAL0,0x1F); //Frequency Synthesizer Calibration // WriteSingleReg(TEST2,0x81); //Various Test Settings // WriteSingleReg(TEST1,0x35); //Various Test Settings // WriteSingleReg(TEST0,0x09); //Various Test Settings // WriteSingleReg(RSSI,0x80); //Received Signal Strength Indication // WriteSingleReg(MARCSTATE,0x01); //Main Radio Control State Machine State // WriteSingleReg(VCO_VC_DAC,0x94);//Current Setting from PLL Calibration Module //phy_keep_radio_on(true); Strobe(RF_SIDLE); Strobe(RF_SFTX); //uint8_t spectrum_id[2] = { 4, 0 }; //phy_translate_and_set_settings(spectrum_id, 0); //set_length_infinite(false); //WriteSingleReg(PKTLEN, 7); Strobe(RF_STX); //WriteSingleReg(PKTCTRL0, 0x22); //WriteSingleReg(FIFOTHR, RADIO_FIFOTHR_FIFO_THR_17_48); //WriteBurstReg(RF_TXFIFOWR, packet, 7); /* ResetRadioCore(); log_state(); Strobe(RF_SIDLE); WriteRfSettings(&rfSettings); log_print_string("wrote settings"); log_state(); Strobe(RF_STX); log_print_string("strobed TX"); */ int i; for(i = 0; i < 50;i++) { log_state(); } while(1); }