摘 要: 針對Cortex-M3內核的STM32處理器平臺,成功移植μC/OS操作系統(tǒng),并引入FatFs開源軟件,構建了FAT32通用文件系統(tǒng)。以溫度采集與記錄系統(tǒng)為實例,通過對μC/OS操作系統(tǒng)、FAT文件系統(tǒng)、TF卡等相關技術的分析,實現了面向TF卡存儲媒介的大容量存儲系統(tǒng),將實時溫度按時間關系存儲至TF卡。
關鍵詞: μC/OS-II;TF卡;FatFs文件系統(tǒng)模塊
0 引言
隨著嵌入式微處理器功能的不斷增強,嵌入式系統(tǒng)廣泛應用于音頻、視頻、故障記錄、數據記錄等大批量數據存儲的場合,傳統(tǒng)的由單片機構成的系統(tǒng)簡單的對存儲媒介按地址、按字節(jié)的讀/寫已然不能滿足人們的實際需求?;赗TOS的存儲系統(tǒng)在宕機、斷電等異常發(fā)生時,可以保證數據的完整性以及能夠快速地恢復正常工作。為了與現行PC平臺共享數據,嵌入式系統(tǒng)迫切需要采用通用文件系統(tǒng)來實現大批量數據的管理[1]。因此,本文以基于μC/OS操作系統(tǒng)的TF卡存儲系統(tǒng)的設計為研究對象,具有很好的實際意義。
本文基于μC/OS操作系統(tǒng)平臺,設計并實現了以PT100鉑電阻為溫度傳感器、以STM32F107VCT6微處理器為核心的硬件平臺,實現環(huán)境溫度采集和實時時鐘功能,并在PC上顯示實時溫度以及將溫度數據按時間關系存儲至TF卡文件中。系統(tǒng)實現框圖如圖1所示。
1 溫度傳感器
本文采用溫度傳感器PT100測溫。PT100是鉑熱電阻,當PT100在0℃時阻值為100 ?贅,它的阻值會隨著溫度的增加呈規(guī)律性的變化。在-50℃~+600℃范圍內,PT100具有其他任何溫度傳感器無法比擬的優(yōu)勢。PT100驅動電路如圖2所示。
在0≤t<65℃時,PT100鉑熱電阻阻值與輸出電壓V的關系為V=k×R+b。在第一次使用PT100時,需要校準PT100。校準過程如下:
?。?)在PT100插件處插上100 Ω電阻,獲取AD值記為Vm。
?。?)在PT100插件處插上125 Ω電阻,獲取AD值記為Vn。
(3)根據數據(100,Vm)和(125,Vn)求取k、b系數。
?。?)軟件實現將k、b系數值存儲至EEPROM中。
在使用PT100測試溫度時,根據轉換的AD電壓值與k、b系數獲取PT100阻值R。然后利用式(1)求取溫度值:
T=sqrt(4×Pt_B×(R/Pt_R0)+Pt_A×Pt_A-4×Pt_B)-Pt_A)/(2×Pt_B)(1)
其中,Pt_A=0.003 908 3,Pt_B=-0.000 000 577 5,Pt_R0=100,單位為℃。
2 μC/OS-II操作系統(tǒng)
μC/OS-II是以任務為核心的實時操作系統(tǒng),μC/OS-II V2.52可以管理64個任務,任務管理包括:創(chuàng)建任務、掛起任務、刪除任務、喚醒任務、改變任務優(yōu)先級和獲取任務狀態(tài)。每個任務都有唯一的優(yōu)先級,優(yōu)先級號越低,任務的優(yōu)先級越高,任務越重要。在任一給定的時刻,任務的狀態(tài)已知,且為以下5種狀態(tài)中的一種,各任務狀態(tài)切換如圖3所示。
?。?)睡眠狀態(tài):任務駐留在程序空間中,還沒有交給μC/OS操作系統(tǒng)內核管理。
?。?)就緒狀態(tài):任務一旦建立,就處于就緒狀態(tài),準備運行。若新建的任務優(yōu)先級比正運行的任務優(yōu)先級高,則內核提供任務切換服務,新任務運行。
?。?)運行狀態(tài):已經建立的、就緒狀態(tài)中優(yōu)先級別最高的任務進入運行狀態(tài)。任何時刻只能有一個任務處于運行狀態(tài)。
?。?)等待狀態(tài):正在運行的任務通過調用OSTimeDly()和OSTimeDlyHMSM()函數實現延時,等待延遲時間到;運行中的任務可能需要等待某一事件的發(fā)生,從而進入等待狀態(tài)。
?。?)中斷服務狀態(tài):運行中的任務被中斷,從而進入中斷服務狀態(tài)[2]。
有時,任務或中斷與任務之間需要傳遞信息,這種信息傳遞稱為任務間的通信。μC/OS-II支持3種通信方式:信號量、消息郵箱、消息隊列,它們統(tǒng)稱為事件。每個事件由獨立的事件控制塊ECB控制,ECB定義了事件類型,包含了當前正在等待事件發(fā)生的任務號等信息。μC/OS-II還具有時間管理與內存管理等功能。
3 TF卡與FatFs文件系統(tǒng)
當嵌入式產品需要擴展系統(tǒng)容量用來存儲數據時,目前常用的有U盤、Flash芯片、TF卡等,其中最適合單片機系統(tǒng)的莫過于TF卡了,它不僅支持最大容量32 GB,還支持SPI接口,且能在TF卡上實現文件系統(tǒng)[3]。
FatFs Module是一種完全免費開源的FAT文件系統(tǒng)模塊,專門為小型嵌入式系統(tǒng)設計。FatFs的編寫遵循ANSIC,并且完全與磁盤I/O層分開,經簡單的修改便可移植到多種嵌入式處理器上[4]。FatFs系統(tǒng)框圖如圖4所示。
FatFs具有清晰的層次結構,應用層提供規(guī)范的API接口函數,用戶可直接調用這些函數實現讀文件(f_read)、寫文件(f_write)、打開文件(f_open)和一些文件夾操作等,所以即使不理解FatFs Module的內部結構以及復雜的FatFs協(xié)議,用戶也可以通過這些API完成對文件的所有操作。
FatFs Module層為中間層,為FatFs核心內容,主要實現了FAT協(xié)議。在移植過程中,不需要修改此部分內容。
底層是應用層與磁盤介質的接口,在移植過程中需要修改此部分,包括存儲媒介讀寫接口I/O驅動以及文件操作的時間RTC等。最少只需要編寫3個底層驅動函數:
?。?)文件系統(tǒng)初始化函數
DSTATUS disk_initialize(BYTE drv)
?。?)文件系統(tǒng)讀驅動
DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE count)
(3)文件系統(tǒng)寫驅動
DRESULT disk_write(BYTE drv,const BYTE*buff,DWORD sector,BYTE count)
用戶根據具體的硬件平臺填充相關函數,即可完成移植。
4 調試與結果
將SD卡中2014-10-28日15:0:0~15:10:0的數據繪制成折線圖,如圖5所示。
5 結論
本文基于μC/OS-II操作系統(tǒng)平臺設計并實現了以PT100鉑電阻為溫度傳感器、以STM32F107VCT6微處理器為核心的硬件平臺,實現了環(huán)境溫度采集和實時時鐘功能,并在PC上顯示實時溫度以及將溫度數據按時間關系存儲至TF卡文件中[5]。
由于該系統(tǒng)缺少與用戶交互界面,因此系統(tǒng)缺乏一定的靈活性。今后的工作就是實現PC與MCU的雙向通信,選擇在STM32平臺上移植GUI,提供給用戶更多的選擇。當然,通過交互界面,用戶可以一目了然地了解某一時段的環(huán)境溫度變化情況等。完善系統(tǒng)功能和提高采集數據精度仍是今后的主要工作。
參考文獻
[1] 李世奇,董浩斌,李榮生.基于FatFs文件系統(tǒng)的SD卡存儲器設計[J].測控技術,2011,30(12):79-81.
[2] 于鵬飛.嵌入式存儲設備上文件系統(tǒng)的設計與實現[D].大連:大連交通大學,2007.
[3] LABROSSE J J.嵌入式實時操作系統(tǒng)?滋C/OS-II[M].邵貝貝,譯.北京:北京航空航天大學出版社,2003.
[4] 張云,惠曉威,肖迎杰.基于ARM的嵌入式文件系統(tǒng)研究與設計[J].計算機系統(tǒng)應用,2010,19(3):299-231.
[5] 楊建光.基于μC/OS-II的溫度控制系統(tǒng)的研制[D].天津:中國民航大學,2007.