基于MC9S08QG4的煙霧傳感器應(yīng)用設(shè)計(jì)
MC9S08QG4是采用高性能、低功耗的HCS08內(nèi)核的飛思卡爾8位微控制器系列中具有很高的集成度的器件。MC9S08QG MCU集成了那些通常只有較大、較昂貴的元器件才具有的性能,包括背景調(diào)試系統(tǒng)以及可進(jìn)行實(shí)時(shí)總線捕捉的內(nèi)置在線仿真(ICE)功能,具有單線的調(diào)試及仿真接口。該產(chǎn)品的特色還包括一個(gè)可編程的16位定時(shí)器/脈沖寬度調(diào)制(PWM)模塊(TPM)。
MC9S08QG4提供了豐富的外設(shè)與HCS08內(nèi)核的多功能組合,包括更長(zhǎng)的電池壽命(即使工作電壓低至18V,也能發(fā)揮最大效能)、領(lǐng)先的FLASH技術(shù)以及創(chuàng)新的開發(fā)支持。對(duì)于諸如無線通訊、手持式設(shè)備、小家電、基于簡(jiǎn)化型媒體訪問控制器(SMAC)的應(yīng)用,以及玩具等對(duì)功耗和尺寸要求較高的應(yīng)用,MC9S08QG4是出色的解決方案。
塊狀圖
火警安全系統(tǒng)全系統(tǒng)塊狀圖如圖1中所示:
控制器聯(lián)網(wǎng)(CAN)總線
環(huán)行板
帶有24V 電源的探測(cè)器總線
中央處理器
煙霧探測(cè)器
執(zhí)行模塊
告警按鈕
24V DC電源
液晶顯示器
鍵盤
報(bào)警器
不間斷電源
中央處理器
中央處理器控制整個(gè)系統(tǒng),定時(shí)詢問每個(gè)煙霧探測(cè)器和告警按鈕的狀態(tài),并通過環(huán)路板向每個(gè)執(zhí)行模塊發(fā)送命令。而且,它還提供帶有TFT液晶顯示器和鍵盤的操作員接口,如果出現(xiàn)火情,就顯示位置并報(bào)警。
環(huán)路板
通常在火警安全系統(tǒng)中有10個(gè)或更多的環(huán)路板。環(huán)路板與中央處理器連接。RS485以前是環(huán)路板和中央處理器之間最常用的連接方法,但是控制器聯(lián)網(wǎng)總線目前成為最現(xiàn)代的新型設(shè)計(jì)解決方案。
每個(gè)環(huán)路板都提供一個(gè)帶有模塊數(shù)據(jù)的探測(cè)器總線,并在兩條線上提供24V直流電源。根據(jù)不同生產(chǎn)商的產(chǎn)品不同,最多可以有240個(gè)煙霧探測(cè)器、告警按鈕和執(zhí)行模塊連接在一個(gè)環(huán)路上。
執(zhí)行模塊和告警按鈕
執(zhí)行模塊是執(zhí)行設(shè)備,如遇到火災(zāi)時(shí)根據(jù)探測(cè)器總線傳來的的命令打開灑水器。一般來說,這些模塊包括一個(gè)或多個(gè)由MCU多點(diǎn)控制單元的GPIO通用輸入/輸出接口控制的中繼。通常情況下,執(zhí)行模塊使用與煙霧探測(cè)器相同種類的MCU多點(diǎn)控制單元。
告警按鈕安裝在走廊上,一旦遇到火災(zāi)或緊急事件,人們可以打破蓋板,按下按鈕進(jìn)行報(bào)警。有時(shí)為了降低成本,使用更簡(jiǎn)單的MCU。
執(zhí)行模塊和煙霧探測(cè)器的數(shù)量比是1:2或更少,系統(tǒng)中的告警按鈕數(shù)量比執(zhí)行模塊數(shù)量少。
電源
整個(gè)火災(zāi)控制系統(tǒng)的電源是由UPS(不間斷電源)提供的。24V直流電提供給中央處理器和每個(gè)環(huán)路板,然后環(huán)路板通過探測(cè)器總線將24V的直流電源提供給所有煙霧探測(cè)器、執(zhí)行模塊和告警按鈕。通信數(shù)據(jù)可以在每根總線上調(diào)制。
探測(cè)器的總線
探測(cè)器總線是一種裝有兩條線的特殊控制總線,帶有24V直流電源和調(diào)制數(shù)據(jù)。圖2顯示了探測(cè)器總線上的常見波形,但沒有更具體的波形,因?yàn)椴煌纳a(chǎn)商定義不同的通信協(xié)議。
時(shí)鐘
托管數(shù)據(jù)
主機(jī)數(shù)據(jù)
設(shè)備電流
代碼1
代碼0
OPEN
調(diào)時(shí)決定了總線MCU頻率的要求。
雖然它是個(gè)三態(tài)代碼,但是只使用兩種狀態(tài)來傳輸總線數(shù)據(jù),1和0(24V和0V)。第三種狀態(tài)OPEN用來表示主機(jī)等待某一設(shè)備響應(yīng)的狀態(tài)。在這種狀態(tài)下,總線被設(shè)置為一個(gè)恒定的中間電壓,例如12V,然后設(shè)備可從總線獲得電流,總線此狀態(tài)下作為一個(gè)電流回路。通過改變總線電流來代表邏輯1和0進(jìn)行通信。
煙霧探測(cè)器
圖3顯示常用煙霧探測(cè)器的塊狀圖
環(huán)路中的每個(gè)煙霧探測(cè)器都有獨(dú)特的地址代碼。詢問命令定時(shí)通過總線發(fā)射(例如:每三秒鐘)這種詢問命令是一個(gè)廣播,可以由所有的煙霧探測(cè)器接收的。如果一個(gè)探測(cè)器檢測(cè)到火情,它會(huì)將信息發(fā)送給控制器進(jìn)行報(bào)告。
MCU所需的資源和功能
以下是煙霧探測(cè)器應(yīng)用所需的要求:
非常低的功耗,對(duì)整個(gè)電路板所需的功率不超過400 uA
一個(gè)信道模擬數(shù)字轉(zhuǎn)換器(ADC)
7個(gè)GPIO通用輸入/輸出接口
一個(gè)用于定時(shí)功能的8位計(jì)時(shí)器
監(jiān)控器、計(jì)時(shí)器和低電壓檢測(cè),用于保證系統(tǒng)安全
16位的EEPROM電可擦寫可編程只讀存儲(chǔ)器用于存儲(chǔ)配置數(shù)據(jù)如地址和配置
2K的閃存,80字節(jié)的內(nèi)存
停止模式
QG4有四種操作模式,激活、等待、停止3、停止2和停止1。
激活背景模式用于代碼開發(fā)
等待模式:
。CPU停止操作來節(jié)約功率
。系統(tǒng)時(shí)鐘運(yùn)行
。保持全電壓調(diào)節(jié)
停止模式:CPU和總線時(shí)鐘停止
。停止1:內(nèi)部電路完全停止,以最大限度地節(jié)約功率。
。停止2:內(nèi)部電路功率部分停止,保持內(nèi)存內(nèi)容。
。停止3:所有內(nèi)部電路可以快速恢復(fù),保持內(nèi)存和注冊(cè)器中的內(nèi)容。
重啟后,操作的正常模式是運(yùn)行模式,并且在此模式中CPU被激活并且外圍設(shè)備可使用。通過執(zhí)行一個(gè)等待命令,MCU進(jìn)入等待模式。在等待模式中所需功率減小,因?yàn)镃PU沒有計(jì)時(shí)。為了進(jìn)一步減少功率消耗,可以使用停止模式。當(dāng)執(zhí)行停止命令時(shí),就輸入三個(gè)停止模式中的一個(gè)。停止1、停止2和停止3,每一種都具有不同級(jí)別的操作可減少功率的損耗。表1A描述了停止模式的行為。一般來說,停止模式的電源供應(yīng)(3V供應(yīng))如下:
停止1模式供應(yīng)電流, 475 nA
停止2模式供應(yīng)電流, 600 nA
停止3模式供應(yīng)電流, 750 nA
RTI加法器在停止1、停止2或停止3模式下,300 nA
LVI加法器在停止3模式下 (LVDE = LVDSE = 1),70 uA
振蕩器加法器在停止3模式下,5 uA
*ATD停止模式或功率的減少都根據(jù)ATDPU的狀態(tài)決定
**晶體振蕩器可配置運(yùn)行停止3。請(qǐng)見ICG注冊(cè)器。
表1B描述了如何通過配置不同注冊(cè)器的字節(jié)以及每個(gè)停止模式的結(jié)束條件來選擇停止模式。
當(dāng)使用停止2時(shí)要考慮以下幾個(gè)因素來確保正確操作。
IRQ PIN中斷請(qǐng)求腳必須激活或從外部拉起
LVD低壓差動(dòng)傳輸模式必須在停止模式中禁用(LVDSE = 0)
如果使用RTI,只有內(nèi)部時(shí)鐘源在停止2模式下生效。
OSCSTEN字節(jié)在停止2模式中無效,此時(shí)鐘參考將總是消耗電源
只有RAM保持功率,所有其它的I/O注冊(cè)器將在喚醒狀態(tài)下重新設(shè)置
在I/O 針腳從停止2模式進(jìn)入狀態(tài)被修改前,PPDF標(biāo)記必須被清除。
從停止模式恢復(fù)需要時(shí)間。在3V電壓時(shí),停止1和停止2的停止恢復(fù)時(shí)間大約為50 us,停止3的恢復(fù)時(shí)間根據(jù)時(shí)鐘定義的不同而變化。如果使用內(nèi)部參考時(shí)鐘,啟動(dòng)時(shí)間大約為100 us,而如果使用外部 32KHz水晶,如果振蕩器在停止模式下激活(設(shè)置為OSCSTEN),則是24ms。如果振蕩器在停止模式下禁用(OSCSTEN被清除),則是180 ms到300 ms。
不幸的是,雖然使用停止模式可以大量節(jié)約功率,但是許多煙霧探測(cè)器的設(shè)計(jì)師都不能接受停止模式,因?yàn)樗枰恢北3諱CU工作,以從總線獲得響應(yīng)。從停止模式恢復(fù)的時(shí)間使其很困難或甚至不可能。
低功耗設(shè)計(jì)的ICS網(wǎng)絡(luò)聯(lián)機(jī)共享配置和操作模式
建議使用ICS配置和操作模式由一般總線調(diào)時(shí)確定,至少需要100KHZ總線頻率。
根據(jù)不同的ICS配置,QG4有六種操作模式:FEI、FEE、FBI、FBILP、FBE和FBELP。因?yàn)镕BE模式有最低的功耗和最準(zhǔn)確的時(shí)鐘,所以建議用于煙霧探測(cè)器的應(yīng)用。遺憾的是,由于生產(chǎn)商使用不同的總線計(jì)時(shí),所以有時(shí)可能無效。例如:有些總線計(jì)時(shí)需要1MHz的總線頻率,QG4需要一個(gè)外部2MHz晶體振蕩器用于FBE模式,許多客戶不愿意支持額外的2個(gè)MHz晶體振蕩器成本,有些總線需要很低的總線頻率(如16Hz),然后可以選擇FBI模式。
QG4的內(nèi)部32KHz時(shí)鐘具有典型的的02%的準(zhǔn)確性和在整個(gè)操作溫度范圍有2%的誤差。
非常普遍而且低成本、低功率的配置是使用一個(gè)455KHz震蕩電路,用于FBELP模式??偩€頻率是2275KHz(可以分開為11375KHz)。如果供應(yīng)電壓是3V,2275KHz頻率下的(BDIV = 0)的QG4的電流供應(yīng)就是240μA,而11375 KHz(BDIV=1)的電流供應(yīng)是200 μA,284 KHz(BDIV=4)的電流供應(yīng)是170UA。
表2顯示所有適合煙霧探測(cè)器應(yīng)用的操作模式,考慮到功率損耗和成本問題。而且考慮以下因素用于計(jì)算不同模式的總線頻率。
FEI:Fbus= Firc * 512 / (2 * 總線分配器)
FBI:Fbus = Firc / (2 *總線分配器)
FBE:Fbus = Ferc / (2 *總線分配器)
與外部455KHz震蕩電路共同使用
當(dāng)MCU與外部455KHz振蕩電路共同使用,獲得功率損耗、系統(tǒng)成本、時(shí)鐘準(zhǔn)確度和總線頻率的最佳平衡時(shí),必須考慮振蕩電路組件的選擇以使其可靠。
圖4顯示典型的455KHz振蕩器電路。
C1,C2是指生產(chǎn)商的建議值,通常80到100 pF
在QG4的數(shù)據(jù)表上,規(guī)定了兩種特點(diǎn),低范圍是32到384KHz,高范圍超過1MHz。但是QG4可以與455KHz震蕩電路共同使用;雖然在電路特點(diǎn)中沒有具體說明。通過此配置, ICSC2 注冊(cè)器5位的范圍應(yīng)該設(shè)置為ICS的高范圍模式。
高電流應(yīng)該于POR
G4進(jìn)行重新設(shè)置時(shí)的電源,ICS的默認(rèn)模式總是FEI,在此模式中總線頻率是4Hz,大約從電源消耗2mA的電流,不適用于煙霧探測(cè)器應(yīng)用。建議在POR之后立即設(shè)置ICS到FBI模式。雖然高電流狀態(tài)一直存在于POR,但是用戶可以通過此方法縮短幾個(gè)說明周期的時(shí)間。在Tcsth之后,晶體振蕩器啟動(dòng)時(shí)間(5 ms用于高范圍,低的振蕩器功率模式),用戶可以將ICS轉(zhuǎn)換到最終工作模式,對(duì)FBE進(jìn)行正確操作。在Tcsth的過程中,用戶可以完成對(duì)系統(tǒng)初始工作,這對(duì)計(jì)時(shí)并不重要。
使用內(nèi)部模塊的電流供應(yīng)
每個(gè)內(nèi)部模式在工作時(shí)都從電源獲得電流,可以禁止某些未使用的模塊以節(jié)約電源,但是已使用的模塊的電流供應(yīng)必須考慮系統(tǒng)的電源損耗,以下是QG4內(nèi)部模塊的電流供應(yīng)列表。
RTI: 300 nA
LVD: 70 uA
ACMP: 20 uA
ADC: 120 uA(取樣時(shí)間長(zhǎng),低電流模式)
OSC: 5 uA(范圍低、低電源模式)
IRG: 100 uA
FLL: 210 uA ~ 300 uA(根據(jù)頻率和電壓的供應(yīng)決定)
FLL: 210 uA ~ 300 uA(根據(jù)頻率和電壓的供應(yīng)決定)
MCU的I/O 針腳必須正確設(shè)置來節(jié)約電源。所有未使用的I/O必須通過掛起或下拉的輸入來設(shè)置,或 簡(jiǎn)單的輸出模式可輸出禁止外部電路的狀態(tài)。
帶有閃存的EEPROM仿真
煙霧探測(cè)器使用EEPROM存儲(chǔ)數(shù)據(jù),如地址和系統(tǒng)配置。16位對(duì)于這些數(shù)據(jù)足夠了。QG4的閃存可輕松用于模擬EEPROM。通過內(nèi)部Vpp充電泵,無需外部Vpp。QG4的閃存可擦寫/編程10000次,是HC08 Flash MCU的10倍還多。而且建議采用一些解決方案來延長(zhǎng)閃存的生命周期。
閃存擦寫/編程代碼樣本
如何消除/編程閃存的樣本代碼可在CW5x的樣本目錄中找到。
在Vpp狀態(tài)時(shí),CPU使用不安全,那些閃存擦寫/編程代碼必須在RAM上執(zhí)行,而不是在閃存上執(zhí)行,為此用戶可以限定一個(gè)陣列,包含上述 C語言源代碼所編輯的二位代碼,并且稱RAM中的這個(gè)陣列為子程序。
PGM[21]總是閃存操作命令。以下macros操作可以被定義以使RAM中的這些代碼更容易做為子程序而被調(diào)用。
以下實(shí)例顯示如何調(diào)用函數(shù)。
在閃存可以正確擦寫或編程前,F(xiàn)CLK必須設(shè)置在150KHz到200 KHz之間的正確值。
在2275 KHz FCLK 下正確操作。
QG4的Ffclk特性是在150KHz到200 KHz之間。FCDIV的注冊(cè)器必須被寫入正確的值以設(shè)置正確的Ffclk。如果是PRDIV8,此寄存器的六位必須被清除。
fFCLK = fBus / (DIV + 1)
通過外部455 KHz FBE模式,在此模式中總線頻率是2275KHz。Ffclk只能被設(shè)置為2275 KHz(不分開)或11375 KHz(兩分),它最接近特定的Ffclk。
對(duì)于可靠的操作來說,建議采用帶有11375 KHz Ffclk的突發(fā)編程模式閃存。請(qǐng)注意突發(fā)編程與byte編程略有不同,所以源代碼應(yīng)該為突發(fā)模式重寫。
另一方面,當(dāng)閃存編程/擦寫時(shí)電源消耗更大,F(xiàn)LL加法器的供應(yīng)電流可以被忽略,所以另一個(gè)建議是使FLL獲得更高的總線頻率,然后在完成閃存操作后回到正常的設(shè)置。
模擬EEPROM的生命周期延長(zhǎng)
閃存只能被擦除為頁。QG4閃存的頁面大小是512個(gè)字節(jié),由于只有少量字節(jié)用于煙霧探測(cè)器,所以可采用一些解決方案來延長(zhǎng)模擬EEPROM的生命周期。解決方案之一就是存儲(chǔ)記錄數(shù)據(jù)在整個(gè)EEPROM上(參考圖5)。每個(gè)記錄有n個(gè)字節(jié)數(shù)據(jù)和1個(gè)字節(jié)標(biāo)記組成,這個(gè)標(biāo)記字節(jié)說明這n+1個(gè)字節(jié)地址是否被使用。如果沒被使用,用戶代碼可將新的數(shù)據(jù)寫入此位置;如果已被使用,那么將數(shù)據(jù)寫入下一個(gè)位置。當(dāng)閱讀虛擬EEPROM時(shí),用戶代碼應(yīng)該首先檢測(cè)這個(gè)標(biāo)記,然后從最后一個(gè)已使用位置上讀取數(shù)據(jù),它包含最新的數(shù)據(jù)。當(dāng)所有的地址(頁面尺寸/記錄尺寸)被使用時(shí),下一個(gè)寫操作應(yīng)該從頁面的第一個(gè)地址重新開始,結(jié)果閃存這一頁的生命周期就被(頁面尺寸/記錄尺寸)成倍延長(zhǎng)了。
如果15個(gè)字節(jié)被要求存儲(chǔ)地址代碼和配置數(shù)據(jù),那么要使用額外的一個(gè)字節(jié)作為標(biāo)記,所以記錄的尺寸是16個(gè)字節(jié),一頁可被使用512/16=32次,其生命周期可延長(zhǎng)至32*100,000=3,200,000循環(huán)。
當(dāng)閃存擦寫/重新編程時(shí)的電流
當(dāng)刪除/編程閃存時(shí)要考慮提供電流。當(dāng)Vdd = 32V, Ffclk = 2275 kHz,擦除頁使用578 mA,并且花費(fèi)4000Tfcyc,也就是1758 ms。
閃存塊保護(hù)
由于Flash編程/刪除代碼包括在用戶代碼中,所以閃存必須被塊保護(hù)以避免由于程序運(yùn)行錯(cuò)誤所導(dǎo)致的意外內(nèi)存操作。要塊保護(hù)閃存,用最后一個(gè)未被保護(hù)內(nèi)存的地址來設(shè)置NVPROT寄存器。例如,要通過0xFFFF保護(hù)0xFA00,0xF9FF是最后一個(gè)未保護(hù)地址,所以0xF8必須向NVPROT寫為15位到9位的內(nèi)存地址(8位到0位都是邏輯1)。
如果支持塊保護(hù),確保向量是否被重新導(dǎo)向。如果向量被清除NVOPT寄存器內(nèi)的FNORED位進(jìn)行重新導(dǎo)向,用戶代碼必須改變,以從新的向量位置分配和接入向量。如果引導(dǎo)裝入程序被在系統(tǒng)內(nèi)編程或更新使用,它就是塊保護(hù),向量必須重新導(dǎo)向,或者引導(dǎo)裝入不能編輯默認(rèn)的向量位置,因?yàn)槿绻恢С謮K保護(hù),這些也被保護(hù)。
正常情況下,中斷服務(wù)的方式如下:
3號(hào)或4號(hào)說明ISR函數(shù)的絕對(duì)向量數(shù)量,例如,QG4的向量3是低電壓檢測(cè)中斷,向量位置是0xFFF8:0xFFF9。
但是如果支持向量的重新導(dǎo)向,這種情況就不生效――在被重新導(dǎo)向后,模擬比較器向量就轉(zhuǎn)向地址0xFDF8:0xFDF9。仍舊從0xFFF8:0xFFF9輸入中斷服務(wù)將導(dǎo)致致命錯(cuò)誤,然后中斷服務(wù)的方法如下:
宣布中斷服務(wù)的另一種方法是在向量表起始的位置定義一個(gè)函數(shù)陣列。
一旦向量被重新導(dǎo)向,就可以將函數(shù)陣列地址改變到新的位置。
在任何情況下,重設(shè)向量都不被重新導(dǎo)向,它總是0xFFFE:0xFFFF。所以,啟動(dòng)函數(shù)地址不能改變。單獨(dú)在PRM文件中的定義它的函數(shù)地址。
模數(shù)轉(zhuǎn)換器(ADC)的配置
模數(shù)轉(zhuǎn)換器(ADC)時(shí)鐘選擇模數(shù)轉(zhuǎn)換器(ADC)能夠使用多點(diǎn)控制單元MCU總線時(shí)鐘、一個(gè)總線時(shí)鐘脈沖分為兩次或在模塊內(nèi)的本地異步時(shí)鐘進(jìn)行轉(zhuǎn)換操作。如果總線頻率低于fADCK的頻率,當(dāng)支持短信號(hào)時(shí),連續(xù)轉(zhuǎn)化的準(zhǔn)確信號(hào)時(shí)間就不能保證。如果總線頻率低于fADCK頻率的1/11,當(dāng)支持長(zhǎng)信號(hào)時(shí),連續(xù)轉(zhuǎn)化的準(zhǔn)確信號(hào)時(shí)間就不能保證。
當(dāng)455kHz振蕩電路被使用,并且總線頻率是2275kHz時(shí),異步時(shí)鐘(ADACK)應(yīng)該被選為模數(shù)轉(zhuǎn)換器(ADC)的時(shí)鐘源。
比較
表4列出煙霧探測(cè)儀應(yīng)用最常使用的MCU。
*這是為Vdd=3V、Fbus=1 MHz、FBE模式(帶有外部2 MHz晶振)提供的電流。FLL使用大約220310uA,ICR一般使用100uA,對(duì)于FEI模式,一般490+250+100=840uA;同時(shí)OSC在LP模式下使用5uA,帶有32kHz外部表晶體振蕩器的FEE模式大概是490+250+5=745uA。
**這是為Vdd=3V、Fcpu=1 MHz,帶有外部4 MHz RC振蕩器提供的電流。
***這是為Vdd=3V、Fmclk=1 MHz,帶有32768表晶體振蕩器提供的電流。因此包括DCO和振蕩器的供應(yīng)電流。
^FBE模式,F(xiàn)bus=455(2*2)=11375kHz。
^^Fmclk=455/4=11375kHz。
參考
飛思卡爾
MC9S08QG4數(shù)據(jù)表
飛思卡爾AN2493、MC9S08GB/GT低功耗模式
評(píng)論