楊瑞俊
(山西職業(yè)技術(shù)學(xué)院電子工程系,山西 太原 030006)
藥品運輸箱環(huán)境監(jiān)測卡的研發(fā)
楊瑞俊
(山西職業(yè)技術(shù)學(xué)院電子工程系,山西 太原 030006)
基于MSP430低功耗單片機,設(shè)計了一種藥品運輸箱的環(huán)境溫度監(jiān)測儀。無論單片機還是外圍芯片都選取了具有低功耗性能的,在軟件設(shè)計的策略的上也充分考慮到了節(jié)能性。借助M24LR16E的兩種訪問模式,將監(jiān)測儀設(shè)計成了一種RF卡,增加了使用的靈活性。對數(shù)據(jù)的存儲制定了專門的文件系統(tǒng),從而實現(xiàn)循環(huán)存儲以及快速搜索。同時為了避免實際使用中由于重啟導(dǎo)致文件系統(tǒng)混亂,設(shè)計了采集中斷恢復(fù)機制,保持文件存儲的完整性。
MSP430;監(jiān)測卡;M24LR16E
藥品在運輸過程中,對環(huán)境溫度有比較高的要求,這不僅涉及到藥品本身的經(jīng)濟價值,更關(guān)乎到病人的治療效果。因此設(shè)計一款便攜藥品運輸箱環(huán)境溫度監(jiān)測卡具有重要的意義。本項目設(shè)計的環(huán)境溫度監(jiān)測卡具有功耗低、待機時間長、數(shù)據(jù)可循環(huán)存儲等特點,同時將監(jiān)測儀設(shè)計成RF卡的形式,增加了使用環(huán)境的靈活性以及數(shù)據(jù)訪問方式的多樣性。
本產(chǎn)品是以TI公司的MSP430系列單片機為核心構(gòu)建了整個系統(tǒng),系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)設(shè)計框圖
產(chǎn)品的電源部分采用可反復(fù)充電的鋰電池給系統(tǒng)的各個部分供電。同時利用T3168芯片,實現(xiàn)了最新的無線充電技術(shù),簡化了鋰電池充電的操作方法,提高了使用效率。
EEPROM采用的是意法半導(dǎo)體公司的M24LR16E芯片。此芯片是具有密碼保護功能的雙接口64 Kbit EEPROM,支持400 kHz I2C串行總線協(xié)議和射頻協(xié)議,射頻通信采用13.56 MHz載波。基于此特點,該存儲器可作為CPU與上位機軟件的媒介,實現(xiàn)兩者的通信,使得產(chǎn)品相對于上位機來說構(gòu)成了一個RF卡。
溫度傳感器采用的是TMP102,這是一款低功耗的數(shù)字溫度傳感器。供電范圍為1.4 V~3.6 V,工作時最大電流僅為10 μA,停止工作時最大消耗電流可降低到1 μA。
非易失存儲器采用的是SST公司的SST25VF032B。此款FLASH可采用SPI接口進行訪問,高速時鐘頻率可達80 MHz。具有靈活的擦除方式,快速的讀寫能力。同時通過各種機制實現(xiàn)了低功耗,讀操作時的電流消耗一般為10 mA,等待模式中電流可降到5 μA。
環(huán)境溫度監(jiān)測卡在使用過程中是裝在密閉的運輸箱中的,無法對其進行供電。因此低功耗設(shè)計是本產(chǎn)品成功與否的首要標(biāo)準(zhǔn)。功耗過高,會縮短單次工作時長,無法保證完成一次較長時間的溫度監(jiān)控任務(wù)。
2.1 單片機的低功耗設(shè)計
TI公司的MSP430F449芯片是目前市場上特別強調(diào)低功耗的微處理器之一。該單片機可以給CPU以及眾多外圍模塊提供多個時鐘信號源,包括:主系統(tǒng)時鐘MCLK、輔助時鐘ACLK、子系統(tǒng)時鐘SMCLK。通過配置相應(yīng)的寄存器,MSP430可以運行6種工作模式。1種活躍模式AM,5種低功耗模式LPM0、LPM1、LPM2、LPM3、LPM4[1]。用戶可以根據(jù)設(shè)計的實際要求將系統(tǒng)配置成不同的低功耗模式。此外,最快達6 μs的瞬態(tài)響應(yīng)時間提高了單片機的運行速度,不至于由于頻繁的進入低功耗模式,而使得系統(tǒng)效率降低[2]。
本產(chǎn)品應(yīng)用到了單片機的多種外設(shè),如基本定時器、TimerA、ADC等。其中基本定時器的一個功能是產(chǎn)生實時時鐘,因此使用由32 KHz生成的時鐘最為準(zhǔn)確,此時鐘信號源則為ACLK,同時實時時鐘的功能決定了ACLK在低功耗模式下不能被禁止。
綜合以上設(shè)置,單片機在完成相關(guān)的初始化后,則進入LPM0低功耗模式,等待外部事件喚醒。此模式下,CPU處于禁止?fàn)顟B(tài),MCLK被禁止,SMCLK和ACLK處于活躍狀態(tài)。在活躍狀態(tài)下,單片機的電流大約為300 μA左右,進入低功耗模式下,電流大約為55 μA左右。
2.2 外圍電路的低功耗設(shè)計
外圍電路的功耗對整體產(chǎn)品的功耗有重要的影響。FLASH的供電控制用SGM3005來實現(xiàn)。SGM3005是低電阻、低電壓的單刀雙擲模擬開關(guān)。典型的電阻值為0.5 Ω,開啟速度16 ns,關(guān)閉速度15 ns,典型的功耗小于0.01 μW。
該芯片內(nèi)部包含了兩個模擬開關(guān),每個模擬開關(guān)由四個引腳組成,控制管腳INx,公共管腳COMx,常開管腳NOx以及常關(guān)管腳NCx。則單片機可以通過控制INx管腳,來控制FLASH是否供電,最大程度的降低無效功耗。
EEPROM與溫度傳感器的供電是由單片機的IO口通過三極管來控制。同樣根據(jù)需要來啟動或關(guān)閉硬件。
此外選擇的外圍芯片溫度傳感器、FLASH等都是以低功耗為主。
3.1 M24LR16E芯片的使用
有別于通常所見到的EEPROM,M24LR16E擁有兩種訪問方式。一種是常見的I2C通信方式,一種是射頻通信方式。CPU可通過前一種方式進行訪問,而上位機可以通過RF方式對其進行非接觸式的訪問。PC可通過讀卡器對其進行操作與訪問。
M24LR16E的存儲器的用戶數(shù)據(jù)存儲區(qū),分為64個扇區(qū),每個扇區(qū)有32個區(qū)塊,每個區(qū)塊包含32位數(shù)據(jù)空間。在RF模式下,對EEPROM訪問的最小單位為1個區(qū)塊,也就是32位,4個字節(jié)[3]。每次寫操作都會將4個字節(jié)的內(nèi)容都改寫。訪問區(qū)塊的地址為0~2047。而在I2C模式下,訪問的最小單位為字節(jié)。訪問字節(jié)的地址為0~8191。
3.2 與上位機的通信協(xié)議簡述
作為上位機與監(jiān)測卡通信中介的M24LR16E無論在與單片機還是上位機的通信中都處于從設(shè)備地位。這樣就造成了當(dāng)上位機發(fā)送命令后,M24LR16E并不會主動將命令下發(fā)給單片機,而只能等待單片機主動來訪問,同樣的,單片機發(fā)送給M24LR16E數(shù)據(jù)后,也只能等待上位機來主動取。這種工作原理決定了需要制定特殊的通信協(xié)議。
所有的通信事件都是由上位機發(fā)起的。上位機下發(fā)的命令包第一個字節(jié)存放在M24LR16E的第一個字節(jié)處。剩余數(shù)據(jù)依次往后存儲。
命令包有三種:任務(wù)開始命令、讀取數(shù)據(jù)命令以及擦除存儲器命令。每個包的第一個字節(jié)為命令字段,表明此次通信事件為哪種命令,命令包的最后一個字節(jié)為CRC校驗字段。兩者中間為相關(guān)參數(shù)。如表1所示。
表1 上位機命令包格式
為了保證雙方通信的正確率,定義了M24LR16E的最后一個字節(jié)(字節(jié)地址為0x7FF)為標(biāo)志字節(jié)。上位機下發(fā)完參數(shù)之后,需將EEPROM中的標(biāo)志字節(jié)改寫成0XAA,以通知單片機參數(shù)已經(jīng)寫好。單片機以0.5 s的間隔來查看該字節(jié)是否為0XAA。如果監(jiān)測到為0xAA,則接收EEPROM中數(shù)據(jù)。接收之后需要對數(shù)據(jù)包進行校驗,校驗無誤之后將0x7ff字節(jié)寫成0XBB,通知上位機數(shù)據(jù)接收。如果接收錯誤,則將標(biāo)志字節(jié)寫成0XCC。表示上位機需要重發(fā)此次命令包。如果單片機長時間沒有反應(yīng),上位機也需要重發(fā)。重發(fā)次數(shù)定為3次。命令包收發(fā)的流程如圖2所示。
圖2 命令包收發(fā)流程圖
三個命令當(dāng)中讀取數(shù)據(jù)命令是需要給上位機返回歷史數(shù)據(jù)的。
單片機記錄溫度數(shù)據(jù)是以任務(wù)為單位記錄的,而上位機讀取歷史數(shù)據(jù)是以單號為單位進行查詢的。一個單號可能對應(yīng)多次任務(wù)。此外,每次任務(wù)的數(shù)據(jù)量是不定的。定義一次數(shù)據(jù)傳輸最大數(shù)據(jù)包為1024字節(jié),某個任務(wù)的數(shù)據(jù)量有可能需要多個大數(shù)據(jù)包才能傳輸完畢。針對單片機返回歷史數(shù)據(jù),制定協(xié)議如圖3所示。
圖3 單片機返回歷史數(shù)據(jù)流程圖
4.1 存儲器的功能分區(qū)
本產(chǎn)品采用的數(shù)據(jù)存儲芯片SST25VF032B,容量為32 Mb,具有靈活的擦除機制。在采集數(shù)據(jù)的過程中采取4Kbyte的擦除方式,避免存儲空間的浪費。將整個存儲器可以劃分為1 024個扇區(qū),每個扇區(qū)為4096個字節(jié)。
監(jiān)測儀的每次新任務(wù)開始,從一個新的扇區(qū)開始存儲數(shù)據(jù)。
本產(chǎn)品在FLASH中設(shè)計了類似FAT文件系統(tǒng)的方式,專門開辟出一個扇區(qū)作為目錄區(qū),來定義各個任務(wù)的開頭位置。目錄區(qū)的一個字節(jié)對應(yīng)數(shù)據(jù)區(qū)的一個扇區(qū),如果此扇區(qū)是任務(wù)的開頭部分,則對應(yīng)目錄區(qū)字節(jié)為0x00,否則為0xFF。在一個新的任務(wù)開始或者要刪除某一任務(wù)的數(shù)據(jù)時,需要更新目錄區(qū)。FLASH的寫之前是需要先擦除的,通常的做法是先將目錄區(qū)的內(nèi)容存入其他位置,擦除之后將新內(nèi)容寫入,再將未修改的位置恢復(fù)到原來的數(shù)據(jù)。然而本設(shè)計中沒有足夠的RAM空間來做緩存,因此需要將FLASH再劃出一個扇區(qū)作為目錄備份區(qū)。FLASH功能區(qū)定義如圖4所示。
圖4 FLASH功能劃分
4.2 采集中斷恢復(fù)處理
作為電池供電的設(shè)備,首先要考慮到如果監(jiān)測儀工作時間過長導(dǎo)致掉電之后,由于此次任務(wù)沒有正式結(jié)束。會造成存儲器里文件系統(tǒng)出錯,導(dǎo)致以后上位機訪問失敗。此外,看門狗復(fù)位、用戶多次重啟都會造成文件系統(tǒng)混亂。因此需要設(shè)計一種中斷恢復(fù)機制來保證系統(tǒng)的正常運轉(zhuǎn)。
在此單片機中,有一塊專門存放固定信息的區(qū)域稱為信息區(qū),此部分也是FLASH構(gòu)成。關(guān)于此次任務(wù)的相關(guān)參數(shù)、新任務(wù)的起始存放地址、當(dāng)前操作的扇區(qū)地址等重要信息,都存放到信息區(qū)。當(dāng)由于多種原因造成系統(tǒng)重啟之后,首先進入信息區(qū)將數(shù)據(jù)讀取出來進行處理。將上次掉電時的地址存放到FLASH中,重啟一個扇區(qū)開始執(zhí)行第二次任務(wù)。
4.3 數(shù)據(jù)訪問工作流程
數(shù)據(jù)采集過程開始之后,單片機首先從信息區(qū)讀取上次任務(wù)的結(jié)束地址,從下一個扇區(qū)開始存放新任務(wù)數(shù)據(jù)。第一步先更新目錄區(qū),將新扇區(qū)對應(yīng)的字節(jié)寫為0x00,其他不變。第二步將此次任務(wù)的相關(guān)參數(shù)放入新扇區(qū)的開頭部分,留下三個字節(jié)用于最后存放任務(wù)結(jié)束時最后一個溫度數(shù)據(jù)的字節(jié)地址。第三步就開始按照間隔時長來存放實時的溫度值。當(dāng)最后結(jié)束之后,將結(jié)束地址保存起來。流程圖如圖5所示。
上位機發(fā)送讀取某個單號的歷史數(shù)據(jù)時,單片機首先搜索目錄區(qū)。字節(jié)值為0x00的,則將對應(yīng)扇區(qū)的開頭數(shù)據(jù)讀取出來,對比是否為此單號的任務(wù)數(shù)據(jù)。如果是的話,則將結(jié)束字節(jié)地址讀取出來,計算出此次上傳數(shù)據(jù)需要幾個數(shù)據(jù)包來傳遞。上傳數(shù)據(jù)的具體過程在無線卡通信中已經(jīng)有簡要說明。
圖5 采集數(shù)據(jù)流程
上位機軟件我們使用廠家提供的測試DEMO。上位機下發(fā)指令需要在命令窗口中手動輸入。測試數(shù)據(jù)如圖6所示。
圖6 測試數(shù)據(jù)
圖6中,0A 21表示寫命令。之后的兩個字節(jié)00 00表示塊地址。0x10表示發(fā)給監(jiān)測儀的是任務(wù)開始指令。01 00表示單號。00 01 00表示每次采集的時間間隔為0 h1 min0 s。E4 83表示CRC校驗碼。這八個字節(jié)就是此次任務(wù)的相關(guān)參數(shù)。最后一行表示將eeprom的最后一個字節(jié)寫為0xAA,通知監(jiān)測儀接收命令。監(jiān)測儀收到命令之后開始監(jiān)測。10 min之后點擊按鍵結(jié)束。上位機發(fā)送讀取數(shù)據(jù)命令0A 23 00 00 07。其中0A 23為讀命令,00 00表示起始地址為00。07表示連續(xù)讀7個塊。
AA表示此包為最后一包數(shù)據(jù)。01 00 表示單號。00 01 00表示采集時間間隔。之后的為10個溫度值。最后兩個字節(jié)11 2F為CRC校驗。
經(jīng)過檢驗,監(jiān)測儀基本達到了設(shè)計的要求。
通過軟硬件設(shè)計實現(xiàn)了低功耗的環(huán)境溫度監(jiān)測卡,在電池供電下能夠保持長時間的工作。利用M24LR16E作為與上位機通信的中介,將監(jiān)測卡設(shè)計成了一種RF卡。在特制的文件系統(tǒng)下,采集的數(shù)據(jù)可以循環(huán)有序的存放,并能在大量數(shù)據(jù)中實現(xiàn)快速查詢。同時完善了中斷恢復(fù)的機制,保證了數(shù)據(jù)存儲的完整性。
[1] 曹磊.MSP430單片機C語言程序設(shè)計與實踐[M].北京:北京航空航天大學(xué)出版社,2007:30-31.
[2] MSP430x4xx Family User’s Guide[EB/OL].Texas Instruments,[2013-09-05].www.ti.com.
[3] M24LR16E-R Preliminary Data[EB/OL].STMicroelectronics,[2011-11-30].www.st.com.
Development of Environmental Monitoring Card for Drug Transportation Box
Yang Ruijun
(ElectronicEngineeringDepartment,ShanxiPolytechnicCollege,TaiyuanShanxi030006,China)
Based on the MSP430 low power consumption MCU, the paper designs a kind of environmental temperature monitor for drug transport box. Both the CPU and the peripheral chip are selected of low power consumption performance. Energy saving has also been fully taken into account in the software design strategy. With the help of the two access modes of M24LR16E, the monitor is designed as a RF card, which increases the flexibility of use. A special file system is developed for data storage so as to achieve the cycle of storage and fast search. At the same time, in order to avoid the confusion of the file system caused by the reset during the actual use, an interrupt recovery mechanism is designed and keeps the integrity of the file storage.
MSP430;monitor;M24LR16E
2017-04-06
楊瑞俊(1984- ),男,山西晉中人,助講,碩士研究生,研究方向:信號與信息處理。
1674- 4578(2017)03- 0072- 04
TP273.5
A