基于CC1100的無(wú)線收發(fā)模塊程序_第1頁(yè)
基于CC1100的無(wú)線收發(fā)模塊程序_第2頁(yè)
基于CC1100的無(wú)線收發(fā)模塊程序_第3頁(yè)
基于CC1100的無(wú)線收發(fā)模塊程序_第4頁(yè)
基于CC1100的無(wú)線收發(fā)模塊程序_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include <reg52.h>#include <intrins.h>#defineINT8Uunsigned char#defineINT16Uunsigned int#define WRITE_BURST 0x40/連續(xù)寫入#define READ_SINGLE 0x80/讀#define READ_BURST 0xC0/連續(xù)讀#define BYTES_IN_RXFIFO 0x7F /接收緩沖區(qū)的有效字節(jié)數(shù)#define CRC_OK 0x80 /CRC校驗(yàn)通過(guò)位標(biāo)志#define CCxxx0_IOCFG2 0x00 / GDO2 output pin c

2、onfiguration#define CCxxx0_IOCFG1 0x01 / GDO1 output pin configuration#define CCxxx0_IOCFG0 0x02 / GDO0 output pin configuration#define CCxxx0_FIFOTHR 0x03 / RX FIFO and TX FIFO thresholds#define CCxxx0_SYNC1 0x04 / Sync word, high INT8U#define CCxxx0_SYNC0 0x05 / Sync word, low INT8U#define CCxxx0_

3、PKTLEN 0x06 / Packet length#define CCxxx0_PKTCTRL1 0x07 / Packet automation control#define CCxxx0_PKTCTRL0 0x08 / Packet automation control#define CCxxx0_ADDR 0x09 / Device address#define CCxxx0_CHANNR 0x0A / Channel number#define CCxxx0_FSCTRL1 0x0B / Frequency synthesizer control#define CCxxx0_FSC

4、TRL0 0x0C / Frequency synthesizer control#define CCxxx0_FREQ2 0x0D / Frequency control word, high INT8U#define CCxxx0_FREQ1 0x0E / Frequency control word, middle INT8U#define CCxxx0_FREQ0 0x0F / Frequency control word, low INT8U#define CCxxx0_MDMCFG4 0x10 / Modem configuration#define CCxxx0_MDMCFG3

5、0x11 / Modem configuration#define CCxxx0_MDMCFG2 0x12 / Modem configuration#define CCxxx0_MDMCFG1 0x13 / Modem configuration#define CCxxx0_MDMCFG0 0x14 / Modem configuration#define CCxxx0_DEVIATN 0x15 / Modem deviation setting#define CCxxx0_MCSM2 0x16 / Main Radio Control State Machine configuration

6、#define CCxxx0_MCSM1 0x17 / Main Radio Control State Machine configuration#define CCxxx0_MCSM0 0x18 / Main Radio Control State Machine configuration#define CCxxx0_FOCCFG 0x19 / Frequency Offset Compensation configuration#define CCxxx0_BSCFG 0x1A / Bit Synchronization configuration#define CCxxx0_AGCC

7、TRL2 0x1B / AGC control#define CCxxx0_AGCCTRL1 0x1C / AGC control#define CCxxx0_AGCCTRL0 0x1D / AGC control#define CCxxx0_WOREVT1 0x1E / High INT8U Event 0 timeout#define CCxxx0_WOREVT0 0x1F / Low INT8U Event 0 timeout#define CCxxx0_WORCTRL 0x20 / Wake On Radio control#define CCxxx0_FREND1 0x21 / Fr

8、ont end RX configuration#define CCxxx0_FREND0 0x22 / Front end TX configuration#define CCxxx0_FSCAL3 0x23 / Frequency synthesizer calibration#define CCxxx0_FSCAL2 0x24 / Frequency synthesizer calibration#define CCxxx0_FSCAL1 0x25 / Frequency synthesizer calibration#define CCxxx0_FSCAL0 0x26 / Freque

9、ncy synthesizer calibration#define CCxxx0_RCCTRL1 0x27 / RC oscillator configuration#define CCxxx0_RCCTRL0 0x28 / RC oscillator configuration#define CCxxx0_FSTEST 0x29 / Frequency synthesizer calibration control#define CCxxx0_PTEST 0x2A / Production test#define CCxxx0_AGCTEST 0x2B / AGC test#define

10、CCxxx0_TEST2 0x2C / Various test settings#define CCxxx0_TEST1 0x2D / Various test settings#define CCxxx0_TEST0 0x2E / Various test settings/ Strobe commands#define CCxxx0_SRES 0x30 / Reset chip.#define CCxxx0_SFSTXON 0x31 / Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1). / If in

11、RX/TX: Go to a wait state where only the synthesizer is / running (for quick RX / TX turnaround).#define CCxxx0_SXOFF 0x32 / Turn off crystal oscillator.#define CCxxx0_SCAL 0x33 / Calibrate frequency synthesizer and turn it off / (enables quick start).#define CCxxx0_SRX 0x34 / Enable RX. Perform cal

12、ibration first if coming from IDLE and / MCSM0.FS_AUTOCAL=1.#define CCxxx0_STX 0x35 / In IDLE state: Enable TX. Perform calibration first if / MCSM0.FS_AUTOCAL=1. If in RX state and CCA is enabled: / Only go to TX if channel is clear.#define CCxxx0_SIDLE 0x36 / Exit RX / TX, turn off frequency synth

13、esizer and exit / Wake-On-Radio mode if applicable.#define CCxxx0_SAFC 0x37 / Perform AFC adjustment of the frequency synthesizer#define CCxxx0_SWOR 0x38 / Start automatic RX polling sequence (Wake-on-Radio)#define CCxxx0_SPWD 0x39 / Enter power down mode when CSn goes high.#define CCxxx0_SFRX 0x3A

14、/ Flush the RX FIFO buffer.#define CCxxx0_SFTX 0x3B / Flush the TX FIFO buffer.#define CCxxx0_SWORRST 0x3C / Reset real time clock.#define CCxxx0_SNOP 0x3D / No operation. May be used to pad strobe commands to two / INT8Us for simpler software.#define CCxxx0_PARTNUM 0x30#define CCxxx0_VERSION 0x31#d

15、efine CCxxx0_FREQEST 0x32#define CCxxx0_LQI 0x33#define CCxxx0_RSSI 0x34#define CCxxx0_MARCSTATE 0x35#define CCxxx0_WORTIME1 0x36#define CCxxx0_WORTIME0 0x37#define CCxxx0_PKTSTATUS 0x38#define CCxxx0_VCO_VC_DAC 0x39#define CCxxx0_TXBYTES 0x3A#define CCxxx0_RXBYTES 0x3B#define CCxxx0_PATABLE 0x3E#de

16、fine CCxxx0_TXFIFO 0x3F#define CCxxx0_RXFIFO 0x3F/ RF_SETTINGS is a data structure which contains all relevant CCxxx0 registerstypedef struct S_RF_SETTINGSINT8U FSCTRL2;/自已加的 INT8U FSCTRL1; / Frequency synthesizer control. INT8U FSCTRL0; / Frequency synthesizer control. INT8U FREQ2; / Frequency cont

17、rol word, high INT8U. INT8U FREQ1; / Frequency control word, middle INT8U. INT8U FREQ0; / Frequency control word, low INT8U. INT8U MDMCFG4; / Modem configuration. INT8U MDMCFG3; / Modem configuration. INT8U MDMCFG2; / Modem configuration. INT8U MDMCFG1; / Modem configuration. INT8U MDMCFG0; / Modem

18、configuration. INT8U CHANNR; / Channel number. INT8U DEVIATN; / Modem deviation setting (when FSK modulation is enabled). INT8U FREND1; / Front end RX configuration. INT8U FREND0; / Front end RX configuration. INT8U MCSM0; / Main Radio Control State Machine configuration. INT8U FOCCFG; / Frequency O

19、ffset Compensation Configuration. INT8U BSCFG; / Bit synchronization Configuration. INT8U AGCCTRL2; / AGC control.INT8U AGCCTRL1; / AGC control. INT8U AGCCTRL0; / AGC control. INT8U FSCAL3; / Frequency synthesizer calibration. INT8U FSCAL2; / Frequency synthesizer calibration.INT8U FSCAL1; / Frequen

20、cy synthesizer calibration. INT8U FSCAL0; / Frequency synthesizer calibration. INT8U FSTEST; / Frequency synthesizer calibration control INT8U TEST2; / Various test settings. INT8U TEST1; / Various test settings. INT8U TEST0; / Various test settings. INT8U IOCFG2; / GDO2 output pin configuration INT

21、8U IOCFG0; / GDO0 output pin configuration INT8U PKTCTRL1; / Packet automation control. INT8U PKTCTRL0; / Packet automation control. INT8U ADDR; / Device address. INT8U PKTLEN; / Packet length. RF_SETTINGS;sbit GDO0=P11;sbit GDO2=P12;sbitMISO=P13;sbitMOSI=P15;sbitSCK=P14;sbitCSN=P10;sbit LED1=P32;sb

22、it LED2=P33;bit uart_f;INT8U _1s_counter,leng; INT8U TxBuf11; / 11字節(jié), 如果需要更長(zhǎng)的數(shù)據(jù)包,請(qǐng)正確設(shè)置INT8U RxBuf11;/*更多功率參數(shù)設(shè)置可詳細(xì)參考DATACC1100英文文檔中第48-49頁(yè)的參數(shù)表*/INT8U PaTabel8 = 0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04; /-30dBm 功率最小INT8U PaTabel8 = 0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60; /0dBm/INT8U PaT

23、abel8 = 0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0;/const RF_SETTINGS rfSettings = 0x00, 0x08, / FSCTRL1 Frequency synthesizer control. 0x00, / FSCTRL0 Frequency synthesizer control. 0x10, / FREQ2 Frequency control word, high byte. 0xA7, / FREQ1 Frequency control word, middle byte. 0x62, / FREQ0

24、 Frequency control word, low byte. 0x5B, / MDMCFG4 Modem configuration. 0xF8, / MDMCFG3 Modem configuration. 0x03, / MDMCFG2 Modem configuration. 0x22, / MDMCFG1 Modem configuration. 0xF8, / MDMCFG0 Modem configuration. 0x00, / CHANNR Channel number. 0x47, / DEVIATN Modem deviation setting (when FSK

25、 modulation is enabled). 0xB6, / FREND1 Front end RX configuration. 0x10, / FREND0 Front end RX configuration. 0x18, / MCSM0 Main Radio Control State Machine configuration. 0x1D, / FOCCFG Frequency Offset Compensation Configuration. 0x1C, / BSCFG Bit synchronization Configuration. 0xC7, / AGCCTRL2 A

26、GC control. 0x00, / AGCCTRL1 AGC control. 0xB2, / AGCCTRL0 AGC control. 0xEA, / FSCAL3 Frequency synthesizer calibration. 0x2A, / FSCAL2 Frequency synthesizer calibration. 0x00, / FSCAL1 Frequency synthesizer calibration. 0x11, / FSCAL0 Frequency synthesizer calibration. 0x59, / FSTEST Frequency syn

27、thesizer calibration. 0x81, / TEST2 Various test settings. 0x35, / TEST1 Various test settings. 0x09, / TEST0 Various test settings. 0x0B, / IOCFG2 GDO2 output pin configuration. 0x06, / IOCFG0D GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanati

28、on. 0x04, / PKTCTRL1 Packet automation control. 0x05, / PKTCTRL0 Packet automation control. 0x00, / ADDR Device address. 0x0c / PKTLEN Packet length.;/*/函數(shù)名:delay(unsigned int s)/輸入:時(shí)間/輸出:無(wú)/功能描述:普通廷時(shí),內(nèi)部用/*void delay(unsigned int s)unsigned int i;/for(i=0;i<2;i+)/for(i=0; i<s; i+);for(i=0; i<

29、;s; i+);/void halWait(INT16U timeout) /unsigned int i;/for(i=0;i<2;i+)/ do _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); while (-timeout);/void SpiInit(void)CSN=0;SCK=0;CSN=1;/*/函數(shù)名:CpuInit()/輸入:無(wú)/輸出:無(wú)/功能描述:SPI初始化程序/*/void

30、 CpuInit(void)SpiInit();delay(50000);/*/函數(shù)名:SpisendByte(INT8U dat)/輸入:發(fā)送的數(shù)據(jù)/輸出:無(wú)/功能描述:SPI發(fā)送一個(gè)字節(jié)/*INT8U SpiTxRxByte(INT8U dat)INT8U i,temp;temp = 0;SCK = 0;for(i=0; i<8; i+)if(dat & 0x80)MOSI = 1;else MOSI = 0;dat <<= 1;SCK = 1; /for(i=0;i<2;i+) /_nop_();_nop_();_nop_();_nop_();_nop_(

31、);_nop_();/temp <<= 1;if(MISO)temp+; SCK = 0;/for(i=0;i<2;i+) /_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/return temp;/*/函數(shù)名:void RESET_CC1100(void)/輸入:無(wú)/輸出:無(wú)/功能描述:復(fù)位CC1100/*void RESET_CC1100(void) CSN = 0; while (MISO); SpiTxRxByte(CCxxx0_SRES); /寫入復(fù)位命令while (MISO); CSN = 1; /*/函數(shù)名:v

32、oid POWER_UP_RESET_CC1100(void) /輸入:無(wú)/輸出:無(wú)/功能描述:上電復(fù)位CC1100/*void POWER_UP_RESET_CC1100(void) CSN = 1; halWait(10); CSN = 0; halWait(10); CSN = 1; halWait(410); RESET_CC1100(); /復(fù)位CC1100/*/函數(shù)名:void halSpiWriteReg(INT8U addr, INT8U value)/輸入:地址和配置字/輸出:無(wú)/功能描述:SPI寫寄存器/*void halSpiWriteReg(INT8U addr, IN

33、T8U value) CSN = 0; while (MISO); SpiTxRxByte(addr);/寫地址 SpiTxRxByte(value);/寫入配置 CSN = 1;/*/函數(shù)名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)/輸入:地址,寫入緩沖區(qū),寫入個(gè)數(shù)/輸出:無(wú)/功能描述:SPI連續(xù)寫配置寄存器/*void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) INT8U i, temp;temp = addr | WRITE

34、_BURST; CSN = 0; while (MISO); SpiTxRxByte(temp); for (i = 0; i < count; i+) SpiTxRxByte(bufferi); CSN = 1;/*/函數(shù)名:void halSpiStrobe(INT8U strobe)/輸入:命令/輸出:無(wú)/功能描述:SPI寫命令/*void halSpiStrobe(INT8U strobe) CSN = 0; while (MISO); SpiTxRxByte(strobe);/寫入命令 CSN = 1;/*/函數(shù)名:INT8U halSpiReadReg(INT8U addr)

35、/輸入:地址/輸出:該寄存器的配置字/功能描述:SPI讀寄存器/*INT8U halSpiReadReg(INT8U addr) INT8U temp, value; temp = addr|READ_SINGLE;/讀寄存器命令CSN = 0;while (MISO);SpiTxRxByte(temp);value = SpiTxRxByte(0);CSN = 1;return value;/*/函數(shù)名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)/輸入:地址,讀出數(shù)據(jù)后暫存的緩沖區(qū),讀出配置個(gè)數(shù)/輸出:無(wú)/功

36、能描述:SPI連續(xù)寫配置寄存器/*void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) INT8U i,temp;temp = addr | READ_BURST;/寫入要讀的配置寄存器地址和讀命令 CSN = 0; while (MISO);SpiTxRxByte(temp); for (i = 0; i < count; i+) bufferi = SpiTxRxByte(0); CSN = 1;/*/函數(shù)名:INT8U halSpiReadReg(INT8U addr)/輸入:地址/輸出:該狀態(tài)寄存器當(dāng)前值/

37、功能描述:SPI讀狀態(tài)寄存器/*INT8U halSpiReadStatus(INT8U addr) INT8U value,temp;temp = addr | READ_BURST;/寫入要讀的狀態(tài)寄存器的地址同時(shí)寫入讀命令 CSN = 0; while (MISO); SpiTxRxByte(temp);value = SpiTxRxByte(0);CSN = 1;return value;/*/函數(shù)名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)/輸入:無(wú)/輸出:無(wú)/功能描述:配置CC1100的寄存器/*void halRfWr

38、iteRfSettings(void) halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);/自已加的 / Write register settings halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1); halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0); halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2); halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1

39、); 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

40、.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, rfSetti

41、ngs.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,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論