參考c51rf 3完全實驗手冊_第1頁
參考c51rf 3完全實驗手冊_第2頁
參考c51rf 3完全實驗手冊_第3頁
參考c51rf 3完全實驗手冊_第4頁
參考c51rf 3完全實驗手冊_第5頁
已閱讀5頁,還剩142頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、CC2430處理器基礎(chǔ)實 、CC2430基礎(chǔ)實驗一自動閃 、CC2430基礎(chǔ)實驗二按鍵控制開 、CC2430基礎(chǔ)實驗三按鍵控制閃 、CC2430基礎(chǔ)實驗四T1的使 、CC2430基礎(chǔ)實驗五T2的使 、CC2430基礎(chǔ)實驗六T3的使 、CC2430基礎(chǔ)實驗七T4的使 、CC2430基礎(chǔ)實驗八定時器中 、CC2430基礎(chǔ)實驗九外部中 、CC2430基礎(chǔ)實驗十片內(nèi)溫 、CC2430基礎(chǔ)實驗十一 、CC2430基礎(chǔ)實驗十二 、CC2430基礎(chǔ)實驗十三串口發(fā) 、CC2430基礎(chǔ)實驗十四在PC用串口控制 、CC2430基礎(chǔ)實驗十五在PC用串口收數(shù)并發(fā) 、CC2430基礎(chǔ)實驗十六串口時鐘PC顯 、CC2430基礎(chǔ)實驗十七系統(tǒng)睡眠工作狀 、CC2430基礎(chǔ)實驗十八系統(tǒng)喚 、CC2430基礎(chǔ)實驗十九睡眠定時器的使 、CC2430基礎(chǔ)實驗二十看門狗模 、CC2430基礎(chǔ)實驗二十一喂 、CC2430基礎(chǔ)實驗二十二定時喚 重要的宏定 程序?qū)? 實驗步 、熟悉SPP協(xié) 、選擇RF狀 、編 、程 、64位物理地址設(shè)定 實驗?zāi)?實驗內(nèi) 實驗設(shè) 實驗原 FDMA程序?qū)? 實驗步 5、ZigBee2004精簡版使 、zigbee介 、zigbee結(jié) 、ZigBee節(jié)點類 、ZigBee物理 、MAC 、編 、程 、64位物理地址設(shè)定 6、ZIGBEE2004協(xié)議UART0中 7、TI-MAC-1.1.0使用說明手 、熟悉MAC例 、MAC層結(jié)構(gòu) 、 、 、 、操 8、ZigBee2006演示代碼(見系統(tǒng)說明手冊 9、Zigbee2006串口互 實驗?zāi)?實驗內(nèi) 實驗設(shè) 代碼實 實驗步 10、ZigBee2006綁定實 、綁 、命 、程 、程 、選擇溫度設(shè)備編譯 11、SimpliciTI網(wǎng)絡(luò)實 流程 1、CC2430CC2430I/0LED可讀/可讀/P1端口普通功能P1DIR(P1方向寄存器70可讀/P1_760可讀/P1_650可讀/P1_540可讀/P1_430可讀/P1_320可讀/P1_210可讀/P1_100可讀/P1_0P1SEL(P1功能選擇寄存器70可讀/P1_760可讀/P1_650可讀/P1_540可讀/P1_430可讀/P1_320可讀/P1_210可讀/P1_100可讀/P1_0voidDelay(uintn);{uintfor(tt={uintfor(tt= for(ttfor(tt= for(tt= for(tt= for(tt= }{P1DIR|0x03;{P1DIR|0x03;/P10、P11RLED=1;} 、CC2430基礎(chǔ)實驗二CC2430P1參見實驗一說明文檔P1DIR參見實驗一說明文檔P1SEL參見實驗一說明文檔P1INP(P1輸入模式寄存器70可讀/60可讀/50可讀/40可讀/30可讀/20可讀/10可讀/00可讀/voidInitial(void)CC2430基礎(chǔ)實驗一。voidInitKey(void);voidvoid{P1SEL&=~0X0C;//P12,P13P1DIR&=~0X0C;P12P1INP|= } unsignedcharucharuchar{if(K1=={if(K1=={}//#defineK1}if(K2=={if(K2=={}}}返回1,P1_3對應(yīng)的按鍵按下返回2。、CC2430基礎(chǔ)實驗三 P1DIR參見實驗一說明文檔P1SEL參見實驗一說明文檔P1INPvoidInitial(void)CC2430基礎(chǔ)實驗一。voidInitKey(void);CC2430基礎(chǔ)實驗二。unsignedcharKeyScan(void);CC2430、CC2430基礎(chǔ)實驗四T11來改變小燈的狀態(tài),T1每溢出兩次,兩個小燈閃爍一次,并且在停止閃爍后成P1DIR見實驗一說明文檔P1SEL見實驗一說明文檔T1CTL(T1控制&狀態(tài)寄存器70可讀/60可讀/50可讀/40可讀/在在計數(shù)器達到計數(shù)可讀/定時器1計數(shù)時鐘分步0001832128可讀/00 自動重 比較計11方voidInitial(void);{{P1DIR0x03;//P10P11RLED=YLED //滅//用T1T1CTL0x3d;//128分頻;自動重裝模式(0x0000}、CC2430基礎(chǔ)實驗五T2, P1SELCC2430實驗一P1DIRCC2430實驗一T2C2配置寄存器70可讀/當比較中斷發(fā)生硬件置160可讀/當一個周期發(fā)生時50可讀/T2溢出比較中斷標志,當一個溢出比較發(fā)4—030可讀/0取T2計數(shù)值高81取T28位2—0110T200T2T2PEROF2(T22寄存器7060504-0溢出計數(shù)捕獲/溢出計數(shù)置溢出計數(shù)比較值的-164位的值得到最后一次發(fā)生捕獲時溢出計數(shù)值的19-16T2CAPHPH(T2周期寄存器高字節(jié)捕獲值/時間周期值高字節(jié),寫該寄存器設(shè)定T2寄存器得到后一次發(fā)生捕獲時溢出計數(shù)值T2CAPLPLT2周期寄存器低字節(jié)捕獲值/時間周期值低字節(jié),寫該寄存器設(shè)定T2寄存器得到后一次發(fā)生捕獲時溢出計數(shù)值700所有中16-0500140AES加中斷使013001200110ADC010001void{LED_ENALBLE();void{LED_ENALBLE();啟用//用T2來做實驗}EA=T2IE=1;\\\\\ IMER2_STOP() IMER2_RUN()#defineSET_TIMER2_OF_COUNTER(val)、CC2430基礎(chǔ)實驗六T3P1,P1SEL,P1DIR,T3CTL,T3CCTL0,T3CC0,T3CCTL1,T3CC1, P1SELCC2430實驗一P1DIRCC2430實驗一T3CTL(T3控制寄存器后再次分頻00000120104011816326412840T33120清計數(shù)值,寫1T30001DOWN(從0x00計數(shù)一次T3CC0計數(shù)UP/DOWN(0x00到T3CC0再到T3CCTL0(T30捕獲/比較控制寄存器7—061通道0比較輸出模式選時的發(fā)生0001(發(fā)生比較0010(發(fā)生比較0100111(發(fā)生上比為0或UP/DOWN發(fā)生下比較為0或UP/DOWN模式下0xff時)0x00時)200001T3CC0(T30捕獲/比較值寄存器T3CCTL1(T31捕獲/比較控制寄存器7—0610通道1比較輸出模式選時的發(fā)生0001(發(fā)生比較0010(發(fā)生比較0100111(發(fā)生上比為0或UP/DOWN模式下1000(為0或UP/DOWN模式下1011(發(fā)生比較0xff時)1100(發(fā)生比較0x00時)11120010001T3CC1(T31捕獲/比較值寄存器void{void{RLED=1;YLED=//初始化TIMER34_ENABLE_OVERFLOW_INT(3,1);開T3 #pragmavector=#pragmavector=interruptvoid{//IRCON={counter=0;}}//10次中斷LEDEA=1;T3IEEA=1;T3IE=(val)?T##timer##CTL|0x08:T##timer##CTL&~0x08;\\復位T3相關(guān)寄存器#defineTIMER34_INIT(timer)\#defineTIMER34_INIT(timer)\do T##timer##CTL=0x06;\T##timer##CCTL0=0x00;\T##timer##CC0=0x00;\T##timer##CCTL1=0x00;\T##timer##CC1=0x00;}while(T3CTL=(val)?T3CTL|0X10:\功能:val1,T3正常運行,val0,T3停止計數(shù)設(shè)置T3工作方式、CC2430基礎(chǔ)實驗七T4P1,P1SEL,P1DIR,T4CTL,T4CCTL0,T4CC0,T4CCTL1,T4CC1, P1SELCC2430實驗一P1DIRCC2430實驗一T4CTL(T4控制寄存器后再次分頻00000120104011816326412840T43120清計數(shù)值,寫1T40001DOWN(從0x00計數(shù)一次T4CC0計數(shù)UP/DOWN(0x00到T4CC0再到T4CCTL0(T40捕獲/比較控制寄存器7—061通道0比較輸出模式選時的發(fā)生0001(發(fā)生比較0010(發(fā)生比較0100111(發(fā)生上比為0或UP/DOWN模式下1000(為0或UP/DOWN模式下1011(發(fā)生比較0xff時)1100(發(fā)生比較0x00時)11120010001T4CC0(T40捕獲/比較值寄存器T4CCTL1(T41捕獲/比較控制寄存器7—0610通道1比較輸出模式選時的發(fā)生0001(發(fā)生比較0010(發(fā)生比較0100111(發(fā)生上比為0或UP/DOWN模式下1000(發(fā)生上比為0或UP/DOWN發(fā)生下比較1011(發(fā)生比較0xff時)1100(發(fā)生比較0x00時)11120010001T4CC1(T41捕獲/比較值寄存器void{P1DIRvoid{P1DIR=led1=led2=//初始化TIMER34_ENABLE_OVERFLOW_INT(4,1);//開T4#pragmavector=#pragmavector=interruptvoid{//IRCON={counter=0;}}//10次中斷LEDEA=1;T4IEEA=1;T4IE=(val)?T##timer##CTL|0x08:T##timer##CTL&~0x08;\\復位T4相關(guān)寄存器 IMER34_INIT(timer)\do IMER34_INIT(timer)\do T##timer##CTL=0x06;\T##timer##CCTL0=0x00;\T##timer##CC0=0x00;\T##timer##CCTL1=0x00;\T##timer##CC1=0x00;}while \(T##timer##CTL=(val)?T##timer##CTL|0X10:功能:timer34。val1,定時器正常運行,val0,定時器停\\\T4CTL&=~0X03;\/*UP/ runing*/*/*/\4_MODE_MODULO4_MODE_UP_DOWN、CC2430基礎(chǔ)實驗八4來改變小燈的狀態(tài),T42000實驗中操作了的寄存器有P1,P1SEL,P1DIR,T4CTL,T4CCTL0,T4CC0,T4CCTL1,T4CC1 P1SELCC2430實驗一P1DIRCC2430實驗一 void{P1DIRvoid{P1DIR=led1=led2=//初始化TIMER34_ENABLE_OVERFLOW_INT(4,1);開T4#pragmavector=#pragmavector=interruptvoid{IRCON=0x00; if(counter<1000)counter++;//10次中斷LED閃爍一輪{counter GlintFlag //GlintFalg1,LED}}do{T##timer##CTL=(val)do{T##timer##CTL=(val)?T##timer##CTL|0x08:T##timer##CTL&~0x08;EAEA=T4IE=\\#defineTIMER34_INIT(timer)\do#defineTIMER34_INIT(timer)\do T##timer##CTL=0x06;\T##timer##CCTL0=0x00;\T##timer##CC0=0x00;\T##timer##CCTL1=0x00;\T##timer##CC1=0x00;}while \(T##timer##CTL=(val)?T##timer##CTL|0X10:功能:timer34。val1,定時器正常運行,val0,定時器停\\\T4CTL&=~0X03;\/*UP/ runing*/*/*/\4_MODE_MODULO4_MODE_UP_DOWN、CC2430基礎(chǔ)實驗九 P1SELCC2430實驗一P1DIRCC2430實驗一P1INPCC2430實驗二P1IEN(P1口中斷掩碼70P1760P1650P1540P1430P1320P121000P10PICTL(P口中斷控制寄存器7—06050403020P2(0-4)10P1(0-7)00P0(0-7)P1IFG(P1口中斷標志寄存器1—5040302010P200void{void{RLED=GLED=P2INP&=~0X40;P1IEN|= //P12PICTL|=0X02;EA=1;IEN2|=//P1IE=P1IFG&= }#pragmavector=#pragmavector=interruptvoid{ {P1IFG=0;}}P1IF=}、CC2430基礎(chǔ)實驗十 CLKCON(時鐘控制寄存器7132K32KRC6132M RC000001010011110—SLEEP(睡眠模式控制寄存器7—060R50RR00011020R/W時候硬件清001000017—060T1I/O50T3I/O40T4I/O—100070SPI6050SPISPI40302010U0BUF的00RU0GCR(0常規(guī)控制寄存器7001空600由CPOL跳向非CPOL時采樣,CPOL跳向CPOL時輸出1CPOL跳向CPOL采樣,由CPOL跳向非CPOL5001在U0BAUD(0波特率控制寄存器波特率尾數(shù),與70RADC60R啟 轉(zhuǎn)0001111600)00普通模式 01LFSR-讀/AD轉(zhuǎn)換參考電 1.25V入外部參考電壓AIN7讀/ 8位 10 12 14位讀/A/D轉(zhuǎn)換選擇,如果A/D轉(zhuǎn)換后立A/DvoidDelay(uintvoid{void{CLKCONCLKCON&=while(!(SLEEP&CLKCON&=SLEEP|=PERCFG=P0SEL=U0GCR|=10;U0BAUD|=UTX0IF=//baud_e=U0CSR|=IEN0|=}I/0P10,P11LEDP0口設(shè)voidUartTX_Send_String(char*Data,intvoidvoidUartTX_Send_String(char*Data,int{intj;{U0DBUF=*Data++;while(UTX0IF==UTX0IF=}}*data為發(fā)送緩沖的指針,len為發(fā)送數(shù)據(jù)的長度,在初始化串*((BYTE*((BYTExdata*)0xDF26)= UINT16accValue;UINT16value;for(i=0;i<4;i++{value=ADCL>>value|=(((UINT16)ADCH)<<}value=accValue>>2;//devidebyreturn (((ADC_VALUE)>>4)-、CC2430基礎(chǔ)實驗十一 U0GCR參見實驗十U0BAUD參見實驗十 ADCCON1參見實驗十ADCCON3參見實驗十 voidDelay(uintvoidUartTX_Send_String(char*Data,intlen);參見實驗十voidInitialAD(void);voidvoid{//P1outled1=led2=//P1控制ADCH&=ADCCON1=

//清EOCADCCON1|0X40;//}14位(最高精度)ADADC轉(zhuǎn)換。、CC2430基礎(chǔ)實驗十二 U0GCR參見實驗十U0BAUD參見實驗十 ADCCON1參見實驗十ADCCON3參見實驗十 voidDelay(uintvoidUartTX_Send_String(char*Data,intlen);參見實驗十voidInitialAD(void);voidvoid{//P1outled1=led2=//P1控制//ADCH&=0X00;ADCCON1=//清EOCADCCON1|0X40;//}P10,P11LEDAD轉(zhuǎn)換源設(shè)為電源電壓,參考電壓為電、CC2430基礎(chǔ)實驗十三特率為57600。 voidDelay(uintvoid{CLKCONvoid{CLKCON&=CLKCON&=~0x47;//TICHSPD128分頻,CLKSPDSLEEP|= PERCFG=P0SEL=0x3c;P2DIR&=~0XC0;//1P0U0GCR|=10;U0BAUD|=UTX0IF=}波特率為57600。使用晶振作為系統(tǒng)時鐘源。voidUartTX_Send_String(char*Data,int{intj;voidUartTX_Send_String(char*Data,int{intj;{U0DBUF=*Data++;while(UTX0IF==UTX0IF=}}函數(shù)功能:串口發(fā)字串,*Data為發(fā)送緩存指針,len、CC2430基礎(chǔ)實驗十四PC命令是“11”。P1,P1DIR,P1SEL,CLKCON,SLEEP,PERCFG,U0CSR,U0GCR,U0BAUD,IEN0,U0DUB等寄存 U0GCR參見實驗十U0BAUD參見實驗十 voidDelay(uintn)void{CLKCONvoid{CLKCON&=CLKCON&=~0x47;//TICHSPD128分頻,CLKSPDSLEEP|= PERCFGPERCFG=P0SEL=P2DIR&=U0GCR|=10;U0BAUD|=UTX0IF=}波特率為57600。使用晶振作為系統(tǒng)時鐘源。voidUartTX_Send_String(char*Data,int{intj;voidUartTX_Send_String(char*Data,int{intj;{U0DBUF=*Data++;while(UTX0IF==UTX0IF=}}函數(shù)功能:串口發(fā)字串,*Data為發(fā)送緩存指針,len為發(fā)送字串的長度,只能是在初始化函數(shù)voidinitUARTtest(void)調(diào)用才有效。發(fā)送完畢后返回,無返回值。interruptvoidinterruptvoid{URX0IF=0; temp=U0DBUF;}存放到temp變量,然后在主程序中去處理接收到的數(shù)據(jù)。、CC2430基礎(chǔ)實驗十五PC字串末字節(jié),CC2430PC,用串口助手可以顯示P1,P1DIR,P1SEL,CLKCON,SLEEP,PERCFG,U0CSR,U0GCR,U0BAUD,IEN0,U0DUB等寄存 U0GCR參見實驗十U0BAUD參見實驗十 voidDelay(uintn);定性延時,參見實驗一voidinitUARTtest(void);參見實驗十五voidUartTX_Send_String(char*Data,intlen);參見實驗十五voidUART0_ISR(void);參見實驗十五、CC2430基礎(chǔ)實驗十六PC U0GCR參見實驗十U0BAUD參見實驗十 -50P0403020100070捕捉RF61T10模式比較輸出選擇,指定計數(shù)值過T3CC0時的發(fā)生0001(發(fā)生比較0100111(發(fā)生上比為0或UP/DOWN模式下為0或UP/DOWN模式下2010001T1CC0H(T10捕獲值/比較值高字節(jié)寄存器7T10捕獲值/T1CC0L(T10捕獲值/比較值低字節(jié)寄存器7T10捕獲值/voidDelay(uintn);定性延時,參見實驗一voidinitUARTtest(void);參見實驗十五voidUartTX_Send_String(char*Data,intlen);參見實驗十五voidUART0_ISR(void);參見實驗十五void{T1CCTL0void{T1CCTL0=//T1CCTL0//T1ch0T1CC0L=//0x0400=T1CTL|=//start//MODEIEN1|=0X02;IEN0|=//開T1},T1CC0void{CLKCONvoid{CLKCON=//TICKSPD1110.25M} }void{void{P0SEL=0x3c;//1P0U0GCR|=10;U0BAUD|=UTX0IF=U0CSR|=IEN0|=}voidT1_ISR(void);interruptinterruptvoid{if(counter=={counter=timetemp led1 //}}LEDinterruptvoidinterruptvoid{URX0IF=0; temp=U0DBUF;}、CC2430基礎(chǔ)實驗十七在小燈閃爍10次以后進入低功耗模式PM3。CC2430一共有4種功耗模式,分別是 -1-000R0/WSLEEP.MODEvoid void #define#definedo\\if(mode== {SLEEP&=~0x03;}elseif(mode==3){SLEEP|=0x03;}elseelse{SLEEP&=~0x03;SLEEP|=mode;PCON|=0x01;}while}\\、CC2430基礎(chǔ)實驗十八實驗中操作了的寄存器有P1,P1DIR,P1SEL,P1IEN,P1CTL,IEN2,IEN0,P1IFG,P1INP,P2INP,CLKCON,SLEEP等寄存器。 P2INP(P2輸入模式寄存器70可讀/0160可讀/0150可讀/0140可讀/0130可讀/0120可讀/0110可讀/01void voidvoidvoid{RLED=1;YLED=P1DIR&=P1INP&=~0X0c;//有上拉、下拉P2INP&=~0X40;//選擇上拉P1IEN|= //P12PICTL| EAEA=IEN2|=0X10;//P1IE=P1IFG|= //P12voidPowerMode(ucharvoidvoidPowerMode(uchar{i=sel;{SLEEP&=SLEEP|=PCON=0x01;}{PCON=}}CPUPM0-PM3而不可以從PM0-PM3進入全速運行。、CC2430基礎(chǔ)實驗十九5PM2,在PM2SLEEPTIMER(ST)仍5PM2,這樣周而復始的喚醒工作然后睡眠。系統(tǒng)睡眠的時間為8分32秒,這已經(jīng)是最長睡眠時間。 睡眠定時器計數(shù)/比較值[23-16]位。讀出為ST睡眠定時器計數(shù)/比較值睡眠定時器計數(shù)/比較值[7-0]ST計void voidvoidvoid{ST2=0X00;ST1=0X0f;ST0=EA1;//開中斷STIE=1;STIF=}0x000f00voidvoidvoid{{RLED=}}interruptvoidinterruptvoid{STIF=}{P1DIR|=0X03;\\\\\\制RLEDRLED=GLED=}{P1DIR&=}\\\\\\\#defineRLED#defineGLED#defineSET_MAIN_CLOCK_SOURCE(source)\do{ #defineSET_MAIN_CLOCK_SOURCE(source)\do{ if(source) CLKCON|=0x40; SLEEP|=/*關(guān)掉不用的*/\}elseSLEEP&=\\\ CLKCON&=~0x47;/*晶振*/ SLEEP|=0x04; }while#defineRC#define#define\\(source==RC)?(CLKCON|=0X80):(CLKCON&=~0X80);、CC2430基礎(chǔ)實驗二十象是一只小燈不斷閃爍,這是因為程序中啟動了看門狗,看門狗時間長度為11秒內(nèi)沒有復位看門狗的話,系統(tǒng)將復位。系統(tǒng)復位后再次開啟看門狗,1秒后復位。 30定時器模式下寫0停止0無效2010.25 15.625 1.9(32.768K時鐘計算voidvoidvoid{uintn;for(n=50000;n>0;n--for(n=50000;n>0;n--for(n=50000;n>0;n--for(n=50000;n>0;n--for(n=50000;n>0;n--for(n=50000;n>0;n--for(n=50000;n>0;n--}voidInit_IO(void);voidvoid{P1DIR=led1=led2=}voidvoidvoid{WDCTL=WDCTL|=0x08;}voidvoidvoid{CLKCON=}}、CC2430基礎(chǔ)實驗二十一 voidDelay(void); voidInit_IO(void);參見實驗二十voidInit_Watchdog(void);參見實驗二十voidInit_Clock(void);參見實驗二十void{WDCTLvoid{WDCTL=WDCTL=}、CC2430基礎(chǔ)實驗二十二83230CC2430進入PM2模式,在達到指定時間后小燈閃爍,再次是設(shè)定喚醒時間,進入PM2,喚醒的循 void voidLedGlint(void);參見實驗十九void{EAvoid{EA1;STIE=STIF=}(ST)ST的中斷標志位STIE=STIF=}{UINT32{UINT32sleepTimer=sleepTimer|=sleepTimer|=(UINT32)ST1<<8;sleepTimer|=(UINT32)ST2<<sleepTimer+=((UINT32)sec*ST1=(UINT8)(sleepTimer>>8);ST0=(UINT8)sleepTimer;}#define#definedo\if(mode== {SLEEP&=~0x03;elseif(mode==3){SLEEP|=0x03;else{SLEEP&=~0x03;SLEEP|=PCON|=}while}\\\\\\了解SPP的使用 CULBOOLsppInit(UINT32frequency,BYTESimplePacketProtocol(SPP)DMA管理器DMARxFIFOTxFIFO4管理器同樣部分配置為發(fā)送,工作在特定的頻率,在發(fā)送時自動計算和和檢查CRC值。參數(shù)描述(kHz.; BYTEsppSend(SPP_TX_STRUCT*道傳送有效載荷到TxFIFO前,如果期望應(yīng)當,設(shè)置相應(yīng)的標志。 返回:發(fā)送成功返回TRUE,失敗返回FALSE。voidsppReceive(SPP_RX_STRUCT生一個中斷同時運行以前定義的函數(shù)rxCallBack。 voidvoid{}voidvoid{BYTEsendBuffer[]=" {YLED=res=radioSend(sendBuffer,sizeof(sendBuffer),remoteAddr,DO_NOT_ACK);YLED={{GLED=}{GLED=}}}radioSend函數(shù)來發(fā)送數(shù)據(jù),似乎與前面提到的sppSend發(fā)送數(shù)據(jù)不一樣,但是實際上是一樣的,因為在radioSend函數(shù)中調(diào)用了sppSend函數(shù)。voidvoid{ BYTEres;{YLED=YLED=LED_OFF;if(res=={GLEDGLED=}{GLED=}GLED=}}了sppReceive函數(shù)來接收數(shù)據(jù)。#ifdef#ifdefmain(void){#en#ifdef{myAddr=ADDRESS_0;{{myAddr=ADDRESS_1;}}例如:在RX工程下: 點對點無線通信、程 分別將TX和RX到兩個模塊。、64解壓縮ChipconFlashProgrammer_1_38.zip文件可以看到 這個圖標打開FLASH燒寫工具。最后點擊“WriteIEEE”按鈕,寫入64此時工具提示“IEEEsuccessfullywrittentochipFDMA系統(tǒng)中,分配給用戶一個信道,即一對頻譜,一個頻譜用作前向信道即2個信道(2對頻譜)頻分多址(FDMA)技術(shù)將可用的頻率帶寬拆分為具有較窄帶寬的子信道,如圖所示。FDMA是一個多頻率的通信方式,在實驗中信道的改變是必要的,頻段設(shè)置2.4GHzCHANNR當上電復位后,小燈閃爍三次后,發(fā)送模塊1、2的紅交替閃爍,并發(fā)送數(shù)據(jù),發(fā)送1發(fā)送的數(shù)據(jù)為:ConnecttoNO.12發(fā)送的數(shù)據(jù)為:ConnecttoNO.2。發(fā)送Tx1Tx2Tx1Tx2發(fā)現(xiàn)有合格的數(shù)據(jù)包,就會自動進行接收。這就實現(xiàn)了點(Rx模塊)對多點(Tx1和模塊FDMA接收程序主要是在兩個頻道上循環(huán),如果有收到發(fā)送模塊的信號,就跳到另外一個頻道繼續(xù)。CC2420和CPULED點亮后FDMA發(fā)送程序主要功能為循環(huán)發(fā)送數(shù)據(jù),程序開始同樣是初始化程序,初始化射頻部分CC2420和 略。(請參考具體源代碼 有詳細的注釋,疑問請公司技術(shù)支持IAR工程后,可以看到如下圖所示的窗口,在本窗口中可以看到,這個工程通過說明書中IAR使用方法代碼,將接收部分代碼到模塊中。運行后小燈閃用同樣的方法TX2\TX1,程序運行后,液晶同樣會顯示無線龍圖表和模塊編號、Transmiting等字樣,小燈同時閃爍三次后,小燈循環(huán)閃爍,并發(fā)送數(shù)據(jù),當兩個發(fā)送5、ZigBee2004學會在ZigBee2004精簡版協(xié)議棧添加應(yīng)用、zigbeeZigBeeZigBee還開發(fā)了安全層、zigbee、ZigBeeZigBee協(xié)調(diào)者---coord初始化網(wǎng)絡(luò)信息ZigBee路由器---routerZigBee終端節(jié)點---rfd、ZigBee理服務(wù)。物理層數(shù)據(jù)服務(wù)從無線物理信道上收發(fā)數(shù)據(jù)。物理管理服務(wù) 、MAC數(shù)據(jù)單元在物理層數(shù)據(jù)服務(wù)中正確收發(fā)。MAC層管理服務(wù):一個MAC子層協(xié)處理和保護時隙(GTS)機制;ZigBee協(xié)議棧的部分在網(wǎng)絡(luò)層。網(wǎng)絡(luò)層主要實現(xiàn)節(jié)點加入或離開網(wǎng)絡(luò)、接收或拋棄其他節(jié)點、路由查找及傳送數(shù)據(jù)等功能,支持Cluster-Tree等多種路由算法,支持星形(StarTreeZigBee應(yīng)用層框架包括應(yīng)用支持層(APS)、ZigBee設(shè)備對象(ZDO)和制造商所定義的應(yīng)發(fā)起和響應(yīng)綁定請求,在網(wǎng)絡(luò)設(shè)備之間建立安全機制。ZigBee設(shè)備對象還負責發(fā)現(xiàn)網(wǎng)絡(luò)中、協(xié)議棧ZIGBEE協(xié)議可以看出如果是非協(xié)調(diào)器(路由器或終端)那么調(diào)用了加入網(wǎng)絡(luò)函數(shù)aplJoi 如果是終端設(shè)備,那么發(fā)送數(shù)據(jù)的目的地址為 發(fā)送數(shù)據(jù)到協(xié)調(diào)器路由器voidPong(void)switch(ppState){casePP_STATE_START_RX://case //case //case //}}\ZigBee協(xié)議棧(coord(router、程或、64解壓縮ChipconFlashProgrammer_1_38.zip文件可以看到圖標,雙擊這個圖標打開FLASH燒寫工具。最后點擊“WriteIEEE”按鈕,寫入64此時工具提示“IEEEsuccessfullywrittentochip支持一個網(wǎng)絡(luò)協(xié)調(diào)者和多個RFD然后打開RFD模塊的電源,此時觀察網(wǎng)絡(luò)協(xié)調(diào)器模塊的紅色LED有表示RFD模塊加入到網(wǎng)絡(luò)中,此時RFD的紅色LED點亮,并且綠色LED跟網(wǎng)絡(luò)協(xié)調(diào)者然后打開路由器模塊的電源,此時觀察網(wǎng)絡(luò)協(xié)調(diào)器模塊的紅色LED是否閃爍兩次,如果有表示路由器模塊加入到網(wǎng)絡(luò)中,此時路由器模塊的紅色LED如果路由器的紅色LED閃爍兩次有表示RFD如果網(wǎng)絡(luò)協(xié)調(diào)器模塊的紅色LED閃爍兩次有表示RFD狀網(wǎng)絡(luò))此時RFD的紅色LED點亮,并且綠色LED跟網(wǎng)絡(luò)協(xié)調(diào)者的模塊開始同步閃爍(RFD節(jié)點通過路由器的網(wǎng)絡(luò)協(xié)調(diào)器模塊通信)如果現(xiàn)在關(guān)掉路由器節(jié)點的電源,RFD、MAC、、MAC的功能為:掃描、連接和離開網(wǎng)絡(luò)、網(wǎng)絡(luò)開始、PANID配置、間接數(shù)據(jù)、、 始化。其他的初始化,如射頻,中斷和Mac也需要在這里進行。系統(tǒng)初始化完畢后,調(diào)用osal_start_system()開始運行任務(wù)。osalAddTasks()定每個的任務(wù)優(yōu)先級,從0-255(最低-最高)。MSA_Init應(yīng)用程序的初始化。Mac被初始化為設(shè)備或協(xié)調(diào)契。MAC被復位,通過鍵盤來確定設(shè)備類型。task_id指派一個價值用到osaltaskadd()函數(shù);MAC_CbackEvent()MSA_DeviceStartup()MSA_AssociateRspMSA_ScanReq調(diào)用lMAC_MlmeScanReq() #defineMSA_WAIT_PERIOD:S1(UPS1(UPS(RIGHTS5(RIGHT個設(shè)備,模塊G燈停止閃爍。9、Zigbee2006//cd lude lude<string //cd lude lude<string ** 明:57600-8-n-voidinitUARTtest(void){CLKCON&=~0x40; while(!(SLEEP&0x40)); CLKCON&= //TICHSPD128分頻,CLKSPDSLEEP|=0x04; //關(guān)閉不用的RC振蕩器PERCFG=0x00; //位置1P0口P0SEL|=0x0C; //P0用作串口P2DIR&=~0xC0; //P0優(yōu)先作為串口0U0CSR|=0x80; //UART方式UTX0IF=} data: ** 明voidUartTX_Send_String(char*Data,intlen){intj;{U0DBUF=*Data++;while(UTX0IF==UTX0IF=}}voidUartTX_Send_Single(char{U0DBUF=single_Data;while(UTX0IF==0);UTX0IF=}函數(shù)名:charUartRX_Receive_CharcharUartRX_Receive_Char(void){charunsignedcharstatus;status=U0CSR;U0CSR|=while(!URX0IF);c=U0DBUF;URX0IF=0;U0CSR=status;returnc;}函數(shù)名:voidUart_Baud_rate(intvoidUart_Baud_rate(intBaud_rate){switch{caseU0GCR|=U0BAUD|=59; caseU0GCR|=U0BAUD|=59; caseU0GCR|=U0BAUD|=59; caseU0GCR|=U0BAUD|=216; caseU0GCR|=U0BAUD|=59; caseU0GCR|=U0BAUD|=216; casecaseU0GCR|=U0BAUD|=U0GCR|=U0BAUD|=U0GCR|=U0BAUD|=U0GCR|=U0BAUD|=U0GCR|=U0BAUD|=}}uint8SendData(uint8*buf,uint16addr,uint8Leng){ SendDataAddr.addrMode=(afAddrMode_t)Addr16Bit; SendDataAddr.endPoint=SAMPLEAPP_ENDPOINT;SendDataAddr.addr.shortAddr=addr; &SampleApp_TransID信息ID(操作系統(tǒng)參數(shù)//{return}{return0;//Erroroccurredinrequestto}}點的物理地址和網(wǎng)絡(luò)地址放到一個buffer里面。小燈閃爍兩次。voidvoidSampleApp_MessageMSGCB({intnew_node_flag;new_node_flag=if(clear=={JoinNode.RouterCount=JoinNode.RfdCount=clear=}switch(pkt->clusterId{omingMSGPacket_t*pktcasecase#ifdefined(ZDO_COORDINATOR) if((RxBuf[0]=='n')&&(RxBuf[1]=='e')&&(RxBuf[2]=='w')){if((RxBuf[3]R&&(RxBuf[4]O&&RxBuf[5]U'))//{for(int{for(int{ { }{new_node_flag j+=}}if(new_node_flag=={i }}if(new_node_flag=={for(int{ ddr[JoinNode.RouterCount][7-i] } ddr[JoinNode.RouterCount][8]=RxBuf[6+8]; ddr[JoinNode.RouterCount][9]=RxBuf[6+9];JoinNode.RouterCount++;}}UartTX_Send_String(UartTX_Send_String( }#elifdefined(RTR_NWK)&&(!defined(ZDO_COORDINATOR)) HalLedBlink(HAL_LED_4,250,100 }}voidSPIMgr_ProcessZToolDatavoidSPIMgr_ProcessZToolData(uint8port,uint8event{ints;#ifdefintif(event=={//DosomethingwhenTXiffull}&| {while{HalUARTReadSPI_MGR_DEFAULT_PORT,&Uart_Rx_Data[Uart_len switch{casestate=casestate=CMD_STATE2;caseCMD_Token[1]=0x0000caseLEN_Token=Uart_Rx_Data[Uart_len];if(Uart_Rx_Data[Uart_len]==0)tempDataLen=0;//AllocatememoryfortheSPI_Msg=(mtOSALSerialData_t*)osal_msg_allocate(sizeof(mtOSALSerialData_t)+2+1+LEN_Token);if{//FillupwhatweSPI_Msg->hdr.event=CMD_SERIAL_MSG;SPI_Msg->msg=(uint8*)(SPI_Msg+1);SPI_Msg->msg[0]=CMD_Token[0];SPI_Msg->msg[1]=CMD_Token[1];SPI_Msg->msg[2]=LEN_Token;}{}caseSPI_Msg->msg[3+tempDataLen++]=Uart_Rx_Data[Uart_len];if(tempDataLen==LEN_Token)caseFSC_Token=//Makesureit'sif((SPIMgr_CalcFCS((uint8*)&SPI_Msg->msg[0],2+1+LEN_Token)=={osal_msg_send(MT_TaskID,(byte*)SPI_Msg}{//deallocatetheosal_msg_deallocate((uint8}//Resetthestate,sendordiscardthebuffersatthispointstate=SOP_STATE;}}#ifdef{for({ ddr[k][s] { }{new_node_flag s+=}}if(new_node_flag=={f=Short_Add=JoinNode.Rou k+=JoinNode.RouterCount;Short_Add }}if(new_node_flag=={Short_Add|=JoinNode.Rou for(s=0;s<(Uart_len-8);s++){} }#elifdefined(RTR_NWK)&&(!defined(ZDO_COORDINATOR)){ //取串口接收的數(shù)據(jù)到發(fā)送buf} }}#endif略。(請參考具體源代碼 有詳細的注釋,疑問請公司技術(shù)支持熄滅,表示網(wǎng)絡(luò)已經(jīng)建立成功,并通過串口發(fā)送”haha!Neworkfoundsucceed”。此時協(xié)滅,路由器會通過串口發(fā)送“haha!Roujiondsucceed”,同時協(xié)調(diào)器在收到加入信息后紅燈也閃爍兩次,并將路由器的地址到PC“newROU00000005(”new”:表160x0001為“oworld!”哪么發(fā)送的數(shù)據(jù)為“00000005oworld。10、ZigBee2006 ZigBee2006應(yīng)用接口(simple從開關(guān)設(shè)備發(fā)送一個改變燈狀態(tài)ZB系統(tǒng)復位ZB啟動請求配ZB讀配置ZB寫配置(zb_ZB獲得設(shè)備信息發(fā)現(xiàn)(設(shè)備,網(wǎng)絡(luò)和服務(wù)發(fā)現(xiàn)ZB發(fā)現(xiàn)設(shè)備請求ZB綁定設(shè)備請求ZB允許綁定請求ZB加入請求ZB發(fā)送數(shù)據(jù)請求ZB接收數(shù)據(jù)指示協(xié)調(diào)器將掃描所有被ZCD_NV_CHANLIST參數(shù)指定的通道和選擇一個最少能量的通協(xié)調(diào)器將選擇用ZCD_NV_PANID參數(shù)指定的網(wǎng)絡(luò)ID。路由器和終端設(shè)備將掃描用ZCD_NV_CHANLISTIDZCD_NV_PANID參數(shù)指定的 uint32ScanChannels,bytescanDurationuint32ScanChannels,byteScanDuration devStartModes_tstartMode,bytebeaconOrder,bytezb_BindDevice(uint8 uint16commandId,//ID,基于某命令的綁定uint8*pDestination//指向擴展地址指針數(shù)為FALSH,設(shè)備該示范例子有兩種應(yīng)用設(shè)備類型---下SW2她將使該設(shè)備作為路由器啟動。(TOGGLE)設(shè)備自動加入網(wǎng)絡(luò)(LED3閃亮---開關(guān)設(shè)備,協(xié)調(diào)器建立網(wǎng)絡(luò)LED3點亮,路由器加入網(wǎng)絡(luò)LED3點亮上的LED1狀態(tài)切換。 7.1simple用兩個模塊,選擇管理器編譯7.2選擇管理器(燈7.2((0指示0oC25564oC0.25oC工具或超級終端上看到,為了提高網(wǎng)絡(luò)的負載,可以增加收集節(jié)點。后它將自動的去發(fā)現(xiàn)新的節(jié)點綁定。該實驗只有一個命令---SENSOR_REPORT_CMD_ID,校準參數(shù)。另外2430的溫度傳感器經(jīng)實驗檢驗確,可以采用外部溫度傳感器,不過這里為了實驗方便,仍然采用溫度傳感器。 S1,使之進入允許綁定模式,在該模式下,LED1處于點亮狀態(tài);通過按下S4,可以允許綁定模式,此時LED1關(guān)閉。用的是串口傳輸?shù)絇C機,通過串口調(diào)試工具可以觀察到。 下主要取、程、選擇開關(guān)設(shè)備編譯 下主要取、程、選擇溫度設(shè)備編譯11、SimpliciTI入網(wǎng)絡(luò)的功能全部包含,只需要編寫需要的應(yīng)用部分就可以了。德州儀器(TI)推出的針對簡單小型RF網(wǎng)絡(luò)的專有低功耗RF協(xié)議——SimpliciTI網(wǎng)絡(luò)協(xié)議。SimpliciTI網(wǎng)絡(luò)協(xié)議能夠簡化實施工作,盡可能降低微控制器的資源占用。在CC1110/CC2510/CC2430等片上系統(tǒng)(SoC)或MSP430超低功耗微控制器與CC110x/CC2500RFRF協(xié)議對降低最終應(yīng)用的功耗至關(guān)重要。SimpliciTI網(wǎng)絡(luò)協(xié)議將支持客戶開發(fā)超低功耗系統(tǒng),同時降低系統(tǒng)成本,加速產(chǎn)品上小型低功耗RF網(wǎng)絡(luò)通常包含電池供電的設(shè)備,這就需要較長的電池使用,以及較低的數(shù)據(jù)速率與占空比,而且直接相互通信的節(jié)點數(shù)量也非常有限。利用SimpliciTI網(wǎng)MCURF網(wǎng)絡(luò)的系統(tǒng)成本。需要路由功能的更復雜的網(wǎng)狀網(wǎng)絡(luò)通常需要10倍之多的程序器與RAM。盡管所需的資源不多,但SimpliciTI網(wǎng)絡(luò)協(xié)議依然能夠支持點對點通信,這種選擇方案不僅可使用數(shù)據(jù)(AccessPoint)來并發(fā)送消息,還能通過范圍擴展設(shè)備(rangeextender)來擴大網(wǎng)絡(luò)覆蓋范圍以支持四次網(wǎng)絡(luò)跳轉(zhuǎn)。今后推出的版本還將添加頻率捷變(frequencyagility)等先進功能。SimpliciTI網(wǎng)絡(luò)協(xié)議專為簡單的RF網(wǎng)絡(luò)而設(shè)計,對適合網(wǎng)狀路由與配置的大型網(wǎng)絡(luò)的ZigBee而言是一種很好的補充。SimpliciTI網(wǎng)絡(luò)協(xié)議支持各種低功耗應(yīng)用,如與安全(煙霧探測器、玻璃破碎檢測器、車庫開門器、環(huán)境設(shè)備)以及有源RFID等。1SimpliciTISimpliciTI網(wǎng)絡(luò)協(xié)議提供給應(yīng)用層同級間的信息交流。這同級設(shè)備可以是傳感器設(shè)備也NetworkLayer(NWK)網(wǎng)絡(luò)層,LiteHardware 2SimpliciTI3SimpliciTI(MAC/LLC協(xié)議內(nèi)提供一個射頻層(Radio)與網(wǎng)絡(luò)層(NWK連接的應(yīng)用板支持層程序包(BoardNWKapplicationsNWKapplications網(wǎng)絡(luò)應(yīng)用層提供網(wǎng)絡(luò)層管理,除了提供外部 很多供用戶開發(fā)的接口PORT,表1詳細列出了相關(guān)的應(yīng)用及描述。1PORT兩個部分網(wǎng)絡(luò)應(yīng)用層及用戶程序應(yīng)用層即NWKapplications和Peerapplications。2SimpliciTI層無有SimpliciTI2種基本網(wǎng)絡(luò)拓撲結(jié)構(gòu),其一為星狀網(wǎng)絡(luò)拓撲,它包括一個數(shù)據(jù)(AccessPoint),數(shù)據(jù)主要負責網(wǎng)絡(luò)管理。數(shù)據(jù)為終端節(jié)點(EndDevices)提4SimpliciTI協(xié)議應(yīng)用是點對點無線數(shù)據(jù)傳輸。在許多情況下,許多節(jié)點共同連接在一起置也不是預(yù)先安排好的。如一個網(wǎng)絡(luò),任意1對設(shè)備都可以進行數(shù)據(jù)傳輸。的介紹)來擴展網(wǎng)絡(luò),如圖4所示。SimpliciTI網(wǎng)絡(luò)協(xié)議還支持一個網(wǎng)絡(luò)拓撲擴展,即在星狀網(wǎng)絡(luò)的基礎(chǔ)上,使用范圍擴展設(shè)備擴展為串狀網(wǎng)絡(luò)拓撲。在此網(wǎng)絡(luò)中,RangeExtenders范圍擴展設(shè)備不對網(wǎng)絡(luò)進行路由SimpliciTIEndDevicesAccessPoints數(shù)據(jù)中RangeExtenders范圍擴展設(shè)備。SimpliciTI網(wǎng)絡(luò)所說的設(shè)備是一個邏輯上的設(shè)備而并EndDevices(ED):終端節(jié)點設(shè)備,可以是傳感器節(jié)點也可以是控制節(jié)點,該硬件模式AccessPoint(AP):構(gòu)成網(wǎng)絡(luò)的數(shù)據(jù),同一個網(wǎng)絡(luò)中AccessPoints可以和終端設(shè)備AccessPoint。在特殊模式下它可以接收所有能夠接收到的數(shù)據(jù),包括通過范圍擴展得到Rangextener(RE):范圍擴展設(shè)備,有目的地對網(wǎng)絡(luò)覆蓋范圍進行擴展,這是一個常開設(shè)備。它的主要功能是重復發(fā)送從發(fā)送設(shè)備過來的數(shù)有目的的讓發(fā)送設(shè)備的影響范圍擴4不能是0x00或者0xff。在這兩個射頻工作時幀格式已經(jīng)定了第一個字節(jié)0X00和0xff協(xié)議確定兩個設(shè)備之間通信會有接過程。連接信息包含接標志4個字節(jié),儲器RAM區(qū)與PORT地址限制。載荷為大于等于0小于等于52個字節(jié)。ComponentsSimpliciTI協(xié)義棧工程組成文件;文件夾sSimpliciTI協(xié)義棧工程說明文檔;ProjectsSimpliciTI協(xié)義棧的點對點通信工程文件及配置文件。在此路徑下Projectamples\Peerapplications\CC2430DB\2simpleenddeviceswithbi-di工程文件“LinkListen.ewwIAR7.20H或以上版本用戶雙擊該文件即可打開工程。此文件enum{SMPL_SUCCESS,//enum{SMPL_SUCCESS,//個LED燈不斷閃爍,直到連接成功,連接成功后關(guān)掉第一個燈,如程序6.2所示。staticvoid{uint8_tstaticvoid{uint8_tmsg[2],delay=(!={//閃爍LED燈,直到連接成功toggleLED(1);//閃爍LED1toggleLED(2);//閃爍LED2} if(BSP_LED1_IS_ON())//判斷LED1當前狀態(tài)是否為開{toggleLED(1);//取反LED1}//填裝閃爍哪一個LED參數(shù),這里先取LED1紅色LEDmsg[0]=1;while{if(delay>0x00){}if(delay>{}if(delay>{}//delaylongerandlonger--thenstartoverdelay=(delay+1)&0x03;//msg[1]msg[1]=,}}現(xiàn)為:兩個設(shè)備各有一個LED燈同頻閃爍,周期約為4秒,如程序6.3所示。staticvoid{ static

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論