/******************************************************************************* * @fn cc2500_disable_addressing( ); * @brief Disable address checking * ****************************************************************************/ void cc2500_disable_addressing() { uint8_t tmp_reg; tmp_reg = ( cc_read_reg( TI_CCxxx0_PKTCTRL1 ) & ~0x03 ); cc_write_reg( TI_CCxxx0_PKTCTRL1, tmp_reg ); }
// Product = CC2500 // Crystal accuracy = 40 ppm // X-tal frequency = 26 MHz // RF output power = 0 dBm // RX filterbandwidth = 540.000000 kHz // Deviation = 0.000000 // Return state: Return to RX state upon leaving either TX or RX // Datarate = 250.000000 kbps // Modulation = (7) MSK // Manchester enable = (0) Manchester disabled // RF Frequency = 2433.000000 MHz // Channel spacing = 199.950000 kHz // Channel number = 0 // Optimization = Sensitivity // Sync mode = (3) 30/32 sync word bits detected // Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX // CRC operation = (1) CRC calculation in TX and CRC check in RX enabled // Forward Error Correction = (0) FEC disabled // Length configuration = (1) Variable length packets, packet length configured by the first received byte after sync word. // Packetlength = 255 // Preamble count = (2) 4 bytes // Append status = 1 // Address check = Address check and 0 (0x00) broadcast // CRC autoflush = true // Device address = 1 // GDO0 signal selection = ( 0x06 ) Asserts when sync word has been sent / received, and de-asserts at the end of the packet // GDO2 signal selection = ( 0x0E ) Carrier sense. High if RSSI level is above threshold. void writeRFSettings(void) { // Write register settings cc_write_reg(TI_CCxxx0_IOCFG2, 0x0E); // GDO2 output pin config. cc_write_reg(TI_CCxxx0_IOCFG0, 0x06); // GDO0 output pin config. cc_write_reg(TI_CCxxx0_PKTLEN, 0x3D); // Packet length. cc_write_reg(TI_CCxxx0_PKTCTRL1, 0x0E); // Packet automation control. cc_write_reg(TI_CCxxx0_PKTCTRL0, 0x05); // Packet automation control. cc_write_reg(TI_CCxxx0_ADDR, 0x01); // Device address. cc_write_reg(TI_CCxxx0_CHANNR, 0x00); // Channel number. cc_write_reg(TI_CCxxx0_FSCTRL1, 0x07); // Freq synthesizer control. cc_write_reg(TI_CCxxx0_FSCTRL0, 0x00); // Freq synthesizer control. cc_write_reg(TI_CCxxx0_FREQ2, 0x5D); // Freq control word, high byte cc_write_reg(TI_CCxxx0_FREQ1, 0x93); // Freq control word, mid byte. cc_write_reg(TI_CCxxx0_FREQ0, 0xB1); // Freq control word, low byte. cc_write_reg(TI_CCxxx0_MDMCFG4, 0x2D); // Modem configuration. cc_write_reg(TI_CCxxx0_MDMCFG3, 0x3B); // Modem configuration. cc_write_reg(TI_CCxxx0_MDMCFG2, 0x73); // Modem configuration. cc_write_reg(TI_CCxxx0_MDMCFG1, 0x22); // Modem configuration. cc_write_reg(TI_CCxxx0_MDMCFG0, 0xF8); // Modem configuration. cc_write_reg(TI_CCxxx0_DEVIATN, 0x00); // Modem dev (when FSK mod en) cc_write_reg(TI_CCxxx0_MCSM1 , 0x2F); //MainRadio Cntrl State Machine cc_write_reg(TI_CCxxx0_MCSM0 , 0x18); //MainRadio Cntrl State Machine cc_write_reg(TI_CCxxx0_FOCCFG, 0x1D); // Freq Offset Compens. Config cc_write_reg(TI_CCxxx0_BSCFG, 0x1C); // Bit synchronization config. cc_write_reg(TI_CCxxx0_AGCCTRL2, 0xC7); // AGC control. cc_write_reg(TI_CCxxx0_AGCCTRL1, 0x00); // AGC control. cc_write_reg(TI_CCxxx0_AGCCTRL0, 0xB2); // AGC control. cc_write_reg(TI_CCxxx0_FREND1, 0xB6); // Front end RX configuration. cc_write_reg(TI_CCxxx0_FREND0, 0x10); // Front end RX configuration. cc_write_reg(TI_CCxxx0_FSCAL3, 0xEA); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSCAL2, 0x0A); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSCAL1, 0x00); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSCAL0, 0x11); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSTEST, 0x59); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_TEST2, 0x88); // Various test settings. cc_write_reg(TI_CCxxx0_TEST1, 0x31); // Various test settings. cc_write_reg(TI_CCxxx0_TEST0, 0x0B); // Various test settings. }
/******************************************************************************* * @fn cc2500_set_address( uint8_t ); * @brief Set device address * ****************************************************************************/ void cc2500_set_address( uint8_t address ) { cc_write_reg( TI_CCxxx0_ADDR, address ); }
/******************************************************************************* * @fn cc2500_set_channel( uint8_t ); * @brief Set device channel * ****************************************************************************/ void cc2500_set_channel( uint8_t channel ) { cc_write_reg( TI_CCxxx0_CHANNR, channel ); }
uint8_t writeRFSettings(void) { uint8_t temp = 0; uint8_t returnValue = 0; // FIXME Add uscib0 files // Write register settings do{ cc_write_reg(TI_CCxxx0_IOCFG2, GDO2_PIN_SETTING); // GDO2 output pin config. temp = cc_read_reg(TI_CCxxx0_IOCFG2); if(temp != GDO2_PIN_SETTING) { while(1) { temp = cc_read_reg(TI_CCxxx0_IOCFG2); } returnValue = 1; break; } cc_write_reg(TI_CCxxx0_IOCFG0, GDO0_PIN_SETTING); // GDO0 output pin config. temp = cc_read_reg(TI_CCxxx0_IOCFG0); //cc_write_reg(TI_CCxxx0_IOCFG0, 0x01); // GDO0 output pin config. //cc_write_reg(TI_CCxxx0_PKTLEN, 0x3D); // Packet length. cc_write_reg(TI_CCxxx0_PKTLEN, 0x7); // Packet length. //cc_write_reg(TI_CCxxx0_PKTCTRL1, 0x4); // Packet automation control. // Was 0xE cc_write_reg(TI_CCxxx0_PKTCTRL1, CRC_AUTO_FLUSH); // Packet automation control. // Was 0xE temp = cc_read_reg(TI_CCxxx0_PKTCTRL1); //cc_write_reg(TI_CCxxx0_PKTCTRL0, 0x05); // Packet automation control. cc_write_reg(TI_CCxxx0_PKTCTRL0, CRC_EN); // Packet automation control. temp = cc_read_reg(TI_CCxxx0_PKTCTRL0); cc_write_reg(TI_CCxxx0_ADDR, 0x00); // Device address. cc_write_reg(TI_CCxxx0_CHANNR, 0x00); // Channel number. cc_write_reg(TI_CCxxx0_FSCTRL1, 0x07); // Freq synthesizer control. temp = cc_read_reg(TI_CCxxx0_FSCTRL1); if(temp != 0x7) { while(1); returnValue = 1; break; } cc_write_reg(TI_CCxxx0_FSCTRL0, 0x00); // Freq synthesizer control. cc_write_reg(TI_CCxxx0_FREQ2, 0x5D); // Freq control word, high byte cc_write_reg(TI_CCxxx0_FREQ1, 0x93); // Freq control word, mid byte. cc_write_reg(TI_CCxxx0_FREQ0, 0xB1); // Freq control word, low byte. cc_write_reg(TI_CCxxx0_MDMCFG4, 0x2D); // Modem configuration. ////WAS 2D, determines data rate !!!!!!!!!!!!!!!!!!!!!! cc_write_reg(TI_CCxxx0_MDMCFG3, 0x3B); // Modem configuration. cc_write_reg(TI_CCxxx0_MDMCFG2, 0x73); // Modem configuration. // MSK(0x7), 32 bytes of SYNC (0x3) :0x73 cc_write_reg(TI_CCxxx0_MDMCFG1, 0x22); // Modem configuration. // cc_write_reg(TI_CCxxx0_MDMCFG0, 0xF8); // Modem configuration. cc_write_reg(TI_CCxxx0_DEVIATN, 0x00); // Modem dev (when FSK mod en) cc_write_reg(TI_CCxxx0_MCSM1 , 0x2F); //MainRadio Cntrl State Machine cc_write_reg(TI_CCxxx0_MCSM0 , 0x18); //MainRadio Cntrl State Machine cc_write_reg(TI_CCxxx0_FOCCFG, 0x1D); // Freq Offset Compens. Config cc_write_reg(TI_CCxxx0_BSCFG, 0x1C); // Bit synchronization config. cc_write_reg(TI_CCxxx0_AGCCTRL2, 0xC7); // AGC control. cc_write_reg(TI_CCxxx0_AGCCTRL1, 0x00); // AGC control. cc_write_reg(TI_CCxxx0_AGCCTRL0, 0xB2); // AGC control. cc_write_reg(TI_CCxxx0_FREND1, 0xB6); // Front end RX configuration. cc_write_reg(TI_CCxxx0_FREND0, 0x10); // Front end RX configuration. cc_write_reg(TI_CCxxx0_FSCAL3, 0xEA); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSCAL2, 0x0A); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSCAL1, 0x00); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_FSCAL0, 0x11); // Frequency synthesizer cal. /// changes with buad rate!!!!!!!!!!!!!!!!!!!!!!!!!! cc_write_reg(TI_CCxxx0_FSTEST, 0x59); // Frequency synthesizer cal. cc_write_reg(TI_CCxxx0_TEST2, 0x88); // Various test settings. cc_write_reg(TI_CCxxx0_TEST1, 0x31); // Various test settings. cc_write_reg(TI_CCxxx0_TEST0, 0x0B); // Various test settings. }while(0); return returnValue; }