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