張巖等



摘 要: 廣泛使用MSP430為主控單元的穿戴式健康監護設備功能不斷發展,促使在該平臺下的數據實時存儲和功能評測的需求日益增強。在此介紹基于MSP430的FatFs文件系統的移植以及Micro SD卡讀/寫功能的實現方法,提出了Micro SD卡讀/寫功能的評測方案,并測試了不同條件下的讀/寫速率。結果表明,FatFs文件系統能被靈活地移植到MSP430系統中,并能適應不同內存環境的應用需求,Micro SD卡的讀/寫速率與緩沖區大小直接相關。
關鍵詞: FatFs; MSP430; Micro SD; 數據存儲
中圖分類號: TN911?34; TP274.2 文獻標識碼: A 文章編號: 1004?373X(2015)12?0129?03
0 引 言
近年來,出現了腕表型的血氧監測儀、睡眠生理監護儀等各式各樣的可穿戴健康監護設備[1]。使用者通過這類穿戴式設備可方便有效地對自身日常健康、亞健康狀態進行監護,從而達到預防疾病、治未病的目的。為了便于長時間觀測記錄,對健康狀態變化趨勢進行定期的分析,需要對日常監護數據進行長期、快速、低功耗的存儲,這已成為此類醫療設備的必備功能。以低功耗為主要特點的MSP430微處理器是此類穿戴式設備應用較為廣泛的開發平臺。由于已有的其他平臺上集成的工具包通常針對大數據量,高數據存儲率的數據存儲[2?3],設計過程中對功耗的考慮較少,往往難以滿足低功耗的要求。因此針對MSP430開發平臺,對日常監護過程中長期的、存儲量相對較小的數據存儲,實現功耗與速度的平衡,是目前穿戴式設備開發過程中亟待解決的問題。
本文以具有超低功耗的MSP430單片機為主控制單元,討論在MSP430控制下如何實現Micro SD卡的讀/寫功能,并提出了在MSP430平臺下Micro SD卡讀/寫功能的測試方案,對不同條件下的讀/寫速率進行了評估,本文結果為基于MSP430的數據存儲方案的設計提供了實際參考。
1 硬件設計
主控芯片選用MSP430系列中MSP430F5438,因其RAM容量達16 KB,具有處理數據量較大任務的能力。MSP430的工作電壓為3.3 V與Micro SD卡的工作電壓一致,可以避免使用額外的電壓轉換模塊,降低了功耗和成本。由于日常監護是長期的、存儲量相對較小的過程,使得單片機更多是處于低功耗運行的狀態,與AVR、STM等單片機相比,MSP430的多時鐘系統使功耗管理更為靈活[4?5]。
數據存儲選用2 GB容量的Micro SD卡,Micro SD卡支持SDIO(Secure Digital Input and Output)訪問和SPI(Serial Peripheral Interface)訪問[6],考慮到MSP430
F5438內部已集成了SPI端口,故Micro SD卡與單片機的連接配置為SPI模式。卡槽與MSP430F5438的連接如圖1所示。
2 軟件設計
本系統利用雙緩沖區的設計來保證在將一個緩沖區的數據寫入Micro SD卡的同時順利接收數據采集模塊上傳的新數據,并將新數據寫入另一個緩沖區以等待被寫入Micro SD卡,調整緩沖區大小即可改變讀/寫速度。為了保證寫入Micro SD卡與數據具有一定的可讀性,需要在Micro SD卡與電腦間建立一座溝通的橋梁,Fat(File Allocation Table)文件系統即是這種能方便電腦讀出卡內數據的數據組織方式。因此軟件部分主要包括有FatFs模塊和Micro SD卡操作模塊,并在對Micro SD卡操作前配置好單片機的SPI工作方式。
2.1 FatFs的移植
FatFs是一種已經被廣泛使用的、開源的文件系統模塊,通過接口函數可以被方便地移植到不同的微控制器平臺中[7]。由于本系統只涉及Micro SD卡的讀取和寫入,因此在配置時裁剪掉一些無關函數以進一步縮小代碼和工作區所占空間。圖2為讀/寫文件時的一般流程。
2.2 Micro SD卡操作
圖3所示為Micro SD卡初始化過程。Micro SD卡初始化過程主要包括復位、識別2個過程。復位過程包括Micro SD卡上電延時并保持至少74個時鐘周期;拉低卡片選線CS;發送CMD0使卡進入空閑狀態。識別過程包括判斷支持的SD協議版本;區分SD卡和MMC卡;若是SD卡還需進一步識別標準容量卡(SDSC)或者高容量卡(SDHC);獲取卡工作電壓范圍。由于本系統采用Micro SD卡槽,并且單片機資源有限,因此簡化MMC卡識別和獲取工作電壓范圍的步驟,只識別協議版本和卡容量。在初始化的最后,將數據塊長度設置為512 B。
3 系統測試
在完成以上移植后,利用單片機計數器計時對移植后的讀/寫速度進行了一系列測試,分別測試了不同緩沖區大小,FatFs不同配置對讀/寫速度的影響。測試環境:選用Kingston的2 GB容量Micro SD卡為測試對象;以10 MB大小的文件作測試文件;SPI時鐘設定為12 MHz;IAR v5.5軟件平臺;ITECH的IT6302型穩壓電源。圖5所示為測試程序流程圖。
3.1 全功能FatFs配置測試
表1為FatFs全功能配置時讀/寫速度的測試結果。向卡內讀出/寫入10 MB大小數據后,從定時器中獲得一次讀/寫用時,并如此重復執行50次后,取每次讀/寫平均用時,以及在編譯器map文件中觀察到的程序占用空間大小。
流的差值。
3.2 TINY_FatFs配置測試
TINY模式通常被用在內存較小的設備上,以犧牲讀/寫速度和一些API函數來降低內存占用。在ffconf.h中修改配置選項:
#define _FS_TINY 1
開啟TINY模式,并重復3.1中測試步驟,表2為TINY模式下的測試結果。
從以上2個實驗可知,讀/寫速度的快慢與緩沖區大小直接相關。表1中出現緩沖區512 B時速度快于1 024 B,可能是因為Micro SD卡在讀/寫數據時是以數據塊為單位的,每次讀取兩個數據塊內容時的執行效率并沒有單塊讀取時高。當緩沖區大于1 024 B后,多塊讀的效率才能真正體現出來。所以,在內存較大的設備上,可以選擇較大的緩沖區以獲得較高的讀/寫速度;而在內存較小的設備上,則需考慮緩沖區對內存的影響。從電流消耗方面看,在進行讀/寫操作時的電流消耗差別不大,要進一步降低功耗有必要從縮短讀/寫時間、減少讀/寫次數兩個方面考慮,從側面印證了緩存區越大讀/寫效率越高。
流的差值。
4 結 語
實現基于MSP430單片機的Micro SD卡存儲功能可以使穿戴式健康監測設備以更低的功耗、更小的體積實時記錄更大量的數據。讀/寫速度測試結果表明FatFs文件系統能被靈活地移植到各型號MSP430單片機上,適應不同數據量的應用,應當注意的是Micro SD卡的讀/寫速率受到緩沖區大小的影響,在大數據存儲時應選擇較大的緩沖區以獲得較高的讀/寫速度。讀/寫Micro SD卡本身是能耗較高的執行動作,要實現系統低功耗運行還依賴于更高效的程序設計。本文的測試結果也適用于其他數據采集和存儲的應用領域。
參考文獻
[1] 騰曉菲,張元亭.移動醫療:穿戴式醫療儀器的發展趨勢[J].中國醫療器械雜志,2006,30(5):330?340.
[2] 田茂,鮮于李可,潘永才.SPI模式下SD卡驅動的設計與實現[J].現代電子技術,2009,32(14):195?199.
[3] 張恒.基于AT89S52和FAT16的SD卡讀寫系統設計[J].單片機與嵌入式系統應用,2009(8):53?58.
[4] 焦冰,葉松,溫雅婷.MSP430低功耗原理及其在海溫測量中的應用[J].現代電子技術,2011,34(10):189?192.
[5] 沈曉昱,王曉娜,李文軍.基于MSP430的低功耗溫度采集報警系統的實現[J].工業儀表與自動化裝置,2009(3):31?33.
[6] SD Association. SD specifications part 1: physical layer simplified specification version 2.00 [EB/OL]. [2009?06?10]. https://www. blog.163.com.
[7] CHA N. FatFs?generic FAT file system module [EB/OL]. [ 2015?03?18]. http://elm?chan.org/fsw/ff/00index_e.html.