無(wú)線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目09 CC2530的睡眠定時(shí)器_第1頁(yè)
無(wú)線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目09 CC2530的睡眠定時(shí)器_第2頁(yè)
無(wú)線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目09 CC2530的睡眠定時(shí)器_第3頁(yè)
無(wú)線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目09 CC2530的睡眠定時(shí)器_第4頁(yè)
無(wú)線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目09 CC2530的睡眠定時(shí)器_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

項(xiàng)目九CC2530的睡眠定時(shí)器目錄項(xiàng)目導(dǎo)入項(xiàng)目目標(biāo)項(xiàng)目分析知識(shí)儲(chǔ)備01030204項(xiàng)目實(shí)施拓展訓(xùn)練0506項(xiàng)目導(dǎo)入01項(xiàng)目導(dǎo)入項(xiàng)目導(dǎo)入在現(xiàn)代化物聯(lián)網(wǎng)智慧農(nóng)業(yè)生產(chǎn)中,數(shù)據(jù)采集變得越來(lái)越關(guān)鍵。由于CC2530優(yōu)良的低功耗特性,因而常被用于數(shù)據(jù)采集系統(tǒng)。例如將CC2530搭配傳感器并使用電池供電,將傳感器數(shù)據(jù)傳輸?shù)皆贫诉M(jìn)行分析和決策制定,便構(gòu)成了一個(gè)物聯(lián)網(wǎng)智慧農(nóng)業(yè)系統(tǒng)。該系統(tǒng)上傳的各種數(shù)據(jù)可以用于記錄氣候變化、土壤含水量、植株發(fā)育等信息,以協(xié)助管理農(nóng)業(yè)生產(chǎn)。由于使用電池供電,節(jié)能成了系統(tǒng)設(shè)計(jì)的重點(diǎn)環(huán)節(jié)。CC2530芯片內(nèi)置的睡眠定時(shí)器,可實(shí)現(xiàn)多種節(jié)能方案。睡眠定時(shí)器的作用是讓芯片在運(yùn)行一段時(shí)間后進(jìn)入睡眠狀態(tài),以節(jié)省功耗。項(xiàng)目導(dǎo)入本項(xiàng)目是對(duì)CC2530的睡眠定時(shí)器的一種應(yīng)用案例。項(xiàng)目導(dǎo)入項(xiàng)目分析02睡眠定時(shí)器用于設(shè)置系統(tǒng)進(jìn)入和退出低功耗睡眠模式之間的周期睡眠定時(shí)器的主要功能包括:運(yùn)行在32kHz時(shí)鐘頻率的24位定時(shí)器計(jì)數(shù)器;具有中斷和DMA觸發(fā)器功能的24位比較器;24位的捕獲功能。本項(xiàng)目利用睡眠定時(shí)器的定時(shí)計(jì)數(shù)功能,設(shè)計(jì)一個(gè)睡眠喚醒實(shí)驗(yàn),并且重復(fù)“睡眠--喚醒--睡眠”這一過(guò)程。項(xiàng)目要求通電后LED指示燈提示CC2530單片機(jī)即將進(jìn)入睡眠,隨后單片機(jī)立即睡眠,睡眠5秒后單片機(jī)喚醒,并重復(fù)以上過(guò)程。

了解CC2530單片機(jī)的睡眠定時(shí)器

編程實(shí)現(xiàn)睡眠定時(shí)器的定時(shí)喚醒功能項(xiàng)目目標(biāo)03

掌握CC2530的睡眠定時(shí)寄存器的配置

學(xué)會(huì)使用CC2530睡眠模式的節(jié)能方法知識(shí)儲(chǔ)備04CC2530有5種電源模式:主動(dòng)模式、空閑模式、PM1模式、PM2模式和PM3模式。主動(dòng)模式為完全功能模式。此模式下,穩(wěn)壓器的數(shù)字內(nèi)核開(kāi)啟,16MHzRC振蕩器和32MHz晶體振蕩器至少一個(gè)運(yùn)行。32kHzRC振蕩器和16MHzRC振蕩器也有一個(gè)正在運(yùn)行??臻e模式下,除了CPU內(nèi)核停止運(yùn)行,其他和主動(dòng)模式一樣。PM1模型下,穩(wěn)壓器的數(shù)字部分開(kāi)啟,32MHz晶體振蕩器和16MHzRC振蕩器都不運(yùn)行。32kHzRC振蕩器或32kHz晶體振蕩器運(yùn)行。復(fù)位,外部中斷或睡眠定時(shí)器過(guò)期時(shí)系統(tǒng)將轉(zhuǎn)到主動(dòng)模式。PM2模式下,穩(wěn)壓器的數(shù)字內(nèi)核關(guān)閉,32MHz晶體振蕩器和16MHzRC振蕩器都不運(yùn)行。32kHzRC振蕩器或32kHz晶體振蕩器運(yùn)行。復(fù)位、外部中斷或睡眠定時(shí)器到期時(shí)系統(tǒng)將轉(zhuǎn)到主動(dòng)模式。PM3模式下,穩(wěn)壓器的數(shù)字內(nèi)核關(guān)閉,所有的振蕩器都不運(yùn)行。復(fù)位或外部中斷時(shí)系統(tǒng)將轉(zhuǎn)到主動(dòng)模式。一、睡眠定時(shí)器

CC2530模塊一般用電池供電,節(jié)能是其一個(gè)非常重要的功能。睡眠定時(shí)器用來(lái)設(shè)置系統(tǒng)進(jìn)入和退出低功耗睡眠模式之間的周期。睡眠定時(shí)器還用于當(dāng)進(jìn)入低功耗睡眠模式時(shí),保持定時(shí)器2的定時(shí)。睡眠定時(shí)器的主要特征如下:

24位定時(shí)器正計(jì)數(shù)器,運(yùn)行于32kHz時(shí)鐘

24位具有中斷和DMA觸發(fā)的比較

24位捕獲

睡眠定時(shí)器是一個(gè)運(yùn)行于32kHz時(shí)鐘(RC或晶體振蕩器)的24位定時(shí)器。定時(shí)器在復(fù)位后立即啟動(dòng)并連續(xù)運(yùn)行不間斷。定時(shí)器的當(dāng)前值可以從SFR寄存器ST2:ST1:ST0讀取,如表9-1~9-3所示。位名稱復(fù)位R/W描述7:0ST2[7:0]0x00R/W休眠定時(shí)器計(jì)數(shù)/比較值。當(dāng)讀取時(shí),該寄存器返回休眠定時(shí)器的高位[23:16]。在讀寫(xiě)寄存器ST0的時(shí)候該值是鎖定的。表9-2ST1(0x96)–休眠定時(shí)器1位名稱復(fù)位R/W描述7:0ST1[7:0]0x00R/W休眠定時(shí)器計(jì)數(shù)/比較值。當(dāng)讀取的時(shí)候,該寄存器返回休眠定時(shí)計(jì)數(shù)的中間位[15:8]。在讀寫(xiě)寄存器ST0的時(shí)候該值是鎖定的。表9-3ST0(0x95)–休眠定時(shí)器0位名稱復(fù)位R/W描述7:0ST0[7:0]0x00R/W休眠定時(shí)器計(jì)數(shù)/比較值。當(dāng)讀取的時(shí)候,該寄存器返回休眠定時(shí)計(jì)數(shù)的低位[7:0]。表9-1ST2(0x97)–休眠定時(shí)器2二、睡眠定時(shí)比較值的設(shè)置

當(dāng)定時(shí)器值等于24位比較值時(shí)發(fā)生一次定時(shí)器比較。通過(guò)寫(xiě)寄存器ST2:ST1:ST0來(lái)設(shè)置比較值。當(dāng)發(fā)生一次定時(shí)器比較時(shí),中斷標(biāo)志STIF起作用。當(dāng)STLOAD.LDRDY為1時(shí)寫(xiě)ST0會(huì)啟動(dòng)裝載新的比較值,即將最新的比較值寫(xiě)入ST2、ST1和ST0寄存器。裝載新的比較值的過(guò)程中,STLOAD.LDRDY為0,在STLOAD.LDRDY返回1之前通過(guò)軟件不能啟動(dòng)新的加載。讀ST0就是捕獲24位計(jì)數(shù)器的當(dāng)前值。因此,在讀取ST1和ST2之前必須先讀取ST0寄存器,以捕獲正確的睡眠定時(shí)器計(jì)數(shù)值。當(dāng)發(fā)生定時(shí)器比較時(shí),中斷標(biāo)志STIF被置位。每次系統(tǒng)時(shí)鐘檢測(cè)到32kHz的一個(gè)上升沿時(shí),就對(duì)當(dāng)前定時(shí)器值進(jìn)行更新,如表9-4所示。位名稱復(fù)位R/W描述7:1-0000000R0保留0LDRDY1R加載準(zhǔn)備好。當(dāng)睡眠定時(shí)器正在加載24位比較值,該位是0,此時(shí)不能啟動(dòng)新的加載。當(dāng)睡眠定時(shí)器可以加載一個(gè)新的比較值,該位為1。表9-4STLOAD(0xAD)–睡眠定時(shí)器加載狀態(tài)三、睡眠定時(shí)器中斷設(shè)置與中斷標(biāo)志睡眠定時(shí)器中斷的中斷使能位是IEN0.STIE,中斷標(biāo)志是IRCON.STIF,如表9-5~9-6所示。位名稱復(fù)位R/W描述7EA0R/W禁用所有中斷。0:無(wú)中斷被確認(rèn)1:通過(guò)設(shè)置對(duì)應(yīng)的使能位將每個(gè)中斷源分別使能和禁止6-0R0不使用,讀出來(lái)是05STIE0R/W睡眠定時(shí)器中斷使能0:中斷禁止4ENCIE0R/WAES加密/解密中斷使能0:中斷禁止3URX1IE0R/WUSART1RX中斷使能0:中斷禁止2URX0IE0R/WUSART0RX中斷使能0:中斷禁止1ADCIE0R/WADC中斷使能0:中斷禁止0RFERRIE0R/WRFTX/RXFIFO中斷使能0:中斷禁止表9-5IEN0(0xA8)–中斷使能0表9-6IRCON(0xC0)–中斷標(biāo)志4位名稱復(fù)位R/W描述7STIF0R/W睡眠定時(shí)器中斷標(biāo)志0:無(wú)中斷未處理6-0R/W必須寫(xiě)為0。寫(xiě)入1總是使能中斷源。5P0IF0R/W端口0中斷標(biāo)志0:無(wú)中斷未處理4T4IF0R/WH0定時(shí)器4中斷標(biāo)志。當(dāng)定時(shí)器4中斷發(fā)生時(shí)設(shè)為1并且當(dāng)CPU指向中斷向量服務(wù)例程時(shí)清除。3T3IF0R/WH0定時(shí)器3中斷標(biāo)志。當(dāng)定時(shí)器3中斷發(fā)生時(shí)設(shè)為1并且當(dāng)CPU指向中斷向量服務(wù)例程時(shí)清除。2T2IF0R/WH0定時(shí)器2中斷標(biāo)志。當(dāng)定時(shí)器2中斷發(fā)生時(shí)設(shè)為1并且當(dāng)CPU向量指向中斷服務(wù)例程時(shí)清除。1T1IF0R/WH0定時(shí)器1中斷標(biāo)志。當(dāng)定時(shí)器1中斷發(fā)生時(shí)設(shè)為1并且當(dāng)CPU向量指向中斷服務(wù)例程時(shí)清除。0DMAIF0R/WDMA完成中斷標(biāo)志0:無(wú)中斷未處理四、供電模式控制系統(tǒng)供電主要有4種模式:主動(dòng)/空閑模式、PM1、PM2、PM3。4種狀態(tài)下啟用的設(shè)備各有不同,如表9-7所示??梢酝ㄟ^(guò)設(shè)置PCON和SLEEPCMD設(shè)置系統(tǒng)的供電方式以達(dá)到節(jié)能的目的,如表9-8~9-9所示。供電模式高頻振蕩器低頻振蕩器穩(wěn)壓器(數(shù)字)配置A32MHzXOSCB16MHzRCOSCC32kHzXOSCD32kHzRCOSC

主動(dòng)/空閑模式A或BC或DONPM1無(wú)C或DONPM2無(wú)C或DOFFPM3無(wú)無(wú)OFF表9-7系統(tǒng)供電的四種模式表9-8PCON(0x87)–供電模式控制位名稱復(fù)位R/W描述7:1-0000000R/W未使用。總是寫(xiě)作0000000。0IDLE0R0/WH0供電模式控制。寫(xiě)1到該位強(qiáng)制設(shè)備進(jìn)入睡眠模式。所有的中斷發(fā)生將清除這個(gè)位,設(shè)備將重新進(jìn)入主動(dòng)模式。表9-9SLEEPCMD(0xBE)–睡眠模式控制位名稱復(fù)位R/W描述7OSC32K_CALDIS0R/W禁用32kHzRC振蕩器校準(zhǔn)0:使能32kHzRC振蕩器校準(zhǔn)1:禁用32kHzRC振蕩器校準(zhǔn)6:3-0000R0保留2-1R/W保留??偸菍?xiě)作11:0MODE[1:0]00R/W供電模式設(shè)置00:主動(dòng)/空閑模式01:供電模式110:供電模式211:供電模式31.主動(dòng)和空閑模式

主動(dòng)模式是完全功能的運(yùn)行模式,

CPU、外設(shè)和RF收發(fā)器都是活動(dòng)的。數(shù)字穩(wěn)壓器是

開(kāi)啟的。主動(dòng)模式用于一般操作。在主動(dòng)模式下(SLEEPCMD.MODE=0x00)通過(guò)使能PCON.IDLE位,CPU內(nèi)核就停止運(yùn)行,進(jìn)入空閑模式。所有其他外設(shè)將正常工作,且CPU內(nèi)核將被任何使能的中斷喚醒(從空閑模式轉(zhuǎn)換到主動(dòng)模式)。2.PM1模式

PM1模式下,高頻振蕩器(32MHzXOSC和16MHzRCOSC)是掉電的。穩(wěn)壓器和使能的32kHz振蕩器是開(kāi)啟的。當(dāng)進(jìn)入PM1模式,就運(yùn)行一個(gè)掉電序列。由于PM1使用的上電/掉電序列較快,等待喚醒事件的預(yù)期時(shí)間相對(duì)較短(小于3ms),就使用PM1。3.PM2模式

PM2具有較低的功耗。在PM2下的上電復(fù)位時(shí)刻,外部中斷、所選的32kHz振蕩器和睡眠定時(shí)器外設(shè)是活動(dòng)的。I/O引腳保留在進(jìn)入PM2之前設(shè)置的I/O模式和輸出值。所有其它內(nèi)部電路是掉電的。穩(wěn)壓器也是關(guān)閉的。當(dāng)進(jìn)入PM2模式,就運(yùn)行一個(gè)掉電序列。

當(dāng)使用睡眠定時(shí)器作為喚醒事件,并結(jié)合外部中斷時(shí),一般就會(huì)進(jìn)入

PM2模式。相比較PM1,當(dāng)睡眠時(shí)間超過(guò)3ms時(shí),一般選擇PM2。比起使用PM1,使用較少的睡眠時(shí)間不會(huì)降低系統(tǒng)功耗。四種供電模式4.PM3模式PM3用于獲得最低功耗的運(yùn)行模式。在PM3模式下,穩(wěn)壓器供電的所有內(nèi)部電路都關(guān)閉(基本上是所有的數(shù)字模塊,除了中斷探測(cè)和POR電平傳感)。內(nèi)部穩(wěn)壓器和所有振蕩器也都關(guān)閉。

復(fù)位和外部

I/O端口中斷是該模式下僅有的運(yùn)行的功能。I/O引腳保留進(jìn)入PM3之前設(shè)置的I/O模式和輸出值。復(fù)位條件或使能的外部IO中斷事件將喚醒設(shè)備,使它進(jìn)入主動(dòng)模式(外部中斷從它進(jìn)入PM3的地方開(kāi)始,而復(fù)位返回到程序執(zhí)行的開(kāi)始)。RAM和寄存器的內(nèi)容在這個(gè)模式下可以部分保留。PM3使用和PM2相同的上電/掉電序列。當(dāng)?shù)却獠渴录r(shí),使用PM3獲得超低功耗。當(dāng)睡眠時(shí)間超過(guò)3ms時(shí)應(yīng)該使用該模式。當(dāng)系統(tǒng)運(yùn)行在除了PM3之外的所有功耗模式下,睡眠定時(shí)器都將運(yùn)行。因此,在PM3模式下,睡眠定時(shí)器的值不保存。在PM1和PM2模式下,睡眠定時(shí)器比較事件用于喚醒設(shè)備并返回到主動(dòng)運(yùn)行模式的主動(dòng)運(yùn)行。復(fù)位之后比較值的默認(rèn)值為0xFFFFFF。注意,如果在進(jìn)入PM2時(shí),電源電壓下降到低于2V,睡眠定時(shí)器間隔可能會(huì)受到影響。項(xiàng)目實(shí)施05一、準(zhǔn)備設(shè)備和資源

序號(hào)設(shè)備/資源名稱數(shù)量單位是否準(zhǔn)備到位(√)1CC2530模塊1個(gè)

2CCDebugger仿真器(帶下載線)1個(gè)

3MiniUSB供電線或5號(hào)電池1根/個(gè)表9-10設(shè)備和資源清單

項(xiàng)目實(shí)施前必須先準(zhǔn)備好相應(yīng)的設(shè)備和資源,見(jiàn)表9-10。二、查閱實(shí)驗(yàn)?zāi)K原理圖

睡眠定時(shí)器是CC2530單片機(jī)的內(nèi)置模塊,任意選擇帶CC2530單片機(jī)的開(kāi)發(fā)板模塊均可完成睡眠定時(shí)器實(shí)驗(yàn)。由于實(shí)驗(yàn)過(guò)程需要使用LED燈將單片機(jī)睡眠和喚醒時(shí)的狀態(tài)區(qū)分出來(lái),因此選擇帶LED電路的實(shí)驗(yàn)?zāi)K。LED電路如圖9-2所示。圖9-2LED電路圖三、實(shí)施過(guò)程1.連接設(shè)備將CCDebugger仿真器的接口與CC2530實(shí)驗(yàn)?zāi)K(實(shí)驗(yàn)?zāi)K使用“求助按鈕V1.0”)相連,仿真器另一端用USB數(shù)據(jù)線連接到PC上,如圖9-3所示。圖9-3實(shí)驗(yàn)接線圖2.程序設(shè)計(jì)1)創(chuàng)建工程。打開(kāi)IAR新建一個(gè)CProject工程(具體步驟請(qǐng)參照項(xiàng)目二)2)實(shí)驗(yàn)流程圖。如圖9-4所示。

圖9-4程序流程圖3)編寫(xiě)代碼

完整的程序源代碼,見(jiàn)課程資源。

主要功能代碼如下:(1)引用相應(yīng)頭文件#include<ioCC2530.h>(2)對(duì)IO口進(jìn)行初始化:/*****************************************************函數(shù)名稱:IO_Init功能:完成IO口初始化voidIO_Init(void){P1DIR|=0x01;//P1_0定義為輸出,對(duì)應(yīng)LED1P1DIR|=0x04;//P1_2端口定義為輸出,對(duì)應(yīng)蜂鳴器LED1=1;//初始狀態(tài),熄滅LED燈Beeper=0;//關(guān)閉蜂鳴器}(3)設(shè)置系統(tǒng)工作模式:/*****************************************************函數(shù)名稱:SysPowerMode功能:根據(jù)傳遞的mode值,設(shè)置系統(tǒng)進(jìn)入正常工作模式或睡眠模式voidSysPowerMode(ucharmode){if(mode<4){

SLEEPCMD|=mode;//設(shè)置系統(tǒng)睡眠模式

PCON=0x01;//進(jìn)入睡眠模式,通過(guò)中斷喚醒}else

PCON=0x00;//通過(guò)中斷喚醒系統(tǒng)}(4)中斷處理函數(shù):/*****************************************************函數(shù)名稱:voidST_ISR功能:中斷后回到正常模式#pragmavector=ST_VECTOR__interruptvoidST_ISR(void){

STIF=0;//清標(biāo)志位

SysPowerMode(4);//進(jìn)入正常工作模式}(5)初始化休眠定時(shí)器:/*****************************************************函數(shù)名稱:InitSleepTimer功能:初始化休眠定時(shí)器,設(shè)定后經(jīng)過(guò)指定時(shí)間自行喚醒voidInitSleepTimer(void){ST2=0x00;ST1=0x00;ST0=0x00;

EA=1;//開(kāi)中斷

STIE=1;//睡眠定時(shí)器中斷使能0:中斷禁止1:中斷使能

STIF=0;//睡眠定時(shí)器中斷標(biāo)志0:無(wú)中斷未決1:中斷未決}(6)設(shè)置睡眠時(shí)間:/*****************************************************函數(shù)名稱:Set_ST_Period功能:利用睡眠定時(shí)器設(shè)置睡眠時(shí)間voidSet_ST_Period(uintsec){ulongsleepTimer=0;

sleepTimer|=ST0;//讀取睡眠定時(shí)器當(dāng)前值sleepTimer|=(ulong)ST1<<8;sleepTimer|=(ulong)ST2<<16;

//睡眠定時(shí)器當(dāng)前值+設(shè)定的睡眠時(shí)間

sleepTimer+=((ulong)sec*(ulong)32768);//睡眠定時(shí)器運(yùn)行在32kHz時(shí)鐘頻率ST2=(uchar)(sleepTimer>>16);ST1=(uchar)(sleepTimer>>8);ST0=(uchar)sleepTimer;}(7)主函數(shù)通過(guò)睡眠定時(shí)器讓程序進(jìn)入睡眠模式和恢復(fù)到正常模式:/*****************************************************函數(shù)名稱:main功能:正常模式工作3秒后進(jìn)入睡眠模式,睡眠5秒后回到正常模式,循環(huán)往復(fù)void

溫馨提示

  • 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)論