예제 #1
0
/*******************************************************************************
 * @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 );
}
예제 #2
0
// 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.
}
예제 #3
0
/*******************************************************************************
 * @fn     cc2500_set_address( uint8_t );
 * @brief  Set device address
 * ****************************************************************************/
void cc2500_set_address( uint8_t address )
{
  cc_write_reg( TI_CCxxx0_ADDR, address );
}
예제 #4
0
/*******************************************************************************
 * @fn     cc2500_set_channel( uint8_t );
 * @brief  Set device channel
 * ****************************************************************************/
void cc2500_set_channel( uint8_t channel )
{
  cc_write_reg( TI_CCxxx0_CHANNR, channel );
}
예제 #5
0
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;
}