




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
FSK調(diào)制芯片CC1000編程說明在光纖模擬直放站中,光模塊是一個很重要的局部。對于光模塊的設(shè)計中,必然需要使用到FSK調(diào)制芯片CC1000來進行光模塊之間通信,所以對于如何使用CC1000,也就是一個比擬重要的內(nèi)容。CC1000的具體功能CC1000電路系統(tǒng)主要設(shè)計用于ISM〔工業(yè)、科學(xué)及醫(yī)療〕方面以及SRD〔短距離通訊〕,工作頻帶在315、868及915MHz,但CC1000很容易通過編程使其工作在300~1000MHz范圍內(nèi)。其主要工作參數(shù)能通過串行總線接口編程改變,這樣使CC1000使用更方便更靈活。CC1000的電路連接以下是CC1000芯片和單片機的連接框圖和電路圖:圖1CC1000芯片和單片機的連接框圖圖2CC1000芯片和單片機的連接框圖具體的管腳功能介紹:微控制器通過三串行配置口PDATA、PCLK和PALE控制CC1000改變不同模式,DIO和DCLK是CC100和MCU收發(fā)數(shù)據(jù)信號接口,MCU通過DIO將數(shù)據(jù)發(fā)送給CC1000芯片,通過DCLK接收將CC1000芯片發(fā)送給MCU的數(shù)據(jù)。微控器能從管腳CHP_OUT〔LOCK〕監(jiān)視頻率鎖定狀態(tài)。CC100通過RF_IN、RF_OUT來輸出和接收信號給天線。MCU讀寫CC1000存放器的編程CC1000可通過簡單的三串行接口PDATA、PCLK和PALE進行編程。CC1000主要有36個8位配置存放器,每個由7位地址尋址。讀/寫位初始化讀或?qū)懙牟僮?。CC1000一個完整的配置要求發(fā)送29個數(shù)據(jù)幀,每個16位〔7個地址位1個讀/寫位和8個數(shù)據(jù)位〕。PCLK頻率決定了完全配置所需時間,在10MHzPCLK頻率工作下,完成整個配置所需時間少于60μs。在低電位模式下設(shè)置時僅需發(fā)射一個幀,所需時間少于μ2s。所有存放器都可讀。在每次寫循環(huán)中,16位字節(jié)送入PDATA通道,每個數(shù)據(jù)幀中7個最重要的位〔A6:0〕是地址位。A6是MSB〔最高位〕,首先被發(fā)送。下一個發(fā)送的位是讀/寫位〔高電平寫,低電平讀〕在傳輸?shù)刂泛妥x/寫位期間,PALE〔編程地址鎖存使能〕必須保持低電平,接著傳輸8個數(shù)據(jù)位〔D7:0〕見圖3。圖3寫CC1000存放器圖4讀取CC1000存放器具體的代碼如下://*******************************************************************************//函數(shù)描述:SPI初始化函數(shù)FSKModuleInit()//FSK初始化為接收狀態(tài)//輸入?yún)?shù):無//返回值:無//*******************************************************************************unsignedcharSPI(unsignedcharx){unsignedchari,j;j=0;for(i=0;i<8;i++){if(x&0x80)GPIO_WriteBit(GPIOB,BSPB_CC1000_PDATA,(BitAction)0x01);//IN1000=1;elseGPIO_WriteBit(GPIOB,BSPB_CC1000_PDATA,(BitAction)0x00);//IN1000=0;x<<=1;GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x01);//CLK1000=1;Delay(5);GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x00);//CLK1000=0;}GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x01);//CLK1000=1;returnj;}//*******************************************************************************//函數(shù)描述:寫CC1000存放器FSKModuleInit()//FSK初始化為接收狀態(tài)//輸入?yún)?shù):無//返回值:無//*******************************************************************************voidWriteToCC1000(unsignedcharaddr,unsignedchardat){addr<<=1;//把7位地址位移到高位addr|=0x01;//寫地址GPIO_WriteBit(GPIOB,BSPB_CC1000_PALE,(BitAction)0x00);//CS1000=0;SPI(addr);GPIO_WriteBit(GPIOB,BSPB_CC1000_PALE,(BitAction)0x01);//CS1000=1;Delay(5);//寫數(shù)據(jù)SPI(dat);Delay(5);}//*******************************************************************************//函數(shù)描述:讀CC1000存放器ReadFromCC1000()//FSK初始化為接收狀態(tài)//輸入?yún)?shù):無//返回值:無//*******************************************************************************unsignedcharReadFromCC1000(unsignedcharaddr){unsignedcharj;unsignedchardat=0;GPIO_InitTypeDefGPIO_InitStructure;addr<<=1;//把7位地址位移到高位GPIO_WriteBit(GPIOB,BSPB_CC1000_PALE,(BitAction)0x00);//CS1000=0;//寫地址for(j=8;j>0;j--){GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x01);//CLK1000=1;if(addr&0x80)GPIO_WriteBit(GPIOB,BSPB_CC1000_PDATA,(BitAction)0x01);//IN1000=1;elseGPIO_WriteBit(GPIOB,BSPB_CC1000_PDATA,(BitAction)0x00);//IN1000=0;addr<<=1;GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x00);//CLK1000=0;}GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x01);//CLK1000=1;GPIO_WriteBit(GPIOB,BSPB_CC1000_PALE,(BitAction)0x01);//CS1000=1;Delay(5);//讀數(shù)據(jù) //輸入輸出數(shù)據(jù)線共用,需要修改端口的輸入輸出配置 //讀數(shù)據(jù)IN1000,改為輸入模式GPIO_InitStructure.GPIO_Pin=BSPB_CC1000_PDATA;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);for(j=8;j>0;j--){GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x00);//CLK1000=0;dat<<=1;if(GPIO_ReadInputDataBit(GPIOB,BSPB_CC1000_PDATA)==1)//if(IN1000==1)dat++;GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x01);//CLK1000=1;} //切換回輸出模式GPIO_InitStructure.GPIO_Pin=BSPB_CC1000_PDATA;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);return(dat);}CC1000存放器的配置初始化CC1000,具體的初始化順序如下:圖5初始化CC1000順序具體的初始化代碼如下://*******************************************************************************//函數(shù)描述:CC1000初始化InitCC1000()//FSK初始化為接收狀態(tài)//輸入?yún)?shù):無//輸出參數(shù):無//返回值:無//*******************************************************************************voidInitCC1000(void){unsignedchark;unsignedintt;unsignedintp;GPIO_WriteBit(GPIOB,BSPB_CC1000_PALE,(BitAction)0x01); //CS1000=1.25;//片選信號為無效GPIO_WriteBit(GPIOB,BSPB_CC1000_PDATA,(BitAction)0x01); //IN1000=0.4; //數(shù)據(jù)信號GPIO_WriteBit(GPIOB,BSPB_CC1000_PCLK,(BitAction)0x01); //CLK1000=1.24;//時鐘信號 WriteToCC1000(CC1000_MAIN,0x3a); //0011,1010啟動振蕩器內(nèi)部存放器復(fù)位 delay_nms(4); //>=2ms WriteToCC1000(CC1000_MAIN,0x3b); //0011,1011恢復(fù)默認值 delay_nms(4); //>=2ms//設(shè)置接收頻率433.766M WriteToCC1000(CC1000_FREQ_2A,0x58);//FREQ5775360 t=0x2000+otr.cfg.iFREQx; WriteToCC1000(CC1000_FREQ_1A,t/256); //WriteToCC1000(CC1000_FREQ_1A,0x20); WriteToCC1000(CC1000_FREQ_0A,t%256); //WriteToCC1000(CC1000_FREQ_0A,0x00); //設(shè)置發(fā)送中心頻率433.916M,"1"→433.948MHz"0"→433.884MHz WriteToCC1000(CC1000_FREQ_2B,0x58);//FREQ5776933 t=0x2625+otr.cfg.iFREQx; WriteToCC1000(CC1000_FREQ_1B,t/256); //WriteToCC1000(CC1000_FREQ_1B,0x26);//0x26 WriteToCC1000(CC1000_FREQ_0B,t%256); //WriteToCC1000(CC1000_FREQ_0B,0x25);//0x25 //頻偏0.063975M對應(yīng)853 WriteToCC1000(CC1000_FSEP1,0x03); WriteToCC1000(CC1000_FSEP0,0x55); WriteToCC1000(CC1000_FRONT_END,0x02); WriteToCC1000(CC1000_PA_POW,0x00); WriteToCC1000(CC1000_PLL,0x48);WriteToCC1000(CC1000_LOCK,0x00); WriteToCC1000(CC1000_CAL,0x26);WriteToCC1000(CC1000_MODEM2,0x96); WriteToCC1000(CC1000_MODEM1,0x0f);WriteToCC1000(CC1000_MODEM0,0x4a); //9.6k,異步/ WriteToCC1000(CC1000_MATCH,0x70); //0x70 WriteToCC1000(CC1000_MAIN,0x39); //0011,1001啟動BIAS delay_nms(2); WriteToCC1000(CC1000_MAIN,0x31); //0011,0001啟動FS //校正 WriteToCC1000(CC1000_MAIN,CC1000_RXMODE);WriteToCC1000(CC1000_CURRENT,RX_CURRENT); delay_nms(2); WriteToCC1000(CC1000_CAL,0xa6); //啟動校正 delay_nms(50); p=0; do { //等待校正結(jié)束 k=ReadFromCC1000(CC1000_CAL); if(++p>FSKTIMEOUT) break; }while((k&0x08)==0); WriteToCC1000(CC1000_CAL,0x26); //結(jié)束校正 WriteToCC1000(CC1000_MAIN,CC1000_TXMODE);WriteToCC1000(CC1000_CURRENT,TX_CURRENT); delay_nms(2); WriteToCC1000(CC1000_CAL,0xa6); //啟動校正 delay_nms(50);p=0; do { //等待校正結(jié)束 k=ReadFromCC1000(CC1000_CAL); if(++p>FSKTIMEOUT) break; }while((k&0x08)==0); WriteToCC1000(CC1000_CAL,0x26); //結(jié)束校正 SetCC1000RxModel(); //CC1000初始狀態(tài)為接收狀態(tài)}設(shè)置發(fā)送狀態(tài)編程//*******************************************************************************//函數(shù)描述:SetCC1000TxModel()//FSK初始化為發(fā)送狀態(tài)//輸入?yún)?shù):無//輸出參數(shù):無//返回值:無//*******************************************************************************voidSetCC1000TxModel(void){unsignedchark;unsignedintp;p=0;do{ //設(shè)置狀態(tài)并判斷//0xff的作用是為了防止沒有加FSK模塊的情況WriteToCC1000(CC1000_MAIN,CC1000_TXMODE);k=ReadFromCC1000(CC1000_MAIN);if(++p>FSKTIMEOUT)break;}while((k!=0xff)&&(k!=CC1000_TXMODE));WriteToCC1000(CC1000_CURRENT,TX_CURRENT);delay_nms(2);if((otr.cfg.bFskTxP>10)||(otr.cfg.bFskTxP<-20))otr.cfg.bFskTxP=0;WriteToCC1000(CC1000_PA_POW,FskTxP_Table[otr.cfg.bFskTxP+20]);//設(shè)置發(fā)射功率delay_nms(2);}設(shè)置接收狀態(tài)編程//*******************************************************************************//函數(shù)描述:SetCC1000RxModel()//FSK初始化為接收狀態(tài)//輸入?yún)?shù):無//輸出參數(shù):無//返回值:無//*******************************************************************************voidSetCC1000RxModel(void){unsignedchark;unsignedintp;WriteToCC1000(CC1000_PA_POW,0x00);p=0;do{ //設(shè)置為接收狀態(tài)并判斷狀態(tài)是否正確設(shè)置//0xff的作用是為了防止沒有加FSK模塊的情況WriteToCC1000(CC1000_MAIN,CC1000_RXMODE);k=ReadFromCC1000(CC1000_MAIN);if(++p>FSKTIMEOUT)break;}while((k!=0xff)&&(k!=CC1000_RXMODE));WriteToCC1000(CC1000_CURRENT,RX_CURRENT);WriteToCC1000(CC1000_MODEM1,0x0F);}CC1000發(fā)射和接收頻率的配置編程〔頻率主要是送到天線上〕工作頻率是通過對配置存放器里的頻率字進行編程來設(shè)置的,有兩個頻率字存放器,分別叫A和B。它們可編程為兩種不同的頻率。其中一個頻率字能用于接收〔本振頻率〕,另一個用于發(fā)射〔發(fā)射頻率〕。這是為了能在發(fā)送模式和接收模式之間迅速切換。它們也能在兩個不同的通道中進行接收〔或發(fā)送〕,頻率字A或B由MAIN存放器里的F_REG位選定。頻率字A和B有24位3字節(jié)分別位于FREQ2A:FREQ1A:FREQ0A和FREQ2B:FREQ1B:FREQ0B。FSK分頻是在FSEP1:FSEP0存放器里10位編程的。CC1000的工作頻率計算公式為:其中頻率fref由晶振頻率除以REFDIV,CC1000的接收頻率為fVCO, CC1000的發(fā)送頻率為:f1=f0+fsep其中fsep公式為發(fā)射模式下的f0只要是低于FSK頻率就可以,//*******************************************************************************//函數(shù)描述:SetCC1000Freq()//輸入?yún)?shù):無//輸出參數(shù):無//返回值:無//*******************************************************************************voidSetCC1000Freq(){wordt;//設(shè)置接收頻率433.766MWriteToCC1000(CC1000_FREQ_2A,0x
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加油站服務(wù)合同范例
- 倉儲物流物料訂購合同范例
- 三棟鋪面出租合同范本
- 農(nóng)資商品購銷合同范本
- 環(huán)保沙發(fā)采購合同范本
- 合同范例范例租車
- 企業(yè)購買葡萄合同范本
- 口腔護士用工合同范例
- 卡制作合同范例
- 合同范本自助
- 2024 年袋鼠數(shù)學(xué)競賽 等級E(中國區(qū))
- 【《海信電器企業(yè)作業(yè)成本法下的物流成本核算分析》8500字】
- 2024年南京旅游職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫匯編
- 馬克思主義基本原理概論400道(考點提分)
- 研究生調(diào)劑合同
- MSDS中文版(鋰電池電解液)
- 2024年湖南生物機電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及一套參考答案
- 2022年袋鼠數(shù)學(xué)競賽真題一二年級組含答案
- JJF 2104-2024 海水溶解氧測量儀校準(zhǔn)規(guī)范
- 2024年中國煤科煤炭科學(xué)技術(shù)研究院有限公司招聘筆試參考題庫含答案解析
- 線切割操作規(guī)程培訓(xùn)
評論
0/150
提交評論