版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
相關(guān)電路#include"main.h"#include"cc1101.h"#include"lcd1602.h"voidmain(void){ inti; UCHARleng=0; //待接收字節(jié)長度 UCHARTxBuf[8]={0}; //8字節(jié),如果需要更長的數(shù)據(jù)包,請正確設(shè)置 UCHARRxBuf[8]={0}; //接收緩存區(qū) InitLcd1602(); WriteAddressLcd1602(1,0); WriteCharForLCD1602("TheCC1101Test!"); WriteAddressLcd1602(2,0); WriteCharForLCD1602("DesignbyXuJie!"); Delaynms(6000); ClearLcd1602(); CpuInit(); POWER_UP_RESET_CC1100(); halRfWriteRfSettings(); halSpiWriteBurstReg(CCxxx0_PATABLE,PaTabel,8); TxBuf[0]=1; TxBuf[1]=1; TxBuf[2]=1; TxBuf[3]=1; TxBuf[4]=1; TxBuf[2]=1; TxBuf[6]=1; TxBuf[7]=1; halRfSendPacket(TxBuf,8); //TransmitTxbufferdata delay(6000); InitTimer0(); //顯示格式//Bulboverturnat // *****SEClater! WriteAddressLcd1602(1,0); WriteCharForLCD1602("Bulboverturnat"); WriteAddressLcd1602(2,6); WriteCharForLCD1602("SEClater!"); while(1) { led=1;//指示燈一直熄滅,只有接收到數(shù)據(jù)時才閃爍 leng=8;//預(yù)計接受8bytes ResultToDisplay(SetTime); WriteAddressLcd1602(2,0); for(i=0;i<5;i++) WriteLcd1602(1,DisplayResult[i]); if(halRfReceivePacket(RxBuf,&leng)) { if( RxBuf[1]==1) //確認(rèn),開始滅定時 { led=0; TR0=0; TR1=1; } if( RxBuf[2]==1) { //確認(rèn),開始亮定時 led=0; TR0=1; TR1=0; } if( RxBuf[3]==1) //時間加 { led=0; SetTime++; } if( RxBuf[4]==1) //時間減 { led=0; SetTime--; } if( RxBuf[5]==1) //燈亮 { led=0; bulb=0; } if( RxBuf[6]==1) //燈滅 { led=0; bulb=1; } delay(1000); } RxBuf[1]=0xff; //接收正確數(shù)據(jù)后復(fù)位數(shù)據(jù),防止舊數(shù)據(jù)對新數(shù)據(jù)影響 RxBuf[2]=0xff; RxBuf[3]=0xff; RxBuf[4]=0xff; RxBuf[5]=0xff; RxBuf[6]=0xff; } }/*--------------------------------------------- 定時器0函數(shù):控制燈定時一定時間后點亮---------------------------------------------*/voidTimer0()interrupt1{ TH0=(65536-50000)/256; //50ms定時,定時20次,12M晶振約為1s TL0=(65536-50000)%256; count0++; if(20==count0) { count0=0; time0++; if(time0==SetTime) { time0=0; led=0; bulb=0; //定時時間到,燈亮 } }}/*--------------------------------------------- 定時器1函數(shù):控制燈點亮?xí)r定時一段時間后熄滅---------------------------------------------*/voidTimer1()interrupt3{ TH1=(65536-50000)/256; //50ms定時,定時20次,12M晶振約為1s TL1=(65536-50000)%256; count1++; if(20==count1) { count1=0; time1++; if(time1==SetTime) { time1=0; led=0; bulb=1; //定時時間到,燈滅 } }}#ifndef_MAIN_H_#define_MAIN_H_#include<intrins.h>#include<string.h>#include<reg51.h>//宏定義#defineUCHARunsignedchar#defineUINTunsignedint#defineULONGunsignedlongsbitled=P2^2; //LED指示燈,每接收到字節(jié)閃爍一次 psbitbulb=P2^0;intSetTime=0; //定時時間,單位:sintcount0,count1,time0,time1;//定時器中斷內(nèi)部變量UCHARDisplayResult[5]; //全局顯示結(jié)果數(shù)組/**************************************************函數(shù)功能:延時函數(shù):延時nms 入口參數(shù):yms***************************************************/voidDelaynms(UINTy){UINTx; for(;y>0;y--)for(x=110;x>0;x--);}/**************************************************函數(shù)功能:將長整型數(shù)據(jù)轉(zhuǎn)換為字符數(shù)組形式以待顯示***************************************************/voidResultToDisplay(intdat){ DisplayResult[4]=dat%10+0x30; DisplayResult[3]=dat%100/10+0x30; DisplayResult[2]=dat%1000/100+0x30; DisplayResult[1]=dat%10000/1000+0x30; DisplayResult[0]=dat%100000/10000+0x30; }/*---------------------------------------------定時初始函數(shù):初始值50000=50ms定時器0---------------------------------------------*/voidInitTimer0(){ TMOD=0x11; //定時器0,定時器1工作方式1 TH0=(65536-50000)/256;//定時器0裝初值 TL0=(65536-50000)%256; TH1=(65536-50000)/256;//定時器1裝初值 TL1=(65536-50000)%256; EA=1; //開總中斷 ET0=1; //開Timer0中斷 ET1=1;}#endif#ifndef_CC1101_H_#define_CC1101_H_#define WRITE_BURST 0x40 //連續(xù)寫入#define READ_SINGLE 0x80 //讀#define READ_BURST 0xC0 //連續(xù)讀#define BYTES_IN_RXFIFO0x7F //接收緩沖區(qū)的有效字節(jié)數(shù)#define CRC_OK0x80 //CRC校驗通過位標(biāo)志//***********************************CC1100接口*************************************************sbit GDO0 =P1^6;sbit GDO2 =P1^5;sbit MISO =P1^2;sbit MOSI =P1^3;sbit SCK =P1^4;sbit CSN =P1^1;//***********************************按鍵********************************************************//sbitKEY1=P0^0;//sbitKEY2=P0^1;//***********************************數(shù)碼管位選**************************************************//sbit led3=P2^0;//sbit led2=P2^1;//sbit led1=P2^2;//sbit led0=P2^3;//***********************************蜂鳴器*******************************************************//sbit BELL=P3^4;//***************更多功率參數(shù)設(shè)置可詳細(xì)參考DATACC1100英文文檔中第48-49頁的參數(shù)表******************//UCHARPaTabel[8]={0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04};//-30dBm功率最小UCHARPaTabel[8]={0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60};//0dBm//UCHARPaTabel[8]={0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0};//10dBm功率最大//***********************************************************************************************voidSpiInit(void);voidCpuInit(void);voidRESET_CC1100(void);voidPOWER_UP_RESET_CC1100(void);voidhalSpiWriteReg(UCHARaddr,UCHARvalue);voidhalSpiWriteBurstReg(UCHARaddr,UCHAR*buffer,UCHARcount);voidhalSpiStrobe(UCHARstrobe);UCHARhalSpiReadReg(UCHARaddr);voidhalSpiReadBurstReg(UCHARaddr,UCHAR*buffer,UCHARcount);UCHARhalSpiReadStatus(UCHARaddr);voidhalRfWriteRfSettings(void);voidhalRfSendPacket(UCHAR*txBuffer,UCHARsize);UCHARhalRfReceivePacket(UCHAR*rxBuffer,UCHAR*length);//*****************************************************************************************//CC1100STROBE,CONTROLANDSTATUSREGSITER#defineCCxxx0_IOCFG20x00//GDO2outputpinconfiguration#defineCCxxx0_IOCFG10x01//GDO1outputpinconfiguration#defineCCxxx0_IOCFG00x02//GDO0outputpinconfiguration#defineCCxxx0_FIFOTHR0x03//RXFIFOandTXFIFOthresholds#defineCCxxx0_SYNC10x04//Syncword,highUCHAR#defineCCxxx0_SYNC00x05//Syncword,lowUCHAR#defineCCxxx0_PKTLEN0x06//Packetlength#defineCCxxx0_PKTCTRL10x07//Packetautomationcontrol#defineCCxxx0_PKTCTRL00x08//Packetautomationcontrol#defineCCxxx0_ADDR0x09//Deviceaddress#defineCCxxx0_CHANNR0x0A//Channelnumber#defineCCxxx0_FSCTRL10x0B//Frequencysynthesizercontrol#defineCCxxx0_FSCTRL00x0C//Frequencysynthesizercontrol#defineCCxxx0_FREQ20x0D//Frequencycontrolword,highUCHAR#defineCCxxx0_FREQ10x0E//Frequencycontrolword,middleUCHAR#defineCCxxx0_FREQ00x0F//Frequencycontrolword,lowUCHAR#defineCCxxx0_MDMCFG40x10//Modemconfiguration#defineCCxxx0_MDMCFG30x11//Modemconfiguration#defineCCxxx0_MDMCFG20x12//Modemconfiguration#defineCCxxx0_MDMCFG10x13//Modemconfiguration#defineCCxxx0_MDMCFG00x14//Modemconfiguration#defineCCxxx0_DEVIATN0x15//Modemdeviationsetting#defineCCxxx0_MCSM20x16//MainRadioControlStateMachineconfiguration#defineCCxxx0_MCSM10x17//MainRadioControlStateMachineconfiguration#defineCCxxx0_MCSM00x18//MainRadioControlStateMachineconfiguration#defineCCxxx0_FOCCFG0x19//FrequencyOffsetCompensationconfiguration#defineCCxxx0_BSCFG0x1A//BitSynchronizationconfiguration#defineCCxxx0_AGCCTRL20x1B//AGCcontrol#defineCCxxx0_AGCCTRL10x1C//AGCcontrol#defineCCxxx0_AGCCTRL00x1D//AGCcontrol#defineCCxxx0_WOREVT10x1E//HighUCHAREvent0timeout#defineCCxxx0_WOREVT00x1F//LowUCHAREvent0timeout#defineCCxxx0_WORCTRL0x20//WakeOnRadiocontrol#defineCCxxx0_FREND10x21//FrontendRXconfiguration#defineCCxxx0_FREND00x22//FrontendTXconfiguration#defineCCxxx0_FSCAL30x23//Frequencysynthesizercalibration#defineCCxxx0_FSCAL20x24//Frequencysynthesizercalibration#defineCCxxx0_FSCAL10x25//Frequencysynthesizercalibration#defineCCxxx0_FSCAL00x26//Frequencysynthesizercalibration#defineCCxxx0_RCCTRL10x27//RCoscillatorconfiguration#defineCCxxx0_RCCTRL00x28//RCoscillatorconfiguration#defineCCxxx0_FSTEST0x29//Frequencysynthesizercalibrationcontrol#defineCCxxx0_PTEST0x2A//Productiontest#defineCCxxx0_AGCTEST0x2B//AGCtest#defineCCxxx0_TEST20x2C//Varioustestsettings#defineCCxxx0_TEST10x2D//Varioustestsettings#defineCCxxx0_TEST00x2E//Varioustestsettings//Strobecommands#defineCCxxx0_SRES0x30//Resetchip.#defineCCxxx0_SFSTXON0x31//Enableandcalibratefrequencysynthesizer(ifMCSM0.FS_AUTOCAL=1).//IfinRX/TX:Gotoawaitstatewhereonlythesynthesizeris//running(forquickRX/TXturnaround).#defineCCxxx0_SXOFF0x32//Turnoffcrystaloscillator.#defineCCxxx0_SCAL0x33//Calibratefrequencysynthesizerandturnitoff//(enablesquickstart).#defineCCxxx0_SRX0x34//EnableRX.PerformcalibrationfirstifcomingfromIDLEand//MCSM0.FS_AUTOCAL=1.#defineCCxxx0_STX0x35//InIDLEstate:EnableTX.Performcalibrationfirstif//MCSM0.FS_AUTOCAL=1.IfinRXstateandCCAisenabled://OnlygotoTXifchannelisclear.#defineCCxxx0_SIDLE0x36//ExitRX/TX,turnofffrequencysynthesizerandexit//Wake-On-Radiomodeifapplicable.#defineCCxxx0_SAFC0x37//PerformAFCadjustmentofthefrequencysynthesizer#defineCCxxx0_SWOR0x38//StartautomaticRXpollingsequence(Wake-on-Radio)#defineCCxxx0_SPWD0x39//EnterpowerdownmodewhenCSngoeshigh.#defineCCxxx0_SFRX0x3A//FlushtheRXFIFObuffer.#defineCCxxx0_SFTX0x3B//FlushtheTXFIFObuffer.#defineCCxxx0_SWORRST0x3C//Resetrealtimeclock.#defineCCxxx0_SNOP0x3D//Nooperation.Maybeusedtopadstrobecommandstotwo//UCHARsforsimplersoftware.#defineCCxxx0_PARTNUM0x30#defineCCxxx0_VERSION0x31#defineCCxxx0_FREQEST0x32#defineCCxxx0_LQI0x33#defineCCxxx0_RSSI0x34#defineCCxxx0_MARCSTATE0x35#defineCCxxx0_WORTIME10x36#defineCCxxx0_WORTIME00x37#defineCCxxx0_PKTSTATUS0x38#defineCCxxx0_VCO_VC_DAC0x39#defineCCxxx0_TXBYTES0x3A#defineCCxxx0_RXBYTES0x3B#defineCCxxx0_PATABLE0x3E#defineCCxxx0_TXFIFO0x3F#defineCCxxx0_RXFIFO0x3F//RF_SETTINGSisadatastructurewhichcontainsallrelevantCCxxx0registerstypedefstructS_RF_SETTINGS{ UCHARFSCTRL2; //自已加的UCHARFSCTRL1;//Frequencysynthesizercontrol.UCHARFSCTRL0;//Frequencysynthesizercontrol.UCHARFREQ2;//Frequencycontrolword,highUCHAR.UCHARFREQ1;//Frequencycontrolword,middleUCHAR.UCHARFREQ0;//Frequencycontrolword,lowUCHAR.UCHARMDMCFG4;//Modemconfiguration.UCHARMDMCFG3;//Modemconfiguration.UCHARMDMCFG2;//Modemconfiguration.UCHARMDMCFG1;//Modemconfiguration.UCHARMDMCFG0;//Modemconfiguration.UCHARCHANNR;//Channelnumber.UCHARDEVIATN;//Modemdeviationsetting(whenFSKmodulationisenabled).UCHARFREND1;//FrontendRXconfiguration.UCHARFREND0;//FrontendRXconfiguration.UCHARMCSM0;//MainRadioControlStateMachineconfiguration.UCHARFOCCFG;//FrequencyOffsetCompensationConfiguration.UCHARBSCFG;//BitsynchronizationConfiguration.UCHARAGCCTRL2;//AGCcontrol. UCHARAGCCTRL1;//AGCcontrol.UCHARAGCCTRL0;//AGCcontrol.UCHARFSCAL3;//Frequencysynthesizercalibration.UCHARFSCAL2;//Frequencysynthesizercalibration. UCHARFSCAL1;//Frequencysynthesizercalibration.UCHARFSCAL0;//Frequencysynthesizercalibration.UCHARFSTEST;//FrequencysynthesizercalibrationcontrolUCHARTEST2;//Varioustestsettings.UCHARTEST1;//Varioustestsettings.UCHARTEST0;//Varioustestsettings.UCHARIOCFG2;//GDO2outputpinconfigurationUCHARIOCFG0;//GDO0outputpinconfigurationUCHARPKTCTRL1;//Packetautomationcontrol.UCHARPKTCTRL0;//Packetautomationcontrol.UCHARADDR;//Deviceaddress.UCHARPKTLEN;//Packetlength.}RF_SETTINGS;/////////////////////////////////////////////////////////////////constRF_SETTINGSrfSettings={ 0x00,0x08,//FSCTRL1Frequencysynthesizercontrol.0x00,//FSCTRL0Frequencysynthesizercontrol.0x10,//FREQ2Frequencycontrolword,highbyte.0xA7,//FREQ1Frequencycontrolword,middlebyte.0x62,//FREQ0Frequencycontrolword,lowbyte.0x5B,//MDMCFG4Modemconfiguration.0xF8,//MDMCFG3Modemconfiguration.0x03,//MDMCFG2Modemconfiguration.0x22,//MDMCFG1Modemconfiguration.0xF8,//MDMCFG0Modemconfiguration.0x00,//CHANNRChannelnumber.0x47,//DEVIATNModemdeviationsetting(whenFSKmodulationisenabled).0xB6,//FREND1FrontendRXconfiguration.0x10,//FREND0FrontendRXconfiguration.0x18,//MCSM0MainRadioControlStateMachineconfiguration.0x1D,//FOCCFGFrequencyOffsetCompensationConfiguration.0x1C,//BSCFGBitsynchronizationConfiguration.0xC7,//AGCCTRL2AGCcontrol.0x00,//AGCCTRL1AGCcontrol.0xB2,//AGCCTRL0AGCcontrol.0xEA,//FSCAL3Frequencysynthesizercalibration.0x2A,//FSCAL2Frequencysynthesizercalibration.0x00,//FSCAL1Frequencysynthesizercalibration.0x11,//FSCAL0Frequencysynthesizercalibration.0x59,//FSTESTFrequencysynthesizercalibration.0x81,//TEST2Varioustestsettings.0x35,//TEST1Varioustestsettings.0x09,//TEST0Varioustestsettings.0x0B,//IOCFG2GDO2outputpinconfiguration.0x06,//IOCFG0DGDO0outputpinconfiguration.RefertoSmartRF?StudioUserManualfordetailedpseudoregisterexplanation.0x04,//PKTCTRL1Packetautomationcontrol.0x05,//PKTCTRL0Packetautomationcontrol.0x00,//ADDRDeviceaddress.0x0c//PKTLENPacketlength.};//*****************************************************************************************//函數(shù)名:delay(unsignedints)//輸入:時間//輸出:無//功能描述:普通廷時,內(nèi)部用//***************************************************************************************** staticvoiddelay(unsignedints){ unsignedinti; for(i=0;i<s;i++); for(i=0;i<s;i++);}voidhalWait(UINTtimeout){do{_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}while(--timeout);}voidSpiInit(void){ CSN=0; SCK=0; CSN=1;}/*****************************************************************************************//函數(shù)名:CpuInit()//輸入:無//輸出:無//功能描述:SPI初始化程序/*****************************************************************************************/voidCpuInit(void){ SpiInit(); delay(5000);} //*****************************************************************************************//函數(shù)名:SpisendByte(UCHARdat)//輸入:發(fā)送的數(shù)據(jù)//輸出:無//功能描述:SPI發(fā)送一個字節(jié)//*****************************************************************************************UCHARSpiTxRxByte(UCHARdat){ UCHARi,temp; temp=0; SCK=0; for(i=0;i<8;i++) { if(dat&0x80) { MOSI=1; } elseMOSI=0; dat<<=1; SCK=1; _nop_(); _nop_(); temp<<=1; if(MISO)temp++; SCK=0; _nop_(); _nop_(); } returntemp;}//*****************************************************************************************//函數(shù)名:voidRESET_CC1100(void)//輸入:無//輸出:無//功能描述:復(fù)位CC1100//*****************************************************************************************voidRESET_CC1100(void){ CSN=0; while(MISO);SpiTxRxByte(CCxxx0_SRES); //寫入復(fù)位命令 while(MISO);CSN=1;}//*****************************************************************************************//函數(shù)名:voidPOWER_UP_RESET_CC1100(void)//輸入:無//輸出:無//功能描述:上電復(fù)位CC1100//*****************************************************************************************voidPOWER_UP_RESET_CC1100(void){ CSN=1; halWait(1); CSN=0; halWait(1); CSN=1; halWait(41); RESET_CC1100(); //復(fù)位CC1100}//*****************************************************************************************//函數(shù)名:voidhalSpiWriteReg(UCHARaddr,UCHARvalue)//輸入:地址和配置字//輸出:無//功能描述:SPI寫寄存器//*****************************************************************************************voidhalSpiWriteReg(UCHARaddr,UCHARvalue){CSN=0;while(MISO);SpiTxRxByte(addr); //寫地址SpiTxRxByte(value); //寫入配置CSN=1;}//*****************************************************************************************//函數(shù)名:voidhalSpiWriteBurstReg(UCHARaddr,UCHAR*buffer,UCHARcount)//輸入:地址,寫入緩沖區(qū),寫入個數(shù)//輸出:無//功能描述:SPI連續(xù)寫配置寄存器//*****************************************************************************************voidhalSpiWriteBurstReg(UCHARaddr,UCHAR*buffer,UCHARcount){UCHARi,temp; temp=addr|WRITE_BURST;CSN=0;while(MISO);SpiTxRxByte(temp);for(i=0;i<count;i++) {SpiTxRxByte(buffer[i]);}CSN=1;}//*****************************************************************************************//函數(shù)名:voidhalSpiStrobe(UCHARstrobe)//輸入:命令//輸出:無//功能描述:SPI寫命令//*****************************************************************************************voidhalSpiStrobe(UCHARstrobe){CSN=0;while(MISO);SpiTxRxByte(strobe); //寫入命令CSN=1;}//*****************************************************************************************//函數(shù)名:UCHARhalSpiReadReg(UCHARaddr)//輸入:地址//輸出:該寄存器的配置字//功能描述:SPI讀寄存器//*****************************************************************************************UCHARhalSpiReadReg(UCHARaddr){ UCHARtemp,value;temp=addr|READ_SINGLE;//讀寄存器命令 CSN=0; while(MISO); SpiTxRxByte(temp); value=SpiTxRxByte(0); CSN=1; returnvalue;}//*****************************************************************************************//函數(shù)名:voidhalSpiReadBurstReg(UCHARaddr,UCHAR*buffer,UCHARcount)//輸入:地址,讀出數(shù)據(jù)后暫存的緩沖區(qū),讀出配置個數(shù)//輸出:無//功能描述:SPI連續(xù)寫配置寄存器//*****************************************************************************************voidhalSpiReadBurstReg(UCHARaddr,UCHAR*buffer,UCHARcount){UCHARi,temp; temp=addr|READ_BURST; //寫入要讀的配置寄存器地址和讀命令CSN=0;while(MISO); SpiTxRxByte(temp);for(i=0;i<count;i++) {buffer[i]=SpiTxRxByte(0);}CSN=1;}//*****************************************************************************************//函數(shù)名:UCHARhalSpiReadReg(UCHARaddr)//輸入:地址//輸出:該狀態(tài)寄存器當(dāng)前值//功能描述:SPI讀狀態(tài)寄存器//*****************************************************************************************UCHARhalSpiReadStatus(UCHARaddr){UCHARvalue,temp; temp=addr|READ_BURST; //寫入要讀的狀態(tài)寄存器的地址同時寫入讀命令CSN=0;while(MISO);SpiTxRxByte(temp); value=SpiTxRxByte(0); CSN=1; returnvalue;}//*****************************************************************************************//函數(shù)名:voidhalRfWriteRfSettings(RF_SETTINGS*pRfSettings)//輸入:無//輸出:無//功能描述:配置CC1100的寄存器//*****************************************************************************************voidhalRfWriteRfSettings(void){ halSpiWriteReg(CCxxx0_FSCTRL0,rfSettings.FSCTRL2);//自已加的//WriteregistersettingshalSpiWriteReg(CCxxx0_FSCTRL1,rfSettings.FSCTRL1);halSpiWriteReg(CCxxx0_FSCTRL0,rfSettings.FSCTRL0);halSpiWriteReg(CCxxx0_FREQ2,rfSettings.FREQ2);halSpiWriteReg(CCxxx0_FREQ1,rfSettings.FREQ1);halSpiWriteReg(CCxxx0_FREQ0,rfSettings.FREQ0);halSpiWriteReg(CCxxx0_MDMCFG4,rfSettings.MDMCFG4);halSpiWriteReg(CCxxx0_MDMCFG3,rfSettings.MDMCFG3);halSpiWriteReg(CCxxx0_MDMCFG2,rfSettings.MDMCFG2);halSpiWriteReg(CCxxx0_MDMCFG1,rfSettings.MDMCFG1);halSpiWriteReg(CCxxx0_MDMCFG0,rfSettings.MDMCFG0);halSpiWriteReg(CCxxx0_CHANNR,rfSettings.CHANNR);halSpiWriteReg(CCxxx0_DEVIATN,rfSettings.DEVIATN);halSpiWriteReg(CCxxx0_FREND1,rfSettings.FREND1);halSpiWriteReg(CCxxx0_FREND0,rfSettings.FREND0);halSpiWriteReg(CCxxx0_MCSM0,rfSettings.MCSM0);halSpiWriteReg(CCxxx0_FOCCFG,rfSettings.FOCCFG);halSpiWriteReg(CCxxx0_BSCFG,rfSettings.BSCFG);halSpiWriteReg(CCxxx0_AGCCTRL2,rfSettings.AGCCTRL2); halSpiWriteReg(CCxxx0_AGCCTRL1,rfSettings.AGCCTRL1);halSpiWriteReg(CCxxx0_AGCCTRL0,rfSettings.AGCCTRL0);halSpiWriteReg(CCxxx0_FSCAL3,rfSettings.FSCAL3); halSpiWriteReg(CCxxx0_FSCAL2,rfSettings.FSCAL2); halSpiWriteReg(CCxxx0_FSCAL1,rfSettings.FSCAL1);halSpiWriteReg(CCxxx0_FSCAL0,rfSettings.FSCAL0);halSpiWriteReg(CCxxx0_FSTEST,rfSettings.FSTEST);halSpiWriteReg(CCxxx0_TEST2,rfSettings.TEST2);halSpiWriteReg(CCxxx0_TEST1,rfSettings.TEST1);halSpiWriteReg(CCxxx0_TEST0,rfSettings.TEST0);halSpiWriteReg(CCxxx0_IOCFG2,rfSettings.IOCFG2);halSpiWriteReg(CCxxx0_IOCFG0,rfSettings.IOCFG0);halSpiWriteReg(CCxxx0_PKTCTRL1,rfSettings.PKTCTRL1);halSpiWriteReg(CCxxx0_PKTCTRL0,rfSettings.PKTCTRL0);halSpiWriteReg(CCxxx0_ADDR,rfSettings.ADDR);halSpiWriteReg(CCxxx0_PKTLEN,rfSettings.PKTLEN);}//*****************************************************************************************//函數(shù)名:voidhalRfSendPacket(UCHAR*txBuffer,UCHARsize)//輸入:發(fā)送的緩沖區(qū),發(fā)送數(shù)據(jù)個數(shù)//輸出:無//功能描述:CC1100發(fā)送一組數(shù)據(jù)//*****************************************************************************************voidhalRfSendPacket(UCHAR*txBuffer,UCHARsize){ halSpiWriteReg(CCxxx0_TXFIFO,size);halSpiWriteBurstReg(CCxxx0_TXFIFO,txBuffer,size); //寫入要發(fā)送的數(shù)據(jù)halSpiStrobe(CCxxx0_STX); //進(jìn)入發(fā)送模式發(fā)送數(shù)據(jù)//WaitforGDO0tobeset->synctransmittedwhile(!GDO0);//WaitforGDO0tobecleared->endofpacketwhile(GDO0); halSpiStrobe(CCxxx0_SFTX);}voidsetRxMode(void){halSpiStrobe(CCxxx0_SRX); //進(jìn)入接收狀態(tài)}/*//BitmaskscorrespondingtoSTATE[2:0]inthestatusbytereturnedonMISO#defineCCxx00_STATE_BM0x70#defineCCxx00_FIFO_BYTES_AVAILABLE_BM0x0F#defineCCxx00_STATE_TX_BM0x20#defineCCxx00_STATE_TX_UNDERFLOW_BM0x70#defineCCxx00_STATE_RX_BM0x10#defineCCxx00_STATE_RX_OVERFLOW_BM0x60#defineCCxx00_STATE_IDLE_BM0x00staticUCHARRfGetRxStatus(void){ UCHARtemp,spiRxStatus1,spiRxStatus2; UCHARi=4;//循環(huán)測試次數(shù)temp=CCxxx0_SNOP|READ_SINGLE;//讀寄存器命令 CSN=0; while(MISO); SpiTxRxByte(temp); spiRxStatus1=SpiTxRxByte(0); do { SpiTxRxByte(temp); spiRxStatus2=SpiTxRxByte(0); if(spiRxStatus1==spiRxStatus2) { if((spiRxStatus1&CCxx00_STATE_BM)==CCxx00_STATE_RX_OVERFLOW_BM) {halSpiStrobe(CCxxx0_SFRX); return0; } return1; } spiRxStatus1=spiRxStatus2; } while(i--); CSN=1;return0; }*/UCHARhalRfReceivePacket(UCHAR*rxBuffer,UCHAR*length){UCHARstatus[2];UCHARpacketLength; UCHARi=(*length)*4;//具體多少要根據(jù)datarate和length來決定halSpiStrobe(CCxxx0_SRX); //進(jìn)入接收狀態(tài) //delay(5);//while(!GDO1);//while(GDO1); delay(2); while(GDO0) { delay(2); --i; if(i<1) return0; } if((halSpiReadStatus(CCxxx0_RXBYTES)&BYTES_IN_RXFIFO))//如果接的字節(jié)數(shù)不為0 {packetLength=halSpiReadReg(CCxxx0_RXFIFO);//讀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 哈麗法塔外幕墻單元體專項施工方案
- 人貨梯基礎(chǔ)專項施工方案
- 2024年金溪縣招教考試備考題庫帶答案解析
- 2025年新昌縣招教考試備考題庫帶答案解析(奪冠)
- 2026年中國傳統(tǒng)文化研究歷史與哲學(xué)思想題庫
- 2025年浙江安防職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫帶答案解析
- 2024年浮梁縣招教考試備考題庫帶答案解析(奪冠)
- 2025年木蘭縣招教考試備考題庫附答案解析(必刷)
- 2025年陽光學(xué)院馬克思主義基本原理概論期末考試模擬題帶答案解析(奪冠)
- 2025年九寨溝縣招教考試備考題庫含答案解析(奪冠)
- 2026浙江溫州市蒼南縣城市投資集團(tuán)有限公司招聘19人考試參考試題及答案解析
- 2026年廣州中考化學(xué)創(chuàng)新題型特訓(xùn)試卷(附答案可下載)
- 2025司法鑒定人資格考試考點試題及答案
- 保健用品生產(chǎn)管理制度
- 檔案計件工資管理制度
- 浙江省杭州市拱墅區(qū)2024-2025學(xué)年八年級上學(xué)期語文期末試卷(含答案)
- DB11∕T 695-2025 建筑工程資料管理規(guī)程
- 產(chǎn)科護(hù)理中的人文關(guān)懷與溝通藝術(shù)
- 2025年內(nèi)蒙古行政執(zhí)法考試試題及答案
- GB/T 46416-2025乘用車對開路面直線制動車輛穩(wěn)定性試驗方法
- 2025年交通部公路水運(yùn)工程安全安全員考試三類人員考試題庫(附答案)
評論
0/150
提交評論