?? +?
字號:
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//************************************************************************************
// Config bitbang pins
P1DIR |= SPI_SIMO + SPI_CLK + CSn_PIN + BIT6; //CS CLK SIMO(GDO1)為輸出
P1DIR &= ~( SPI_SOMI +GDO0_PIN); //SOMI GDO0 GDO2 SW 為輸入
P1OUT &= ~(SPI_SIMO + SPI_CLK ) ; //CLK =0,SPI_SIMO= 0;
//*************************************************************************
P1OUT |= CSn_PIN; //CSn_PIN =1
P4DIR|=BIT0+BIT1;
P4OUT|=BIT0+BIT1;
}
const unsigned char ConfigurationCCxxx0_433[47]=
{
//Data :Reg: Name (x = non-default)
0x29, //00 IOCFG2 (x)
0x2E, //01 IOCFG1
0x06, //02 IOCFG0D (x)
0x47, //03 FIFOTHR (x)
0xD3, //04 SYNC1
0x91, //05 SYNC0
LENGTH, //06 PKTLEN (x) //最大長度 PKTLEN (x)
0x04, //07 PKTCTRL1 (x) //有地址,廣播地址為0x00
0x05, //08 PKTCTRL0 (x) // CRC calculation in TX and CRC check in RX enabled
//可變長度
0x00, //09 ADDR (x) //設自己的地址
0x00, //0A CHANNR (x)
0x06, //0B FSCTRL1 (x) //*電流與靈敏度有關 IF Frequency -> FREQ_IF[4:0] => 152.34 kHz
0x00, //0C FSCTRL0 (x)
0x10, //0D FREQ2 (x)
0xa7, //0E FREQ1 (x) //f = 432.999817@0x10a762
0x62, //0F FREQ0 (x)
0xCA, //10 MDMCFG4 (x)
0x83, //11 MDMCFG3 (x)
0x12, //12 MDMCFG2 (x) " 12 == 16/16 sync word bits detected "
0x22, //13 MDMCFG1 (x) " Number of preamble bytes == 4"
0xF8, //14 MDMCFG0 (x)
0x34, //15 DEVIATN (x)
//**************************************************************************************************************************************************************
0x07, //16 MCSM2
//*低功耗有關 2008-05-24 改為0x13
// "bit4(RX_TIME_RSSI) ==1 is Direct RX termination based on RSSI measurement (carrier sense)."
// ==1 :使能載波檢測,即沒有載波信號時,立即退出RX狀態
// ==0 : 直到RX_TIME溢出,退出RX狀態
// "bit3(RX_TIME_QUAL) ==1 is When the RX_TIME timer expires,the chip checks if either sync word is found or PQI is set.
// ==0 is .............................., the chip checks if sync word is found.
//==1: RX_TIME溢出時如果收到 sync word 或者PQI is set,則繼續接收 ,否則退出接收狀態
//==0: RX_TIME溢出時如果收到 sync word,則繼續接收 ,否則退出接收狀態 2008-05-24改為0
// "bit2--0 == 6 : 0.195% @ WOR_RES=0"
// "bit2--0 == 3 : 2.441ppm @ WOR_RES=1"
//*************************************************************************************************************
0x30, //17 MCSM1 //接收和發射后進入空閑狀態
0x18, //18 MCSM0 (x) // 0x18 == Calibration from IDLE to TX/Rx
0x16, //19 FOCCFG (x)
0x6C, //1A BSCFG (x)
//****************************************************************************************************
0x43, //1B AGCCTRL2 (x)
//bit7-6 ( MAX_DVGA_GAIN[1:0] ) == 01: The highest gain setting can not be used
//bit5-3 ( MAX_LNA_GAIN[2:0] ) == 000: Maximum possible LNA + LNA 2 gain
//bit2-0 ( MAGN_TARGET[2:0] ) == 011: 33 dB == Target amplitude from channel filter
//******************************************************************************************************
0x40, //1C AGCCTRL1 (x)
//bit7 == 0: 固定為0
//bit6 == 1: 固定為1
//bit5-4 ( CARRIER_SENSE_REL_THR[1:0] ) == 00 : Relative carrier sense threshold disabled
//bit3-0 ( CARRIER_SENSE_ABS_THR[3:0] ) == 011 : 3 dB above MAGN_TARGET setting
//當大于 " MAGN_TARGET setting " 3dB 時 ,表示有載波
//2008-05-20改為0x10 先測試
//****************************************************************************************************
0x91, //1D AGCCTRL0 (x)
0x0a,//0xff, //1E WOREVT1 // t_E0 = (750/26000000)*EVT0 = 1890.4ms
0x94,//0xff, //1F WOREVT0 // t_E0 = (750/26000000)*EVT0 *32 = 2500ms 2008-05-24
//**************************************************************************************************
0x39,//0x38, //20 WORCTRL
//bit7 ==0: 使能RC, When written to 0, automatic initial calibration will be performed,
//bit6-4: EVENT1[]= 3 is 12
//bit3 ==1: Enables the RC oscillator calibration.
//bit2-0 == 0: WOR_RES=0
//bit2-0 == 1: WOR_RES=1 2008-05-24
//*************************************************************************************************
0x56, //21 FREND1 (x)
0x10, //22 FREND0 (x) //選擇功率使用的pdat值//!!!出錯會引起輸出功率為0
0xE9, //23 FSCAL3 (x)
0x2A, //24 FSCAL2 (x)
0x00, //25 FSCAL1 (x)
0x1F, //26 FSCAL0 (x)
0x41, //27 RCCTRL1
0x00, //28 RCCTRL0
0x59, //29 FSTEST (x)
0x7F, //2A PTEST
0x3F, //2B AGCTST
0x81, //2C TEST2 (x)
0x35, //2D TEST1 (x)
0x09 //2E TEST0 (x)
};
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
void writeRFSettings(void)
{
unsigned char i;
for(i=0; i<47; i++)
{
SPIWriteReg(i,ConfigurationCCxxx0_433[i]);
}
}
unsigned char txBuffer[LENGTH+2];
char x;
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
//void TxData(unsigned length,unsigned char x)
void TxData(unsigned char x)
{
//發送數據格式--------------------------------------------------------------
// 數據長度 地址 實際數據
//--------------------------------------------------------------------------
//unsigned i;
unsigned int length=4;
P1IE &= ~GDO0_PIN; //關閉GDO0中斷
//--------------------------------------------------------------------------
txBuffer[0] = 5; //數據長度 == (數據+地址)
txBuffer[1] = 1;
txBuffer[2] = ADDR_VAL1;
// for(i=3; i<length+1; i++ )
// {
txBuffer[3] = x; //數據
// }
//--------------------------------------------------------------------------
SPIStrobe(CCxxx0_SFTX); //刷新cc1101的buffer;
SPIWriteBurstReg(CCxxx0_TXFIFO, txBuffer, length+1); //寫數據到cc1101的buffer;
SPIStrobe(CCxxx0_STX); // 進入發射狀態
while (!( P1IN& GDO0_PIN)); // 等待GDO0置高,置高表示數據報頭已經發送
while ( P1IN& GDO0_PIN); // 等待GDO0置低,置低表示數據報已經發送完成
// P1IFG &= ~GDO0_PIN; // After pkt TX, this flag is set, Clear it.
// P1IE |= GDO0_PIN;//開GDO0中斷
SPIStrobe(CCxxx0_SIDLE);// 進入空閑狀態
}
unsigned int Temp;
void main (void)
{
//unsigned char len;
Initialize_CPU();
//--------------------------------------------------------------------------
PowerupResetCCxxxx(); // Reset CCxxxx
writeRFSettings(); // Write RF settings to config reg
SPIWriteReg(CCxxx0_PATABLE , PA_VALE);//Write PATABLE,設置輸出功率
//--------------------------------------------------------------------------
_EINT(); //使能全局中斷
while(1)
{
SPIStrobe(CCxxx0_SIDLE); //cc1101退出SWOR
P4OUT &= ~BIT0; //熄燈
// len =5; //設置要發射的數據長度
// TxData(len); //發射數據
for(Temp = 0;Temp<0x1000;Temp++); //延時
TxData(6);
for(Temp = 0;Temp<0xFFFE;Temp++); //延時
for(Temp = 0;Temp<0x2FFE;Temp++); //延時
for(Temp = 0;Temp<0x1000;Temp++); //延時
for(Temp = 0;Temp<0x2FFE;Temp++); //延時
TxData(5);
for(Temp = 0;Temp<0x1000;Temp++);//延時
TxData(4);
for(Temp = 0;Temp<0x1000;Temp++); //延時
TxData(3);
for(Temp = 0;Temp<0x1000;Temp++); //延時
TxData(2);
for(Temp=0;Temp<0x1000;Temp++);
// for(Temp = 0;Temp<0xFFFE;Temp++); //延時
// for(Temp = 0;Temp<0xFFFE;Temp++); //延時
// for(Temp = 0;Temp<0xFFFE;Temp++); //延時
// for(Temp = 0;Temp<0xFFFE;Temp++); //延時
P4OUT |= BIT0; //開燈
}
}
//------------------------------------------------------------------------------
//#pragma vector=PORT1_VECTOR
//__interrupt void p1_ISR (void)
//{
// RxFlag = 0x11;
// P1IFG = 0x00;
//}
//------------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -