c51rf cc2431系統(tǒng)使用說明書基礎(chǔ)實驗手冊_第1頁
c51rf cc2431系統(tǒng)使用說明書基礎(chǔ)實驗手冊_第2頁
c51rf cc2431系統(tǒng)使用說明書基礎(chǔ)實驗手冊_第3頁
c51rf cc2431系統(tǒng)使用說明書基礎(chǔ)實驗手冊_第4頁
c51rf cc2431系統(tǒng)使用說明書基礎(chǔ)實驗手冊_第5頁
已閱讀5頁,還剩212頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

看門 CC2430基礎(chǔ)實驗22:喂 CC2430射頻介 IEEE802.15.4調(diào)制方 RF寄存 中 幀格 同步 MAC協(xié)議數(shù)據(jù)單 RF數(shù)據(jù)緩沖 應(yīng)答 MAC安全操 CSMA-CA/選通處理 三、CC2430電氣參 應(yīng)用電 極限參 運行條 電氣規(guī) RF接 SPI交流特 AES加密測 CC2430/CC2431ChipconZigBee應(yīng)用的片上系統(tǒng)。它支持用2.4GHz頻段IEEE802.15.4/ZigBee協(xié)議。根據(jù)內(nèi)置閃存的不同容量,提供給用戶3個版本,即CC2430-F32/64/128,分別對應(yīng)內(nèi)置閃存32/64/128KB。1-1所示,CC2430片上系統(tǒng)的功能模塊集成了CC2420RF收發(fā)器、增強工業(yè)標(biāo)準(zhǔn)。的供應(yīng)商,在系統(tǒng)低成本低功耗的射頻和網(wǎng)絡(luò)型軟件方面,發(fā)布了實用的CC2430/CC2431產(chǎn)品,是世界上首個真正的單ZigBee解決方案,這是世界上第一個真正意義上SoC個硅片內(nèi)。CC2431也是Chipcon公司SmartRF03中的一個關(guān)鍵部分,基于Chipcon占主導(dǎo)地位的CC2420ZigBee無線收發(fā)器其出貨量已經(jīng)1百萬片。尺寸是7×7mm,CC2431表現(xiàn)出了相當(dāng)清晰的設(shè)計結(jié)合了一顆強大的魯棒射頻,可編程的微控制器,閃存和SoC包括3個不同產(chǎn)品CC2430-F32,CC2430-F64andCC2430-F128。它們的區(qū)別在于內(nèi)置閃存的容量不同,以及針對不同IEEE802.14.5/Zigbee應(yīng)用的成本優(yōu)化。ChipconZigBeeSoC解決方案對于制造商是一個巨大的飛躍,產(chǎn)品面向家庭和樓宇自動化,供暖、通風(fēng)和空調(diào)系統(tǒng),自動抄表,醫(yī)療設(shè)施,家庭,物流,和其它終端市場,將讓制造商開發(fā)出緊湊,高性能和可靠的無線網(wǎng)絡(luò)產(chǎn)品,用該作為在系統(tǒng)中的主動設(shè)備,并減少上市時間以及將生產(chǎn)和測試成本降到最低。CC2430/CC2431Z-Stack“猶如Chipcon公司的CC2430/CC2431,是真正的單解決方案將帶來標(biāo)準(zhǔn)ZigBeeTM公司的前瞻技術(shù)和ZigBee董事會的成員。還評價道“這是市場的一個必然”。ChipconGeirForre講道,“ChipconZigBee適合方案的完整的開發(fā)工具。當(dāng)其它供應(yīng)商比較他們第一代方案時,Chipcon已經(jīng)擁有了2代ZigBeeTM,并逐漸會有第3或第4代。事實上Chipcon公司是ZigBee的發(fā)起者并已經(jīng)達(dá)到了全球第一個符合IEEE802.15.4協(xié)議的射頻,也是全球第一個一站式解決方案,世界領(lǐng)先的ZigBee軟件絕不是一個簡單的偶合,它寄予我們實現(xiàn)真正市場領(lǐng)先方案的厚望?!盋C2430/CC2431Chipcon2ZigBeeTMSoC解決方案,結(jié)合體積的8051微處理器,CC2430/CC2431SoC包括3個產(chǎn)品:CC2430-F32,CC2430-F64他強大的支持特性。CC2430/CC2431基于Chipcon公司的SmartRF技術(shù)平臺采用0.18微米CMOS7×7mm,48PIN27mA或25mA。CC2430/CC2431對于那些要求非常長的電池的應(yīng)用,其睡眠模式和短時間的轉(zhuǎn)換網(wǎng)絡(luò)節(jié)點,包括Coordinators,RoutersandEnddevices。CC2430/CC2431是一顆真正的系統(tǒng)(SoC)CMOS解決方案。這種解決方案能夠提高性能2.4GHzDSSS(直接序列擴頻)射頻收發(fā)器和一顆工業(yè)級小巧高效的8051控制器。CC2430/CC2431延用了以往CC2420的架構(gòu),在單個上整合了ZigBee射(RF)前端、內(nèi)存和微控制器。它使用1個8MCU(8051,具有32/64/128KB可編程閃存和(TimerTimer掉電檢測電路(BrownOutDetection)以及21個可編程I/O引腳。CC2430/CC2430區(qū)別在于:只有CC2431有定位引擎,CC2430無定位引擎。除了以上其它外,在外觀上CC2430與CC2431完全一樣的。32/64/128KB為27mA,Tx為25mA);掉電方式下,電流消耗只 0.9uA,外部中斷或者實時鐘(RTc)能喚醒系統(tǒng)掛起方式下,電流消耗小 0.6uA,外部中斷能喚醒系統(tǒng)硬件支持避免的載波偵聽多路存取 高級加密標(biāo)準(zhǔn)(AEs)協(xié)處理1個IEEE802.5.4存取控制(MAc)定時器CC2430/CC2431具有CC2420RF以及增強性能的8051MCU、8KBRAM等,其增強的8051MCU核的性能是工業(yè)標(biāo)準(zhǔn)8051核性能的8倍。CC2430/CC2431還具備直接器定址(DMA)功能(它能夠被用于減輕8051微控制器內(nèi)核對數(shù)據(jù)搬移,因此提高了整體的性能)、可編程看門狗定時器、AES-128安全協(xié)處理器、多達(dá)8輸入的8-14位ADC、USART、睡編程USART用于主/SPIUART操作2.1所示。帶外部CC2430/CC2431參考設(shè)計可提供+10dBm的輸出功率。CC2431片上系統(tǒng)(SoC)由CC2430加上MotorolaIEEE802.15.4標(biāo)準(zhǔn)的無線電定位引擎組成。CC2431和CC2430地最大區(qū)別在于CC2431具有包括Motorola的有證的定位檢采用該,可以實現(xiàn)0.25米的定位分辨率和3米左右的定位精度,這個精度已經(jīng)大大高于定位的精度,定位時間小于40微秒。采用CC2431組成,需要有最少3個參考腳可分為I/O端口線引腳、電源線引腳和控制線引腳三類。I/O端口線引腳功

1-2CC2430頂視為連接ADC、計時器或USART部件的設(shè)備I/O口使用。21I/OP1_7(P1_0~P1_1~P0_7(2_4,2_3,2_2,P2_1,2_0電源線引腳7腳(DVDDI/O2.0~3.6V20腳(VDD_SOC2.0~3.6V23腳(VDD_RREG2.0~3.6V24腳(RREG_OUT為25,27~31,35~40引腳端口提供1.8V的穩(wěn)定電壓V電壓。27腳(VDD_CHP為環(huán)狀濾波器的第一部分電路和充電泵提供1.8V28腳(VCO_GUARD:VCO電路的連接端口::腳(AVDD_RF2):為接收和發(fā)射混頻器提供1.8V電壓腳(AVDD_DGUARD):為數(shù)字噪聲電路連接電壓控制線引腳1-1CC2430引腳描去被浪費掉的總線狀態(tài)的方式,使得使用8051指令集的CC2430/CC2431增強8051內(nèi)核,具有8倍的標(biāo)準(zhǔn)8051內(nèi)核的性能。CC2430/CC2431432MHz晶體振蕩器,一個16MHzRC-振蕩器,一個可選的32.768kHz晶體振蕩器和一個可選的32.768kHzRC振蕩器。CC2430/CC2431也集成了用于用戶自定義應(yīng)用的外設(shè)。一個AES協(xié)處理器被集成在中斷控制器為總共18個中斷源提供服他們中的每個中斷都被賦予4個中斷優(yōu)先級中的的職責(zé)是21個一般I/O口的靈活分配和可靠控制。CC2430/CC24318051805188051內(nèi)核的性每個時鐘周期為一個機器周期而標(biāo)準(zhǔn)8051中是12核還增加了二個部分:另一個數(shù)據(jù)指針以及擴展18個中斷源。CC2430/CC2431的8051內(nèi)核的目標(biāo)代碼兼容標(biāo)準(zhǔn)8051的微處器。換句話說,CC2430/CC2431805180518051的匯編器和編譯器進(jìn)行軟CC2430/CC24318051指令在目標(biāo)碼和功能上與同類的標(biāo)準(zhǔn)的8051產(chǎn)CC2430/CC24318051內(nèi)核使用不同于標(biāo)準(zhǔn)的指令時鐘,因此在編程時候與標(biāo)準(zhǔn)的8051代碼略有不同,也是因為外設(shè)如定時器等不同于標(biāo)準(zhǔn)的8051。大多數(shù)單字節(jié)指令在一個時鐘周期內(nèi)完成。除了速度改進(jìn)之外,CC2430的8051也包含了80518051目標(biāo)代碼的定時循環(huán)程序需要修改;此CC24303·看f-=l狗器8051CPU有4個不同的空間·代碼(CODE:16位只讀空間,用于程序TA:8間的低128字節(jié)可以直接或間接,而高128字節(jié)只能夠間接?!ね獠繑?shù)據(jù)(XDATA):=l6位可存取空間,通常需要4~5個CPU.指令周期來l.器映射1-41-4CC2430-F32圖1-5CC2430-F32統(tǒng)一映射代碼器空圖1-7CC2430-F64非統(tǒng)一映射器空圖1-8CC2430-F64統(tǒng)一映射器空圖1-10CC2430-F128非統(tǒng)一映射編碼器空2.器空

圖1-11CC2430-F128統(tǒng)一編碼器空外部數(shù)據(jù)器空的對于大于32KB閃存的,最低的55KB閃存程序器映射到地址0x0000~0xDEFF;而對于32KB閃存的,32KB閃存映射到地址0x0000~0x7FFF。所有,其8KBSRAM都映射0xE000~0xFFFF,而特殊功能寄存器的地址0xDF00~0xDFFF。這樣多就允許DMA控制器和CPU在一個統(tǒng)一的地址空間對所有物理器進(jìn)行存取操作。的代碼器空射(分別如圖1-4、圖1-5、圖1-7、圖1-8、圖1-10和圖1-11.所示)。代碼器空間的統(tǒng)一映射類似外部器空間的統(tǒng)一映射。對于大于32KB的閃存器,在采用統(tǒng)一映射時,其最低代碼地址空間之內(nèi),從而允許程序的運行可以超出SRAM的范圍。MUNIF必須置1。閃存為128KB的(CC2430一F128),對于代碼器,就要使用分區(qū)的辦法。由于物理器是128KB,大于32KB的代碼器空間需要通過閃存區(qū)的選擇432KB物理閃存區(qū)中的1-10所示。閃存區(qū)的選擇,由設(shè)置特殊功能寄存器的對應(yīng)位(MEMCTR。FMAP)完成。注意,閃存區(qū)的選擇僅當(dāng)使用非統(tǒng)一映射代碼器空間時才能夠進(jìn)行。當(dāng)使用統(tǒng)一映射代碼器空間映射時,代碼器映射到位于0x0000~0xDEFF55KB閃存空間如圖1-1l所示。數(shù)據(jù)器空可以對地址范圍為0xFF00~0xFFFF的代碼空間和外部數(shù)據(jù)空間進(jìn)行存取。0xDF80~0xDFFFXDATA/DMA進(jìn)行存數(shù)據(jù)指CC24302個數(shù)據(jù)指針(DPTRODPTRl),主要用于代碼和外部數(shù)據(jù)的存取。例如:MOVCA,@A+DPTRMOVO1-2DPS(0x92)寄存器之中,詳細(xì)描述如表1-3所列。1-2外部數(shù)據(jù)器存

1-3Ri給出低8位的地址。特殊功能寄存器(SFR)用于控制8051CPU和外部設(shè)備。一部分8051CPU寄存器用來與外部設(shè)備單元接口,以及控制RF收發(fā)器。CC2430的全部特殊功能寄存器地址如圖1-12所示。其中,標(biāo)準(zhǔn)8051.特殊功能寄存器用小寫字母表示,而CC2430獨有的特殊功能寄存器用大寫字母表示。有映射到外部數(shù)據(jù)(XDATA)空間。CC24301-5所列。1-121-5CC2430獨有的特殊功能寄存特殊功能寄存器控制CC2430/CC24318051內(nèi)核以及外設(shè)的各種重要的功能。大部分的CC2430/CC243180518051器,小寫字母為標(biāo)準(zhǔn)8051的特殊功能寄存器。R0-程序狀態(tài)字76543210PACC累加ACC是一個累加器又稱為A寄存器。它主要用于數(shù)據(jù)累加以及數(shù)B寄存存器,而運算結(jié)果8位放B寄存器;進(jìn)行除法運算時,除數(shù)放在B寄存器,而運算的結(jié)果,余數(shù)放在B寄存器。若不進(jìn)行乘/除法運算,B寄存器也可當(dāng)成一般寄存器使用。堆棧指針先進(jìn)棧的那個數(shù)據(jù)卻要在最后才能被取出。取出數(shù)據(jù)稱為出棧。?,它是一個功能,而在進(jìn)棧操作時具有自動加1的功能,以保證SP指向棧頂。進(jìn)棧使用PUSH命令。SP的初始地址是0x07,再進(jìn)棧一個就是0x08,這是第二組寄存器R0的地址。為了更好地利用空間,SP可以初始化到一塊沒有使用的空間。CC2430CPU寄存8051CPUR0~R7,程序狀態(tài)字PSW、累ACC、B寄存器和堆棧SP等,CC2430CPU指令集與標(biāo)準(zhǔn)的指令集相同,具體這里就不詳細(xì)敘述了,可以參考標(biāo)準(zhǔn)8051指令集及使用方法。采用32MHz晶體振蕩器。時鐘的控制可以由設(shè)置特殊功能寄存器的CLKCON字節(jié)來實現(xiàn)。系統(tǒng)時鐘同時也可以提供給8051所有外部設(shè)備使用。RC以,P25個引腳,總共就是21個數(shù)字I/O引腳。I/O端口,同時,通過獨立編程還可以作為特殊功能的輸入外部中斷源輸21個I/O引腳都可以用作于外部中斷源輸,因此如果需要外部設(shè)備可以產(chǎn)生中斷。外I/O端口前需要通過不同的特殊功能寄存器對它I/O端口配置寄存器和配置方法不完全相同,在使用某P1DIR,P2DIR,P0INP,P1INP,P2INP,P0IFG,P1IFG,P2IFG,PICTL,P1IENPERCFG為外設(shè)控制寄存器,PXSEL(X為0,1,2)端口功能選擇寄存器,PXDIR(X為0,態(tài)標(biāo)志寄存器,PICTL端口中斷控制,P1IEN端口1(P1)中斷使能寄存器。CC243021個數(shù)I/O引腳,可以配置為通I/O,也可以作為I/O信號,配置為連接ADC、計數(shù)器(計時器)或者USART等外部設(shè)備。這些I/0口的用途多可以通過一系列寄輸具備上拉或下拉能力;當(dāng)用作I/O時,引腳可以組38位口(O~2),定義PO、P1P2。其中,POP18位口,而P25位可用。所有的口均可以位尋址,或通過特殊功能寄存器由P0、P1P2字節(jié)尋址。每個口都可以單獨設(shè)置為通用I/OI/O。除了兩個高輸20mA的驅(qū)動能力。寄存器PxSEL(x為口的標(biāo)號0~2),用來設(shè)置I/O8位通用I/O或者是外部設(shè)備I/O。任何一個I/O口在使用之前,必須首先對寄存器PxSEL賦值。作為缺省的情況,每當(dāng)復(fù)位之后,所有的輸入/輸出引腳都設(shè)置為通用8I/O;而且,所有通用I/O都設(shè)置為輸入。在任何時候,要改變一個引腳口的方向,使用寄存器PxDIR即可。只要設(shè)置PxDIR中指定位為1,其對應(yīng)的引腳口就被設(shè)置為輸出了。用作輸入時,每個通用I/O口的引腳可以設(shè)置為上拉、下拉或三態(tài)模式。作為缺省的情況,復(fù)位之后,所有的口均設(shè)置為上拉輸入。要將輸?shù)哪骋晃蝗∠侠蛳吕?,就要將PxINP中對應(yīng)位設(shè)置為1。I/O中I/O引腳設(shè)置為輸入后,可以用于產(chǎn)生中斷。中斷可以設(shè)置在外部信號的上升或下降沿觸發(fā)。每個PO、P1P2口的各位都可以中斷使能,整個口中所有的位也可以中斷使能。 I/O口的特殊功能寄存器實現(xiàn)中斷使能。Pl中的每一位都可以單獨使能,P044位可以各自使能,P2_0~P2_4·P0FGP0當(dāng)用作I/O引腳時,每P0P2口都關(guān)聯(lián)DMA觸發(fā)。對PO中的任何一個引送發(fā)生時,DMA的觸發(fā)為IOC_1。外部設(shè)備未使用的未使用的引腳應(yīng)當(dāng)定義電平,而不能懸空。法是:該引腳不連接任何元器件,將其配置為具有上拉電阻器的通用輸。這也是所有的引腳在復(fù)位期間的狀態(tài)。這些引腳也可以配置為通用輸出口。為了避免額外的能耗,無論引腳配置為輸還是輸出口,都不可以直接與VDD或者GND連接。I/O寄存I/O寄存器有19個,分別是:P0(口O)、P1(1)、P2(2)、PERCFG(外部設(shè)備控功能選擇寄存器)、P2SEI。(2功能選擇寄存器)、PODIR(O方向寄存器)、PIDIR。(1方向寄存器)、P2DIR(2方向寄存器)、POINP(O輸入模式寄存器)、PIINP(l輸入模式寄存器)、P2INP(口2輸入模式寄存器)、POIFG-(口O中斷狀態(tài)標(biāo)志寄存器)、PIlFG(口1中斷狀1中斷寄存器)。CC2430I/0LED燈為外設(shè),用實驗中操作了的寄存器 P1,P1DIR,沒有設(shè)置而是取默認(rèn)值的寄存器有:P1SEL,P1INP70P1_70輸入,160P1_60輸入,150P1_50輸入,140P1_40輸入,130P1_30輸入,120P1_20輸入,110P1_10輸入,100P1_00輸入,1P1SEL(P1功能選擇寄存器70P1_70I/O,160P1_60I/O,150P1_50I/O,140P1_40I/O,130P1_30I/O,120P1_20I/O,110P1_10I/O,100P1_00I/O,1{voidDelay(uintn);函數(shù)原型是voidDelay(uintn){uintuintfor(tt=0;tt<n;tt++);for(tt=0;tt<n;tt++);for(tt=0;tt<n;tt++);for(tt=0;tt<n;tt++);for(tt=}s{P1DIR{P1DIR| RLED=YLED //LED}voidmain(void){RLED=YLED={//LED1//LED2YLED=}}讓用戶掌握按鍵應(yīng)用這一常用人機交互方法,本次利用液晶擴展板(開發(fā)板)兩個按鍵(S6 參見1.4.2。 參見1.4.2。 參見1.4.2。 參見1.4.2。P1INP(P1輸入模式寄存器70016001500140013001200110010001void{P1SELvoid{P1SEL&~0X0C;//P12,P13輸P1DIR&~0X0C;按鍵P12P1INP| }uchar{if(K1==uchar{if(K1=={if(K1=={}}if(K2=={if(K2=={}}}//前面定義#defineK1返回1,P1_3對應(yīng)的按鍵按下返回2。 voidDelay(uintn)1.4.2。voidInitial(void);參見基礎(chǔ)1.4.2。voidInitKey(void);1.4.2。voidmain(void){voidmain(void){RLED={KeyvalueKeyScan掃{if(Keyvalue==if(Keyvalue==2){RLED }RLED=OFF; {YLED=}YLED=YLED=}}DMACC2430內(nèi)置一個器直接存取(DMA)控制器。該控制器可以用來減輕8051CPU核傳送DMACPU存取之間按照優(yōu)先等級協(xié)調(diào)、合理地進(jìn)行。DMA控制器含有若干可編程設(shè)置的DMA信道,用來實現(xiàn)器一器的數(shù)據(jù)傳送。DMA控制器控制數(shù)據(jù)傳送超過整個外部數(shù)據(jù)器空間。由于SFR寄存器映射到I/ODMACUP在睡眠(即低能耗模式下)與外31個可以配置的傳送觸發(fā)既可以工作在字(word-size)模式,又可以工作在字節(jié)(byte-size)模式lDMA操過將DMA信道工作狀態(tài)寄存器中指定位(即DMAARM)置1,就可以進(jìn)入工作狀態(tài)。一旦DMA.信道進(jìn)入工作狀態(tài),當(dāng)設(shè)定的DMA.觸發(fā)發(fā)生時,傳送就開始了??赡艿腄MA.觸發(fā)有31個,例如UARS、傳送、計數(shù)器溢出等。DMA.信道要使用的觸發(fā)在配置DMA信道時設(shè)置,所有的這些觸發(fā)如表6-14所列。DMA配置

1-14DMAAAA信道的特性都與下列參數(shù)有關(guān):源地址、不標(biāo)地址、傳送長度、可變長度(EN)設(shè)置、優(yōu)發(fā)A和M8模式。在DMA信道重新進(jìn)入工作狀態(tài)或者解除工作狀態(tài)之前,以及CPU即將有中斷請求到來可變長度(VLEN)DMA(12:位)(LEN)M8VLEN一優(yōu)先級別用于判定同時發(fā)生的多個內(nèi)部器請求中的哪一個優(yōu)先級最高,以及DMA器可以設(shè)置每個DMA.信道接受單個的觸發(fā)。這樣一來,就可以判定DMA信道會接受DMA信道進(jìn)入工作狀態(tài)或者重新進(jìn)入工作狀態(tài)時,源地址和目標(biāo)地址傳送到內(nèi)部地址指針。其地址增量可能有下列4種:指定的傳送長度后,傳送結(jié)束,通報CPU解除DMA信道的工作狀態(tài)。報CPU解除DMA信道的工作狀態(tài)。完成指定的傳送長度后,傳送結(jié)束,通報CPUDMA信道重新進(jìn)入工作狀態(tài)。重復(fù)的阻塞(Block)DMA此后多通報CPUDMA信道重新進(jìn)入工作狀態(tài)。被位IRQMASK所。DMA配置安DMA.的參數(shù)(諸如地址模式、傳送模式和優(yōu)先級別等)DMA信道進(jìn)人工作狀態(tài)之前有效。參數(shù)不直接通過SFR寄存器配置,而是通過寫入器中特殊的DMA配置數(shù)據(jù)結(jié)構(gòu)中配置。對于每DMA信道,需要有它自DMA配置數(shù)據(jù)結(jié)構(gòu)。DMA配置數(shù)據(jù)結(jié)構(gòu)可以存放DMAxCFGHDMAxCFGi(x=0~1)DMA控制器。一旦DMA信道進(jìn)入工作狀態(tài)粵DMA.控制器就會該信道的配置數(shù)據(jù)結(jié)構(gòu)。DMA.DMAOcFGH:DMAOCFGI。給出DMA.信道O2---4的配置數(shù)據(jù)結(jié)DMA傳將1寫入DMAARM-ABORT,就會取消所有進(jìn)入工作狀態(tài)的DMA.DMA中每個DMA.信道可以配置為一旦完成DMA.傳送,就產(chǎn)生中斷到CPU。該功志位置1。DMA.IRQMASK1。1DMA配置數(shù)據(jù)表1-15DMADMA寄存

功能。一個16位MAC定時器(Timer2),用以為IEEE802.15.4的CSMA-CA算法提供定時以及為IEEE802.15.4的MAC層提供定時。8051MAC(Timer2)MAC802.15.4的CSMA-CA算法提供定時/802.15.4的MAC層的16位定時/計數(shù)器提供的符碼/幀周期為:16μs/320μs可變周期可精確到31.25ns定時器啟動/停止同步于外部32.768MHz具有DMA功能當(dāng)MAC定時器停止時,它將自動復(fù)位并進(jìn)入空閑模式。當(dāng)F.RUN設(shè)置為’1’時,MAC MAC定時器使用的寄存器(詳細(xì)寄存器配置請查看隨書光盤中的CC2430/CC2431資料)T2OF1–定時器2溢出計數(shù)T2CAPHPH–定時器2捕捉計數(shù)器概復(fù)位后,MAC計數(shù)器處于空閑(夏DLE)模式,此時已經(jīng)停止運行。當(dāng)T2CN.F。RUN設(shè)置1時,MAC計數(shù)器就開始進(jìn)入運行(RUN)模式了。該操作可以立即進(jìn)行,也可以32.768kHzMACT2CNF。RUNO時,就會停止,從而進(jìn)入空閑模式。該操作可以立即進(jìn)行,也可以與32.768kHz時鐘同步進(jìn)行。MAC16位的正計數(shù)器,其計數(shù)隨每個時鐘節(jié)拍遞增。發(fā)生溢出。如果溢出中斷位T2PEROF2。PERIM為1,則產(chǎn)生中斷請求。不管中斷位是什么值,此時中斷標(biāo)志位T2CNF。PERIF置1。deltadelta值寫入寄Odeltadelta的T2CMP8位用于比較的數(shù)值時,就發(fā)生了計數(shù)器比較。注意,這個比較值是8位,而計數(shù)器究竟由字節(jié)還是低位字節(jié)參與比較,取決于F,CMSEI的設(shè)置。CNFCM 計數(shù)器具有捕獲功能,它在無線模塊的幀開始定界符(SFD)的狀態(tài)變高時動作。參見 溢出每當(dāng)計數(shù)器溢出時,2O1T2OF2:T2OFl:T2OF0T2OF0讀出時,T2OF2:T2OFl是鎖存的。也就是說,T2OFO必須首先讀出。T2OF2:T2OFl:T2OF0得到更T2OF2:T2OFl:T2OF0設(shè)置溢出計數(shù)器的遞增值一次。寫入這些寄存器的值會在下一次計數(shù)器溢出時加上正常的遞增值1。溢出計數(shù)器的遞增值將在接下來的遞增時,返回原來的正常值1。溢出計數(shù)比較T2PEROF2:T2PEROFl:T2PEROFO可以設(shè)置溢出計數(shù)器的比較值。當(dāng)溢出計數(shù)器的值大于或等于溢出計數(shù)器的比較值時,發(fā)生比較。如果此時溢出比較中斷屏蔽位T2PEROF2。OFCMPIM是1,就立刻產(chǎn)生一個中斷請求;而不管中斷值是什么,此時中斷標(biāo)志位T2CNF。OFCMPIF置1。中除。每個中斷源可以通過寄存器T2PEROF2的位加以。DMA觸 計數(shù)器開始/停止l)計數(shù)器可以通過32.768kHz時鐘的上升沿實現(xiàn)開始和停止的同步。注意,這個來自32.768kHz32MHz32.768kHzT2CNFRUN停止同步。當(dāng)FRUN0之后,計數(shù)器繼32.768kHz時鐘的上升沿觸發(fā)為止。此時,計數(shù)器停止運行,并且當(dāng)前睡眠計時器值。當(dāng)計數(shù)器處于空閑模式,且F。SYNC11T2CNF。RUN開始同T2CNF。RUN132.768kHz時鐘的上升1620位計數(shù)器32.768kHz時鐘上升沿被取樣起,同步如果系統(tǒng)時鐘頻率選擇為16MHz,則需要補償新的計算值。下面給出新MAC計數(shù)器值和溢出計數(shù)值的計算方法。事實上,由于MAC計數(shù)器的時鐘頻32MHz32.768kHz,它們之間的比率不是整數(shù)。這樣,計算出來的Stw=SleepTimerWidth=24ToH=Overhead--75Nt=Ne-T==CmodPTimer2Value-Timer2計數(shù)器2的寄T2HD--Timer2計數(shù)/deltaT2CAPHPH--rimer2捕獲/周期1來改變小燈的狀態(tài),T1每溢出兩次,1LED燈閃爍,1LED燈改變當(dāng)前實驗中操作了的寄存器有P1,P1DIR,P1SEL,T1CTL前面三個寄存器在實驗1已經(jīng)有詳P1見實驗1說明文檔P1DIR1說明文檔P1SEL1說明文檔7060504000018321280011方voidInitial(void);函數(shù)原型:{{P1DIR0x03;//P10P11RLED=YLED ////T1來做實T1CTL0x3d;//128分頻;自動重裝模式(0x0000}關(guān),1個LED燈常亮。實驗中操作了的寄存器有P1P1SELP1DIR FT2PEROF2T2CAPLPLT2CAPLPH,IEN0等寄存器。 CC24301P1SELCC24301P1DIRCC2430170260定時器2溢出中斷標(biāo)志,當(dāng)一個周期504—0讀300T28位1T28位2—01100T2PEROF2(T22寄存器7001600150014-0讀4發(fā)生捕獲時溢出計數(shù)值的16IEN0(中斷使能控制寄存700所有中斷,1允許中6-0讀500關(guān)中斷,1400關(guān)中斷,1300關(guān)中斷,1200關(guān)中斷,1100關(guān)中斷,1000關(guān)中斷,1voidInitial(void);函數(shù)原型:EA=T2IE=1;\\\\\啟動T2 #define 1LED燈閃爍。 P1SELCC24301P1DIRCC24301定時器時鐘再分頻數(shù)(對CLKCON.TICKSPD分頻后再次分頻)000不再分頻00120104011810016101321106411112840T30暫停計數(shù),1310關(guān)溢出中斷,120 00模計數(shù)(反復(fù)從0x00到T3CC0計數(shù)0x00)T3CCTL0(T30捕獲/比較控制寄存器7—0讀610關(guān)中斷,1通道0比較輸出模式選擇,指定計數(shù)值過0001(發(fā)生比較時010值為0或UP/DOWN模式下發(fā)生下比較)值為0或UP/DOWN模式下發(fā)生下比較)為0xff時)為0x00時)111200捕獲,10001T3CC0(T30捕獲/比較值寄存器T3CCTL1(T31捕獲/比較控制寄存器7—0610關(guān)中斷,10通道10001(發(fā)生比較時010100輸出清0(發(fā)生上比較時)輸出置1(計值為0xff時)110輸出0(發(fā)生比較時)輸出1(計數(shù)值為0x00時)111200捕獲,10001T3CC1(T31捕獲/比較值寄存器void{void{RLED=1;YLED=//初始化TIMER34_ENABLE_OVERFLOW_INT(3,1);//T3//時鐘32分頻10116T3#pragmavector=#pragmavector=interruptvoid{//IRCON={counter=0;RLED=!RLED;}}//10次中斷LED#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;}whileEA=1;T3IE=(val)?T##timer##CTL|0x08:T##timer##CTL&~0x08;\\復(fù)位T3相關(guān)寄存器#define #define (T3CTL=(val)?T3CTL|0X10:T3CTL&=\\\ /*UPT3CTL&=\\\ /*UP/DOWNruning*/*/*/\#define#define #defineT3_MODE_MODULO0X02#defineT3_MODE_UP_DOWN0X03實驗中操作了的寄存器有P1P1SEL,P1DIR,T4CTL,T4CCTL0,T4CC0,T4CCTL1, CC24301P1SELCC24301P1DIRCC24301定時器時鐘再分頻數(shù)(對CLKCON.TICKSPD分頻后再次分頻00000120104011810016101321106411112840T40暫停計數(shù),1310關(guān)溢出中斷,120 00模計數(shù)(反復(fù)從0x00到T4CC0計數(shù)0x00)T4CCTL0(T40捕獲/比較控制寄存器7—0讀610關(guān)中斷,1通道00001(發(fā)生比較時0100UP/DOWN模式下發(fā)生下比較)0UP/DOWN模式下發(fā)生下比較)值為0xff時)111200捕獲,10001T4CC0(T40捕獲/比較值寄存器T4CCTL1(T41捕獲/比較控制寄存器7—0讀610關(guān)中斷,10通道1比較輸出模式選擇,指定計數(shù)值過0001(發(fā)生比較時0010(發(fā)生比較時0100111(發(fā)生上比較時)0(計0UP/DOWN模式下發(fā)生下比較)值為0或UP/DOWN模式下發(fā)生下比較)1011(發(fā)生比較時)0(計數(shù)值為0xff時)為0x00時)111200捕獲,100沒有捕獲,0110下降沿捕獲,11T4CC1(T41捕獲/比較值寄存器void{P1DIR=void{P1DIR=led1=led2=//初始化//T4中I/0P10,P11LEDT4設(shè)置為自動重裝模式,定時器時鐘16分頻,并啟動T4。#pragmavector=#pragmavector=interruptvoid{//IRCON={counter=0;RLED=!RLED;}}//10次中斷LEDdo{T##timer##CTLdo{T##timer##CTL=(val)?T##timer##CTL|0x08:T##timer##CTL&~0x08;\EA=1;T4IE=\\#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 (T##timer##CTL=(val)?T##timer##CTL|0X10:功能:timer34。val1,定時器正常運行,val0,定時器T4CTLT4CTL&=\\\ #define/*UP/runing*/*/*/\#defineT4_MODE_DOWN #defineT4_MODE_MODULO#defineT4_MODE_UP_DOWNCPU18個中斷,每個中斷源都有它自己的位于一系列特殊功能寄存器中的中斷請求標(biāo)志,中斷分別組合為不同的,可以選擇的優(yōu)先級別,見表1-6。1-6中IEN0IEN能或。某些外部設(shè)備會因為若干產(chǎn)生中斷請求,這些中斷請求可以作用在P0、P1、P2、DMA計數(shù)器1、計數(shù)器3、計數(shù)器4或者RF上,對于每個內(nèi)部中斷源對應(yīng)的特殊功能寄 00RFTX/RXFIFO中斷使0:中斷1:中斷使1-7中斷處當(dāng)中斷使能時,首先設(shè)置中斷標(biāo)志,然后在下一個指令周期,由硬件強行產(chǎn)生一個LCALL到新中斷的響應(yīng),取決于該中斷發(fā)生時CPU的狀態(tài)。當(dāng)CPU正在運行的中斷服務(wù)程序,其優(yōu)71個機器指令周期用于檢測中斷,其余6個用來執(zhí)行LCALL。中斷優(yōu)先中斷組合成為6個中斷優(yōu)先組,每組的優(yōu)先級通過設(shè)置寄存器IPO和IP1實現(xiàn)。為了給中斷(也就是它所在的中斷優(yōu)先組)賦值優(yōu)先級,需要設(shè)IP0)IP1的對應(yīng)位1-8和1-91-81-91~104個中斷優(yōu)先級之一。當(dāng)進(jìn)行1-101-11IEN0,IEN1等寄存 CC24301P1SELCC24301P1DIRCC24301 參見CC2430實驗7 參見CC2430實驗7 參見CC2430實驗7 參見CC2430實驗7 參見CC2430實驗EA=1;T4IEEA=1;T4IE=(val)?T##timer##CTL|0x08:T##timer##CTL&~0x08;\\#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,定時器停止T4CTLT4CTL&=\\\/*UP/runing*/*/*/\#define#defineT4_MODE_ #defineT4_MODE_DOWN #defineT4_MODE_MODULO#defineT4_MODE_UP_DOWN擴展板上“OK”鍵S6,CC2430模塊上1LED燈改變當(dāng)前狀態(tài)。 P1IEN(P1口中斷掩碼700關(guān)中斷,1600關(guān)中斷,1500關(guān)中斷,1400關(guān)中斷,1300關(guān)中斷,1200關(guān)中斷,1100關(guān)中斷,1000關(guān)中斷,1PICTL(P口中斷控制寄存器7—0讀600最小驅(qū)動能力,150P2(0-4)中斷0關(guān)中斷,140P0(4-7)中斷0關(guān)中斷,130P0(0-3)中斷0關(guān)中斷,120P2(0-4)0上升沿觸發(fā),110P1(0-7)0上升沿觸發(fā),100P0(0-7)0上升沿觸發(fā),1P1(0-7)中斷標(biāo)志位,在中斷條件發(fā)IEN2(—讀500關(guān)中斷,1400關(guān)中斷,1300關(guān)中斷,1200關(guān)中斷,1100關(guān)中斷,1000關(guān)中斷,1void{void{RLED=GLED=P2INP&=~0X40;//選擇上拉P1IEN|=0X0c;PICTL|=0X02;EA=1;IEN2|=P1IFG&=//P12//P1IE=}#pragmavector=#pragmavector=interruptvoid{{P1IFG=0;RLED=!RLED;}P1IF=}CC2430/CC2431ADC14位的模數(shù)轉(zhuǎn)換,這跟一般的8ADC不同(2.7所示)。這個ADC包括一個參考電壓發(fā)生器,8個獨立可配置通道,電壓發(fā)生器和通過DMA模ADC時,P0ADC8ADCP0相應(yīng)的個引腳當(dāng)是‘0’,沒用當(dāng)作ADC輸入使用。ADC寄存器包括ADCL(ADC數(shù)據(jù)低位)ADCH(ADC數(shù)據(jù))ADCCON1(ADC控制寄存器1)、ADCCON2(ADC控制寄存器2)、ADCCON3(ADC控制寄存器3)。ADA/DA/D轉(zhuǎn)換器的輸入信號必須經(jīng)各種傳感器把各種物理量轉(zhuǎn)換成電壓信A/D8位、10位、1216位等。A/D轉(zhuǎn)換器的工作原逐次近法轉(zhuǎn)換過程是:初始化時將逐次近寄存器各位;轉(zhuǎn)換開始時,先將逐次近寄存器最置1,送入D/A轉(zhuǎn)換器,經(jīng)D/A轉(zhuǎn)換后生成的模擬量送入比較器,稱為Vo,與送入比較器的待轉(zhuǎn)換的模擬量Vi進(jìn)行比較,若Vo<Vi1被保留,否則被清除。然后后,將逐次近寄存器中的數(shù)字量送入緩沖寄存器,得到數(shù)字量的輸出。逐次近的操作過程A/D轉(zhuǎn)換的過程是:先將開關(guān)接通待轉(zhuǎn)換的模擬量Vi,Vi采樣輸入到積分器,積分器從零開始進(jìn)行固定時間T的正向積分,時間T到后,開關(guān)再接通與Vi極性相反的基準(zhǔn)電模擬電壓Vi所對應(yīng)的數(shù)字量,實現(xiàn)了A/D轉(zhuǎn)換。信號組成,如圖4.23所示。它的工作原理是V/F轉(zhuǎn)換電路把輸入的模擬電壓轉(zhuǎn)換成與模擬電壓成正比的脈沖信號。電壓Vi,從而完成A/D轉(zhuǎn)換。U0DUB,ADCCON1,ADCCON3,ADCH,ADCL等寄存器。 CLKCON(時鐘控制寄存器71032K晶振,132KRC61032M晶振,1 RC振定時器計數(shù)時鐘分頻(該時鐘頻不大于決定頻率000001010011100101110—SLEEP(睡眠模式控制寄存器7—0讀60讀0沒有打開或者不穩(wěn)定,150讀0沒有打開或者不穩(wěn)定,1讀00上電復(fù)位,01外部復(fù)位,10看門狗復(fù)200不關(guān)閉無用時鐘,10000110117—0讀6001,15001,14001,1—讀1001,10001,1700SPI模式,1UART600關(guān)閉接收,1500SPI主,1SPI400沒有幀錯誤,1300沒有校驗錯誤,1200沒有接收到數(shù)據(jù),1100沒有發(fā)送,1U0BUF的00讀0串口閑,1U0GCR(0常規(guī)控制寄存器700低電平空閑,1600由CPOL跳向非CPOL500低位在先,1在U0BAUD(0波特率控制寄存器70 ADC進(jìn)行中 ADC轉(zhuǎn)換結(jié)60進(jìn)行AD轉(zhuǎn)換)01啟動AD轉(zhuǎn)換00011116位隨機數(shù)發(fā)生器控制位(00普通模式 01LFSR-8位101214A/DADC0voidinitUARTtest(void);函數(shù)原型:U0GCR|=10;U0BAUD|=UTX0IF=1;U0CSR|=0X40;IEN0|=0x84;//baud_e=}函數(shù)功能:將I/0P10,P11設(shè)置為輸出去控制LED,將系統(tǒng)時鐘設(shè)為高速晶振,將P0口置為串口0功能引腳,串口0使用UART模式,波特率設(shè)為57600,允許接收。在使用串口之voidUartTX_Send_String(char*Data,intvoidUartTX_Send_String(char*Data,int{intj;{while(UTX0IF==UTX0IF=}}initTempSensor(void){DISABLE_initTempSensor(void){DISABLE_*((BYTExdata*)0xDF26)= UINT16 UINT16UINT16for(for(i=0;i<4;i++{ADC_SINGLE_CONVERSION(ADC_REF_1_25_V|ADC_14_BIT|ADC_TEMP_SENS);value=ADCL>>value|=(((UINT16)ADCH)<<}value=accValue>>2;//devideby4return} ( (((ADC_VALUE)>>4)-U0DUB,ADCCON1,ADCCON3,ADCH,ADCL等寄存器。 voidinitUARTtest(void);參見實驗10。voidInitialAD(void);函數(shù)原型:14位(最高精度)ADADC轉(zhuǎn)換。U0DUB,ADCCON1,ADCCON3,ADCH,ADCL等寄存器。 voidinitUARTtest(void);參見實驗10。void{//P1outvoid{//P1outled1=led2=//P1控制//ADCH&=0X00;ADCCON1=//清EOC標(biāo)ADCCON1|0X40}源電壓,ADC14位(最高精度)ADADC轉(zhuǎn)換。的加密/操作,極大地減輕了CC2430內(nèi)置CPU的負(fù)擔(dān)。數(shù)模式加密)_和CBC~MAC(防護(hù)鏈消息驗證代碼)模式。AES新裝入,否則一直有效。在每條消息之前,必須初始化向量。通過CC2430復(fù)位,可以清CPUCPU3個特殊功能寄存器進(jìn)行通信:ENCCS(加密控制和狀態(tài)寄存器)、ENCDI(加密輸入寄存器)ENCDO(加密輸出寄存器)。狀態(tài)寄存器通過CPU直接讀/寫,而輸入/輸出寄存器則必須使用器直接存取(DMA)。存器ENCCS。CFB、OFBCTR模式時,12843232位裝入的。當(dāng)使用DMA時,就由AES協(xié)處理器產(chǎn)生的DMA觸發(fā)自動進(jìn)行。128位的數(shù)據(jù)塊到協(xié)處理器。最后一個數(shù)據(jù)塊裝入之前,運行的模式必須改變?yōu)镃BC。當(dāng)最后一個數(shù)據(jù)塊完畢后,上傳的數(shù)據(jù)塊就是MAC值了。CCM是CBC-MAC和CTR的結(jié)合模式。因此有部分CCM必須由軟件完成。當(dāng)運行CBC-MAC加密時,除了最后一個數(shù)據(jù)塊改為運行于CBC模式之外,其余都是由協(xié)處理器按照CBC-MAC模式,每次一個數(shù)據(jù)塊。當(dāng)最后一個數(shù)據(jù)塊完畢后,上傳的數(shù)據(jù)塊就是MAC消息(message)了。NONCE13個字節(jié),而L_M2個字節(jié)。③如果需要某些添加的驗證數(shù)據(jù)(A_Data=1)A_Data的長度域,稱為L(a)。設(shè)l(a)為字符串的長度爭則:如果O<l(a)<2M28,貝}jL(a)2l(a)8輸入消息=B0+AUTH-DATA+消息+(消息的O填充)T。IV/Nonce命令裝載.A0IV/Noncee=加密消息(m)+U在協(xié)處理器中,CTR32128X232次方位236次方字節(jié)。其冪指數(shù)可以6位的字中L設(shè)置6,要一個CCM模式已處理好的消息,必須按照下列順序進(jìn)行(已經(jīng)裝入)。 些內(nèi)容的前M個字節(jié)保持不變。其余的內(nèi)容設(shè)置為0(M≠16),此時的結(jié)果為T。CCMMACTag,而不是T。AES協(xié)處理器是各個層次共享的通用源.AES協(xié)處理器每次只能用來處理一個實例。因此 AES當(dāng)一個數(shù)據(jù)塊的加密或完成時,就產(chǎn)生AES中斷(ENC)。該中斷的使能位 AESDMAAESDMA.ENC_DWENC-UP。當(dāng)輸入數(shù)據(jù)需要到寄存器ENCDI~ENC_DW當(dāng)輸出數(shù)據(jù)需要從寄存器ENCDO上傳時,ENC_UPDMA信道傳送數(shù)據(jù)到.AESENCDI就需要設(shè)置為目的寄存器;而要使DMA信道從AES協(xié)處理器接收數(shù)據(jù),寄存器ENCDO就需要設(shè)置為源寄存器。USARTCTS4線。UART模式的操作具有下列特點:89位數(shù)據(jù);奇校驗、偶校驗或者無LSBMSB首先傳送;獨立收發(fā)中斷;獨立收發(fā)DMA觸發(fā);奇偶校驗和幀校驗出錯狀態(tài)。UART模式提供全雙工傳送,中的位同步UART1個起始位、8個數(shù)據(jù)位、19當(dāng)字節(jié)傳送開始時,UxCSRACTIVE位設(shè)置為1,而當(dāng)字節(jié)傳送結(jié)束時UxCSRAC-TIVE位清0。當(dāng)傳送結(jié)束時,TX-BYTE位設(shè)置為1。當(dāng)USART收/發(fā)數(shù)據(jù)緩沖寄存器就緒,準(zhǔn)備接收RXDxUxCSR;ACTIVE1。當(dāng)檢測出有效起始位時,收到的字節(jié)就傳人接收寄存器,UxCSR;RX-BgTn1.。該操作完成時,產(chǎn)生接收中斷。UxBUFUxBUF讀出時,UxCSR。RX-BYTE位由硬件清99位進(jìn)行比較。如果奇偶校驗出錯,則UxCSR;ERR位設(shè)置為1。當(dāng)UxCSR時,UxC-SR。ERR位清0。要傳送的停止位的數(shù)量設(shè)置為1或者2,這取決于寄存器位UxUCRSTOP??偸且猄PB設(shè)置為1時,將核對兩個停止位。SPIMISO、SCKSSN1.5.1小節(jié)中有關(guān)如何將USART引腳指派到I/O引腳的描述??膳渲玫腖SB或MSB傳送。UxCSRMODE0時,選SPI模式SPI模式中,USARTUxCSR。SLAVE位來配置SPI為主模式或者從模式。成SCK串行時鐘,而且傳送發(fā)送寄存器提供的字節(jié)到輸出引腳MOSI。與此同時,接收寄存器從輸入引腳MISO獲取收到的字節(jié)。UxCSR。.ACTIVE位變高,而當(dāng)傳送結(jié)束后,UxCSR。.ACTIVE位變低。當(dāng)傳送結(jié)束時,UxCSR。RX_BYTEUxCSR。FX_BYTE1。當(dāng)收到的新數(shù)據(jù)在USART收/發(fā)數(shù)據(jù)寄存器UxBUF中就緒時,接收中斷產(chǎn)生。SCKUxGCR。CPOtlUxCSR。CPHA位選擇。字節(jié)傳送的順序由UxCSR。ORDER.位選擇。傳送結(jié)束時,收到的數(shù)據(jù)字節(jié)由UxBUF提供,供。當(dāng)SPI就緒接收另一個字節(jié)用來發(fā)送時,發(fā)送中斷產(chǎn)生。由于UxBUF是雙緩沖,這個操作剛好在發(fā)送開始時就發(fā)生了。SPIMISO上的數(shù)據(jù)傳送到接收寄存器,該寄MOSI。UxCSR.。ACTIVE位變高,而當(dāng)傳送結(jié)束后,UxCSR-ACTIVE位變低。當(dāng)傳送結(jié)束時,UxCSR。RX_BYTE位和UxCSR。TX-BYTE位設(shè)置為1。接收中斷產(chǎn)生。傳送的順序由UxCSR。ORDER位選擇。傳送結(jié)束時,收到的數(shù)據(jù)字節(jié)由UxBUF提供,供。當(dāng)SPI從模式操作開始時,發(fā)送中內(nèi)部的波特率發(fā)生器設(shè)置SPI主時鐘頻率。由寄存器UxBAUD。BAUD_M[7:O]和UxCSR,BAUD_E[4:O]定義波特率。該波特率用于UART傳送,也用于SPI傳送的串行時鐘速率。波特率由下式給出:標(biāo)準(zhǔn)波特率所需的寄存器值如表1-l9所列。該表適用于典型的32MHz系統(tǒng)時鐘。真實波 頻率)BAUD_E等于19BAUD_M等于O時,SPI模式的最大波特率(SCK頻率)F/2。

1-1932MHz系統(tǒng)時鐘常用波特率設(shè)USART都有兩個中斷:RX完成中斷(URXx)TX完成中斷(UTXx)。USART的中斷有兩個DMA觸發(fā)與每個USART相關(guān)。DMA觸發(fā)由RX或者TX完成激活,也就是說,該作為DMA中斷請求。可以配置DMA信道使用USART收/發(fā)緩沖器(即UxBUF)作為它的源地址或者匿標(biāo)地址。DMA觸發(fā)的概況參見表6-14。 上述寄存器描述見表1-20續(xù)表1-續(xù)表1-特率為57600。 voidinitUARTtest(void);函數(shù)原型:波特率為57600。使用晶振作為系統(tǒng)時鐘源。voidUartTX_Send_String(char*Data,intvoidUartTX_Send_String(char*Data,int{intj;{while(UTX0IF==UTX0IF=}}}函數(shù)功能:串口發(fā)字串,*Data為發(fā)送緩存指針,len為發(fā)送字串的長度,只能是在初始化函數(shù)voidinitUARTtest(void)之后調(diào)用才有效。發(fā)送完畢后返回,無返回值。

voidinitUARTtest(void);函數(shù)原型:波特率為57600。使用晶振作為系統(tǒng)時鐘源。voidUartTX_Send_String(char*Data,int{intvoidUartTX_Send_String(char*Data,int{intj;{while(UTX0IF==UTX0IF=}}函數(shù)功能:串口發(fā)字串,*Data為發(fā)送緩存指針,len為發(fā)送字串的長度,只能是在初始化函數(shù)voidinitUARTtest(void)之后調(diào)用才有效。發(fā)送完畢后返回,無返回值。interruptvoidinterruptvoid{URX0IFURX0IF=temp=}存放到temp變量,然后在主程序中去處理接收到的數(shù)據(jù)。為字串末字節(jié),CC2430PC,用串口助手可以顯示 voidinitUARTtest(void);參見實驗15。voidUART0_ISR(void);參見實驗15。1114-讀50P00關(guān)中斷,1400關(guān)中斷,1300關(guān)中斷,1200關(guān)中斷,1100關(guān)中斷,1000關(guān)中斷,1700捕捉引腳輸入,1RF610關(guān)中斷,1T1通道0010為0或UP/DOWN模式下發(fā)生下比較)為0或UP/DOWN模式下發(fā)生下比較)101預(yù)留,110預(yù)留,111200捕獲,1100沒有捕獲,0110下降沿捕獲,1177voidinitUARTtest(void);參見實驗15。voidUART0_ISR(void);參見實驗15。void{T1CCTL0void{T1CCTL0=//T1CCTL0//T1ch0中斷使T1CC0H0x03;T1CC0LT1CTL|=0X02;//start//使用比較模MODE10(B)IEN1|=0X02;IEN0|=//T1中}void{CLKCON=//TICKSPD111定時器計數(shù)時鐘0.25Mvoid{CLKCON=//TICKSPD111定時器計數(shù)時鐘0.25M}void{void{P0SEL=0x3c;U0GCR|=10;U0BAUD|=UTX0IF=U0CSR|=IEN0|=}interruptvoid{IRCON&~0x02;//清中斷標(biāo)志if(counterinterruptvoid{IRCON&~0x02;//清中斷標(biāo)志if(counter=={counter=timetemp led1 調(diào)試指示}}interruptvoidinterruptvoid{URX0IFURX0IF=temp=}入低功耗睡眠模式時,維持定時器2(MAC定時器)的定時。2432.768kHz24PM22432.768kHz的時鐘頻率上。定時器在復(fù)位當(dāng)定時器的值等于24位比較器的值,就發(fā)生一次定時器比較。通過寫入寄存器ST2:ST1:ST0STIF(5。ST中斷的中斷使能位是IEN0.STIE,中斷標(biāo)志是IRCON.STIF。當(dāng)運行在供電模式PM2時,睡眠定時器將開始運行,而睡眠定時器比較用于喚醒設(shè)備,返回活動運行模式PM0。復(fù)位之后的比較值的默認(rèn)值是0xFFFFFF。7睡眠定時器計數(shù)/比較值。當(dāng)7睡眠定時器計數(shù)/比較值。當(dāng)數(shù)的中間位[15:8]。當(dāng)寫該寄存器的時候設(shè)置比較值的中間位[15:8]。在寄存器ST0的時候該值是鎖定的。當(dāng)寫ST0的7睡眠定時器計數(shù)/比較值。當(dāng) -1-0讀00SLEEP.MODE指定的電源模式,讀出一定為0voidDelay(void); 參見實驗1void 參見實驗#definedo#definedo\\if(mode==0) {SLEEP&=~0x03;}\elseif(mode==3){SLEEP|=0x03;}\else{SLEEP&=~0x03;SLEEP|=mode;}\PCON|= }while}whileCC2430CC2430模塊的供本次實驗使能外I/O中斷(按下液晶擴S6S7按鍵)CC2430,每次LED閃爍10次,然后進(jìn)入低功耗模式,在進(jìn)入PM3之前程序會將兩個LED燈關(guān)閉。在應(yīng)用中也可以不關(guān)閉以指示CC2430處于低功耗模式,可以中斷激活。P2INP,CLKCON,SLEEP等寄存器。111999592700上拉,1600上拉,1500上拉,1400上拉,1300上拉,1200上拉,1100上拉,1void void{void{RLED=1;YLED=P1SEL&=~0X0C;P1DIR&=P1INP&~0X0c;//有上拉、下拉P2INP&=~0X40;//選擇上拉P1IEN|= //P12PICTL| EA=IEN2|=0X10;//P1IE=1;P1IFG|=0x00; voidPowerMode(ucharvoidPowerMode(uchar{{i=sel;{SLEEP&=0xfc;SLEEP|=i;PCON=0x01;}{PCON=}}selsel0-3之間的數(shù),程序只CPUPM0-PM3而不可以從PM0-PM3進(jìn)入全速運行。在小燈快速閃5次后進(jìn)入睡眠狀態(tài)PM2,在PM2下睡眠SLEEPTIMER(ST)仍時,系統(tǒng)由中斷喚醒,小燈閃爍5次后進(jìn)入PM2,這樣周而復(fù)始的喚醒工作然后睡眠。系統(tǒng)睡眠的時間為8分32秒,這已經(jīng)是最長睡眠時間。 ST2(睡眠定時器2)ST計數(shù)值,寫入為比較值。ST計數(shù)值,寫入為比較值。void void{ST2void{ST2=0X00;ST1=0X0f;ST0=EA1;//開中斷STIE=1;STIF=}到0x000f00時。void{void{{RLED=}}interruptvoidinterruptvoid{STIF=}{P1DIR&=}#defineRLEDP1_0#defineGLED\\\#defineSET_MAIN_CLOCK_SOURCE(source)\do{ #defineSET_MAIN_CLOCK_SOURCE(source)\do{ if(source) CLKCON|=0x40; \CLKCON&~0x47;*晶振\SLEEP| \}}while\#define#define\\(source==RC)?(CLKCON|=0X80):(CLKCON&=~0X80);83230余微秒。實驗中CC2430PM2模式,在達(dá)到指定時間后小燈閃爍,之后再次是設(shè)定喚醒時間,進(jìn)入PM2,喚醒的循環(huán)。

voidDelay(void); 1。voidLedGlint(void)19。void{EAvoid{EA1;//開中斷STIE=1;STIF=}addToSleepTimer()前調(diào)用本函數(shù)。{{sleepTimer|=ST0;sleepTimer|=(UINT32)ST1<<8;sleepTimer|=(UINT32)ST2<<ST1=(UINT8)(sleepTimer>>8);ST0=(UINT8)sleepTimer;}函數(shù)功能:設(shè)置睡眠時間,在sec秒以后由ST喚醒CC2430,在調(diào)用這個函數(shù)之前必須先調(diào)用Init_SLEEP_TIMER(),否則不能喚醒CC2430。通常在這個函數(shù)以后會出現(xiàn)SET_POWER_MODE(2)語#define#definedo\if(mode==0) {SLEEP&=~0x03;}elseif(mode==3){SLEEP|=0x03;}else{SLEEP&=~0x03;SLEEP|=mode;\\\\PCONPCON|=0x01;}while\\在U可能受到一個軟件的情況下,看門狗定時器(DT)用作一個恢復(fù)的方法。DTWT噪音,電源故障,靜電放電等影響的應(yīng)用,或需要高可靠性的環(huán)境。如果一個應(yīng)用不需要看門WDT可以配置為一個看門狗定時器或一個通用的定時器。WDTWDCTL寄存器控制??撮T狗定時器包括一個15位計數(shù)器,它的頻率由32.768kHz振蕩器時鐘規(guī)定。注意用戶不能獲得15位計數(shù)器的內(nèi)容。在系統(tǒng)復(fù)位之后,看門狗定時器就被禁用。要設(shè)置WDT在看門狗模式,必須設(shè)置在看門狗模式下,一旦定時器使能,就不可以禁用定時器,比如,當(dāng)WDCTL.MODE是0,如WDCTL.EN位已經(jīng)寫入了1,再往這個位寫入0就不起作用了。1.9ms,15.625ms,0.25s1s64,512,8192327680x5到同一個寄存器位。如果這個序列沒有執(zhí)行完整,看門狗定時器就為系統(tǒng)產(chǎn)生一個復(fù)定時器間隔值可以通過寫入WDCTL.INT[1:0]位加以改變。要在一般定時器模式下設(shè)置WDT,必須把WDCTL.MODE位置1。當(dāng)寄存器位WDCTL.EN1時,定時器開始,且計數(shù)器開始遞增。當(dāng)計數(shù)器達(dá)到選定間隔值,定時器將從0x0000重新啟動。WDCTL.INT[1:0]位設(shè)置。在定時器模式下,當(dāng)達(dá)到定時器間隔時,不會產(chǎn)如果1秒內(nèi)沒有復(fù)位看門狗的話,系統(tǒng)將復(fù)位。系統(tǒng)復(fù)位后再次開啟看門狗,1秒后復(fù)位。 )位0xA0x5寫到這些位,0x00xA后0.50x5時被清EN0時寫這些位沒有影響。這些300禁用定時器(停止定時器1200看門狗模式,100定時周期x32768101定時周期x81920.2510定時周期x51215.62511定時周期x641.9void{uintn;void{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--}voidInit_IO(void);函數(shù)原型:void{P1DIR=void{P1DIR=led1=led2=}void{WDCTLvoid{WDCTL=WDCTL|=0x08;}void{void{CLKCONCLKCON=} voidDelay(void); 參見20voidInit_IO(void);20voidInit_Watchdog(void);20voidInit_Clock(void);20void{WDCTLvoid{WDCTL=0xa0;WDCTL=}CC2430/CC2431的無線是一個低中頻的。接收到的射頻信號通過低噪聲放大2MHzADC模數(shù)轉(zhuǎn)換時,輸入/正義調(diào)相信號被CC2430/CC2431的數(shù)據(jù)緩沖區(qū)通過先進(jìn)先出(FIFO)128位數(shù)據(jù)。使用先進(jìn)先出數(shù)據(jù)需要通過特殊功能寄存器接口。內(nèi)存與先進(jìn)先出緩沖區(qū)數(shù)據(jù)移動使用DMA方式來CRC校驗使用硬件實現(xiàn)。接收信號強度指標(biāo)(RSSI)和相關(guān)值添加到幀中。在接收模式中可電源檢測、完全自動MAC層保護(hù)(CTR,CBC-MAC,CCM)。先工業(yè)界的RF收發(fā)器CC24201-15CC2430無線模益控制,以及信道的過濾、解擴頻(de-spreading)、符號相關(guān)(symbolcorrelation)和字節(jié)同步(bytesynchronization)等,所有這些都通過數(shù)字邏輯完成。儲器直接存取(DMA)來傳送器和FIFO之間的數(shù)據(jù)。由于采用了內(nèi)部發(fā)送/接收(T/R)開關(guān)電路,天線的接口以及匹配很容易實現(xiàn),RF為差到引腳RF_P和引腳RF_N,實現(xiàn)功率放大器和低噪聲放大器的偏置。器(VCO)工作頻率范圍是4800~4966MHz。分相I/Q時,頻率一分為二。等。片上穩(wěn)壓器提供校準(zhǔn)的1.8V供電。IEEE802.15.4調(diào)制方圖1-16在模塊層次上對調(diào)制和擴展功能進(jìn)行了描述,每個字節(jié)分為兩組符號,4位一l632位片碼序列(1-21)2Mchip/s的速率傳送。對于每個符號爭首先傳送低位片碼C。1-16調(diào)制和擴展功個信道占用半個片碼偏移周期,參見圖1-17。選通CPU使用了一系列選通命令來控制CC2430的無線操作。選通命令可以看成是單字節(jié)單的程序下達(dá)給無線模塊。所有從CPU到無線模塊的選通命令都通過CSMA-CA選通命RF器空間,如圖1-9所示。RF寄存器也提供無線模塊的狀態(tài)信息。RF寄存器的控制/狀態(tài)位參見后面幾小節(jié)的描述,而全部RF寄存器的描述見1.6.34小節(jié)。中兩個主要的中斷控制SFR寄存器用于使能RFRFERR中斷:SFRRFIFRF中斷向量的中斷源所對應(yīng)的狀態(tài)。RFIM中的中斷使能位用來各RF中斷向量的中斷源。注意,RFIM中斷源并不影響RFIF寄存器狀態(tài)的更新。中斷標(biāo)志和中斷詳見表1-22。1-22續(xù)表1- RFIF,$~00h;清0所有中斷標(biāo)志. FIFO通命令SFLUSHRX清楚RXFIFO在絕大多數(shù)實際應(yīng)用中,推薦使用器直接存取(DMA)在器和無線模塊之間傳送數(shù)據(jù),1.5.2DMA傳送。RADIODMA觸發(fā)(DMA19)與無線模塊有關(guān),該觸發(fā)支持DMA控制器。下列兩個使該觸發(fā)有效:接收SFDRFIF。IRQ_SFD1,而活動實例見圖1-18。1-18SFD、FIFOFIFOP的活動實RXF!FO中有數(shù)據(jù)時,RFSTATUS.FIFOlRXFIFO審的第一小字節(jié)是收到的前,RFSTATUS。FIFO一直置高。RF寄存器T存放當(dāng)前;RXFIFO中的字節(jié)的數(shù)量。當(dāng)RXFIFO中未讀過的字節(jié)超過編程設(shè)置在IOCFG0。FIFOP_THR中的閾值時,RXFIFO中的字節(jié)超過編程設(shè)置的閾值,RFSTATUS。FIFOP也;不會置1.RXFIFO讀出。這是由于如地址識別才會置1,可以利用這項功能來控制數(shù)據(jù)的讀出。1-19RXFIFOFIFO128128RXFIFORFERR中據(jù)幀發(fā)送期間,RFSTATUS。SFD置1,如圖6-20

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論