引言
20世紀(jì)90年代以來(lái),隨著集成電路特征線寬的持續(xù)縮小以及芯片密度和工作頻率的相應(yīng)增加,降低功耗已經(jīng)成為亞微米和深亞微米超大規(guī)模集成電路設(shè)計(jì)中的一個(gè)主要考慮因素。功耗的增加會(huì)帶來(lái)一系列問(wèn)題,例如電路參數(shù)漂移、可靠性下降、芯片封裝成本增加等。因此,系統(tǒng)的功耗在整個(gè)系統(tǒng)設(shè)計(jì)中,尤其是在采用電池供電的系統(tǒng)中顯得十分重要。
MICroChip公司PIC系列的單片機(jī)為設(shè)計(jì)高性能、低功耗的單片機(jī)系統(tǒng)提供了很好的解決方案。下面從低功耗設(shè)計(jì)方法及具體例子來(lái)介紹PIC單片機(jī)低功耗應(yīng)用。
1 低功耗設(shè)計(jì)方法
為使系統(tǒng)工作在低功耗狀態(tài),必須正確設(shè)置單片機(jī)的配置及工作方式。下面結(jié)合最常用的PIC12、PIC16等單片機(jī)介紹低功耗系統(tǒng)的設(shè)計(jì)方法。
1.1 基本設(shè)計(jì)方法
有許多技術(shù)可以降低系統(tǒng)的功耗,最常用的是Sleep模式。程序執(zhí)行一條SLEEP指令,便進(jìn)入了休眠(Sleep)模式。要Sleep模式下,晶振停止振蕩,而此時(shí)單片機(jī)在3V電源條件下,只有1μA的電流。系統(tǒng)工作時(shí),單片機(jī)可以采用看門(mén)狗或外部事件周期性地喚醒單片機(jī),利用電子開(kāi)關(guān)為系統(tǒng)提供電源,以減少系統(tǒng)待機(jī)功耗,延長(zhǎng)電池使用時(shí)間。
單片機(jī)的工作頻率和功耗的關(guān)系也很大,頻率越高,功耗越大。在采用32kHz晶振、3V工作電壓時(shí),PIC12、PIC16等系列單片機(jī)的典型工作電流只有15μA;而采用4MHz晶振、5V工作電壓時(shí),單片機(jī)的典型工作電流達(dá)到幾mA。在許多低功耗的場(chǎng)合,采用低速晶振實(shí)現(xiàn)低功耗非常有效。如果單片機(jī)采用RC振蕩,還可以通過(guò)I/O口的操作改變振蕩電阻,從而改變單片機(jī)工作頻率,達(dá)到節(jié)能的目的。如圖1所示,1個(gè)I/O引腳可以在等待狀態(tài)下將并聯(lián)電阻R1去掉,降低單片機(jī)工作頻率。當(dāng)單片機(jī)需要工作時(shí),可將I/O引腳設(shè)置為輸出并輸出高電平,從而提高振蕩頻率。
1.2 振蕩電路設(shè)計(jì)
在單片機(jī)系統(tǒng)設(shè)計(jì)中,振蕩電路的設(shè)計(jì)是十分重要的一個(gè)環(huán)節(jié)。PIC系列單片機(jī)的典型振蕩電路如圖2所示。
一般情況下,設(shè)計(jì)人員按照廠家給出的參數(shù)表進(jìn)行選擇。如果系統(tǒng)能夠正常工作,也就不再進(jìn)行改進(jìn)了。其實(shí),這是不合適的。因?yàn)?u>Microchip的單片機(jī)根據(jù)型號(hào)和版本的不同,工作電壓在直流2.5~5.5V的范圍內(nèi),汽車(chē)級(jí)溫度可以在-40~-125℃范圍內(nèi),而參數(shù)表中只給出了有限的幾種情況,實(shí)際環(huán)境參數(shù)會(huì)對(duì)振蕩電路的性能產(chǎn)生很大的影響。如高溫、低電壓可減小振蕩環(huán)路增益,而從降低振蕩頻率或者難以啟動(dòng);低溫、高電壓可以使環(huán)路增益變大,從而使晶振過(guò)驅(qū)動(dòng),產(chǎn)生損壞的潛在危險(xiǎn)或者振蕩電路工作的高次諧波頻率上升,加大系統(tǒng)功耗。因此,如何正確設(shè)計(jì)系統(tǒng)的振蕩電路十分必要。對(duì)于PIC系列單片機(jī),一般的設(shè)計(jì)步驟如下:
①選擇晶振。根據(jù)系統(tǒng)需要的振蕩頻率進(jìn)行晶振的選擇。此外,晶振的工作溫度和頻率穩(wěn)定度也是十分重要的指標(biāo)。
②選擇振蕩器類(lèi)型。PIC系列單片機(jī)有RC、LP、XT、HS等振蕩模式。除RC模式外,振蕩模式的選擇實(shí)際上就是環(huán)路增益的選擇。低增益對(duì)應(yīng)低振蕩頻率,高增益對(duì)應(yīng)高振蕩頻率。一般根據(jù)實(shí)際需要的工作頻率可參考數(shù)據(jù)手冊(cè)來(lái)選擇。
③選擇C1、C2。理想的情況是,保證系統(tǒng)在高溫和最低工作電壓下能夠正常工作,使得電容在數(shù)據(jù)手冊(cè)推薦的范圍內(nèi)最小。同時(shí)選擇C2比C1大一些以加大相移,使其有利于振蕩電路的上電啟動(dòng)。
④選擇Rs。在以上參數(shù)都已經(jīng)選定后需要決定Rs的大小。簡(jiǎn)單的辦法是讓系統(tǒng)工作在最低溫度和最大電壓情況下,此時(shí)得到的應(yīng)該是時(shí)鐘電路最大輸出幅度。用示波器觀察引腳OSC2的輸出波形(注意,示波器的探頭將給電路引入一個(gè)電容,一般為幾pF),如果發(fā)現(xiàn)正弦波的峰(接收Vdd處)和谷(接收Vss處)被削平或壓扁,說(shuō)明驅(qū)動(dòng)過(guò)載,需要在OSC2和C2間加入1個(gè)電阻Rs,一般1kΩ左右或小于1kΩ。Rs不宜過(guò)大,過(guò)大將使得輸入和輸出產(chǎn)生隔離,從而產(chǎn)生較大的噪聲。當(dāng)發(fā)現(xiàn)需要一個(gè)較大的Rs才能消除過(guò)驅(qū)動(dòng)時(shí),可以增加負(fù)載電容C2來(lái)補(bǔ)償。C2一般選擇在15~33pF之間。
系統(tǒng)振蕩電路的設(shè)計(jì)對(duì)系統(tǒng)的穩(wěn)定性、功耗等影響很大。一般情況下,系統(tǒng)從Sleep狀態(tài)下喚醒時(shí),振蕩電路最難啟動(dòng)(尤其系統(tǒng)工作在高溫、低壓、低頻的情況下)。此時(shí),電阻Rs有利于振蕩電路的啟動(dòng),因?yàn)榱畠r(jià)的碳膜電阻容易產(chǎn)生白噪聲,從而幫助電路起振。此外,選擇C2稍大于C1以增大相移,也有利于電路起振。
2 具體應(yīng)用例子
2.1 系統(tǒng)組成及框圖
系統(tǒng)主要由PIC單片機(jī)、雙音頻解碼拔號(hào)電路、語(yǔ)音集成電路、接口電路、VCC電源控制電路、射頻發(fā)射電路和EEPROM組成,可完成對(duì)家用電器的控制和對(duì)報(bào)警求援語(yǔ)音信息的自動(dòng)傳送,如圖3所示。
2.2 控制器工作方式
*當(dāng)與控制器相串聞的電話機(jī)(以下稱(chēng)為本地機(jī))處于摘機(jī)時(shí),電話線輸入電壓發(fā)生變化,引起CD40106的2腳輸出電平變化,輸入到CPU的RB0端口產(chǎn)生中斷信號(hào),喚醒CPU,控制器進(jìn)入工作狀態(tài)。通過(guò)本地機(jī)的拔號(hào)盤(pán)對(duì)控制器的各種功能進(jìn)行控制。如控制電視、音響、照明燈等電器電源的開(kāi)關(guān)。
*當(dāng)控制器接收到振鈴信號(hào)時(shí),CD40106的4腳輸出電平變化,輸入CPU的RB6端口產(chǎn)生中斷信號(hào),喚醒CPU進(jìn)入工作狀態(tài),并對(duì)振鈴信號(hào)進(jìn)行計(jì)數(shù);達(dá)到設(shè)定鈴聲數(shù)后,使控制器進(jìn)入電話接收狀態(tài),開(kāi)始接收遠(yuǎn)程傳輸DTMF信號(hào),經(jīng)MT8880解調(diào)得到的信號(hào)通過(guò)IRQ向單片機(jī)發(fā)出中斷信號(hào),將數(shù)據(jù)存入寄存器,經(jīng)CPU運(yùn)行,對(duì)控制器的各種功能進(jìn)行控制。
*當(dāng)控制器作為報(bào)警器,并處于警備狀態(tài)時(shí),報(bào)警探頭時(shí)刻檢測(cè)防范區(qū)域的情況;當(dāng)探頭向控制器發(fā)出警情信息,輸入CPU的RB5中斷產(chǎn)生信號(hào),控制器進(jìn)入工作狀態(tài),從EEPROM芯片讀出預(yù)先設(shè)置的報(bào)警電話號(hào)碼,經(jīng)MT8880轉(zhuǎn)換為DTMF信號(hào),自動(dòng)撥號(hào),以語(yǔ)音形式將信息傳送給用戶(hù)或直接報(bào)警。
2.3 應(yīng)用電路
(1)電話接口電路
電話機(jī)與控制器采用控制器在前,電話機(jī)在后的串聯(lián)方式,可實(shí)現(xiàn)電話機(jī)對(duì)控制器各種功能的控制。接口電路由過(guò)壓保護(hù)電路、極性轉(zhuǎn)換電路和中斷請(qǐng)求電路組成,如圖4所示。
①過(guò)壓保護(hù)電路。在電話線回路上加入了一個(gè)壓敏電阻R,它的作用是當(dāng)它兩端的電壓大于其工作電壓時(shí)呈短路狀態(tài),從而保護(hù)后級(jí)電路免受高壓危害。當(dāng)加到它的兩端的電壓小于其工作電壓,壓敏電阻呈開(kāi)路狀態(tài),對(duì)后級(jí)電路的工作沒(méi)有任何影響。在本設(shè)計(jì)中,壓敏電阻的工作電壓為220V。
②極性轉(zhuǎn)換電路。由于在電話線上傳輸?shù)氖墙涣餍盘?hào),為了使信號(hào)的極性固定,在電路中加入電橋,進(jìn)行全波整流。
③中斷請(qǐng)求電路。為延長(zhǎng)電池工作時(shí)間,CPU在待機(jī)時(shí)處于休眠的省電狀態(tài),在實(shí)現(xiàn)遠(yuǎn)程電話機(jī)和本地機(jī)對(duì)控制器功能控制時(shí),由中斷請(qǐng)求電路將CPU喚醒。
(2)語(yǔ)音電路
語(yǔ)音電路如圖5所示。它以ISD4000語(yǔ)音芯片為核心,主要是存儲(chǔ)報(bào)警語(yǔ)音,輸出經(jīng)功率放大后傳送到電話線上。
(3)MT8880與PIC單片機(jī)的接口電路
MT8880是Mitel公司的DTMF收發(fā)器,具有功能強(qiáng)、功耗低、工作穩(wěn)定、可靠等性高優(yōu)點(diǎn),因此在DTMF信號(hào)調(diào)制的場(chǎng)合得到了廣泛的應(yīng)用。MT8880與PIC單片機(jī)的接口電路如圖6所示。
①M(fèi)T8880與單片機(jī)的接口電路。D0~D3為4根數(shù)據(jù)線,MT8880對(duì)經(jīng)過(guò)前置處理的DTMF信號(hào)進(jìn)行解調(diào),將解調(diào)得的信號(hào)存入片內(nèi)寄存器中,并通過(guò)IRQ向單片機(jī)發(fā)出中斷信號(hào)。單片機(jī)相應(yīng)中斷請(qǐng)求后,在R、W、RS0、RD的控制下,通過(guò)D0~D3讀出解調(diào)出的數(shù)據(jù)。
②DTMF信號(hào)放大電路。當(dāng)微處理器將要發(fā)送的DTMF數(shù)據(jù)寫(xiě)入MT8880相應(yīng)的寄存器時(shí),MT8880從TONE引腳發(fā)出DTMF信號(hào),信號(hào)經(jīng)過(guò)放大電路放大后,送往變壓器進(jìn)行電壓變化。
3 程序設(shè)計(jì)
程序在運(yùn)行時(shí):①為電器控制器,若是遠(yuǎn)程電話機(jī)對(duì)控制器進(jìn)行操作,是根據(jù)電話的振鈴聲數(shù)來(lái)判斷;若本地電話機(jī)對(duì)控制器進(jìn)行操作,是根據(jù)本地電話機(jī)的摘機(jī)情況來(lái)判斷。②為報(bào)警器,報(bào)警探頭隨時(shí)檢測(cè)到警情并發(fā)出信號(hào)給控制器,而控制器則是根據(jù)用戶(hù)的設(shè)置情況,是處于警備與否來(lái)判斷是否拔出報(bào)警電話。圖7是程序流程圖。
下面主要介紹初始化程序、MT8880設(shè)置子程序和DTMF信號(hào)發(fā)送以及接收子程序。
;初始化寄存器
F0 EQU 0H
RTCCEQU 01H
PC EQU 02H
STATUS EQU 03H
FSR EQU 04H
RA EQU 05H
RB EQU 06H
RC EQU 07H
RD EQU 08H
RE EQU 09H
TRISAEQU 85H
TRISB EQU 86H