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