杜佳良+丁亞東+趙俊杰
摘要:設計一種基于STM32的AD信號采集并且將采集相關信息在SD卡上存儲的系統。利用計算機軟件將SD卡上的文本格式數據信息轉換成EXCEL格式,方便用戶對信息進行查詢管理,在實際工程中具有很高的應用價值。
關鍵詞:STM32;SD卡;數據存儲
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)12-0235-03
Abstract:Based on STM32,designing an analog to digital acquisition and related information will be collected on the SD card storage system. Using computer software to convert the text format data on the SD card into EXCEL format, user-friendly information query has a high value in the actual project.
Key words: STM32; SD card; data storage
隨著工業自動化的發展,控制設備在各領域得到了廣泛的應用。在一個控制系統中,外界的傳感器相當于一個系統的“鼻子”和“眼睛”,往往決定系統中下一步的動作,是一個系統的關鍵?,F在的32位處理器基本都具有ADC模塊,免去了使用8位單片機需要外搭ADC電路的過程,簡化電路設計并提高了轉換的快速性和準確性?,F在加工制造業的迅速發展,對系統數據的實時性也提出了更高的要求,迫切需要一種簡單方便的方式對大量數據進行存儲。大型控制系統通常會采用485通訊、以太網的方式將數據直接傳送到上位機,建立數據庫,而對于一些小型控制設備,這會大大增加設備的成本,相比之下,利用單片機和存儲介質就地存儲就顯得更有優勢。
1系統的整體分析
STM32F103VET6單片機是一款基于Cortex-M3內核的增強型處理器,工作頻率可以達到72MHz,其內部具有3個12位的ADC采用通道,每個ADC共用了多達21個外部通道接口,可以實現單次或連續外部數據采樣[1]。SD卡是目前最常用的大容量數據存儲介質,支持2種操作模式:SDIO模式和SPI模式[2]。SPI模式通??梢圆捎肕CU自帶的SPI接口或者用普通的I/O口模擬SPI通訊,通訊速度相對較慢,而SDIO模式以其傳輸速度快,兼容性好等優點被廣泛應用于安卓設備、相機等移動設備,支持SDIO卡、復合SDIO卡、SD存儲卡和MMC卡,支持1位和4位SD模式[3]。STM32具有一個SDIO接口,能夠對SD卡快速進行數據讀寫。
2硬件電路設計
系統硬件部分主要有ADC采樣調理電路和SD卡硬件連接電路組成。為了提高數據的精確度,需要給STM32提供了一個外部電壓基準源。此外,外部傳感器輸入電壓可能與ADC采樣范圍之間存在電壓跨度不相等的情況,往往并不能直接輸入到MCU的AD采樣引腳,需要對信號進行調理,使傳感器與ADC的組合達到最好的精度。結合以上兩種考慮,采用TI公司的REF2030芯片為ADC采樣和運放調理電路提供基準電壓。REF2030是一款低漂移、低功率、雙路輸出的電壓基準芯片,提供了一個3.0V可供ADC使用的基準電壓VREF和一個1.5V可用于偏置輸入雙極性信號的高精度電壓VBIAS。芯片使能引腳可以在不需要ADC采樣時使芯片處于低功耗狀態。 根據運算放大器的工作原理,上述運放電路輸入與輸出端的關系為:
此外,STM32內部具有RTC功能,能夠為控制系統提供時間。在對采集到的數據進行保存過程中,記錄系統時間,能夠更好地幫助技術人員分析數據。在系統斷電后,外部紐扣電池可以通過VBAT引腳對RTC時鐘繼續供電。
3 軟件設計
3.1 系統工作流程
為了方便采集到的數據能夠直接在PC機上查看,需要對SD卡存儲介質采用文件系統管理方式,我們采用常見的FAT32文件系統格式。目前FAT文件系統模塊主要有:周立功公司的zlg/FS、美國Micrium公司的uC/FS、SourceForge.net網站提供的Embeded File System Library以及日本電子愛好者設計維護的FATFS文件系統模塊[1]。FAT32文件系統以簇為最小分配單位,主要由引導區、文件分配表表、數據區三大部分組成,引導區保留了每簇對應的扇區數及引導參數,文件分配表保存各簇使用情況信息,本文設計時使用日本的FATFS文件管理模塊??刂葡到y的工作流程如圖2所示。要以FAT32文件系統格式進行文件創建及信息儲存,必須將SD卡格式轉換成FAT32文件系統格式,這就是SD卡的初始化。在確定SD卡通信正常后即開始初始化,其過程包括:讀取原有FAT表、查找空間簇并確定起始簇號、將新的FAT表寫回SD卡、讀取目錄項信息、將文件信息賦給文件信息結構體、將新的目錄寫回到SD卡,初始化完成后即可進行SD卡的讀寫操作。AD采樣信號出發后向SD卡觸發寫命令,命令中包含寫地址,寫地址必須與SD卡物理地址相對應,SD卡接收到數據后驗證地址,并進行CRC校驗,發出響應命令。
3.2 程序編寫
在SD卡初始化后,利用RTC時鐘獲得當前日期,創建一個以當前日期命名的文本格式文件,用結構指針fnew關聯該文本文件,再次操作文件就是通過結構指針來完成。具體方法是在獲取當前日期后將其轉換為字符串類型并在字符串末尾加上“.text”,然后利用f_open()函數創建,在文件的首行,寫入標題信息,包括采樣時間、采樣通道、通道名稱、采樣數據和采樣觸發模式等。然后關閉文本格式文件,完成了系統的初始化,等待ADC采樣時刻的到來。
EXCEL是大家極為熟悉的一種辦公軟件,其強大的表格數據處理能力為我們日常的數據統計、整理、計算帶來了極大的方便。EXCEL具有文本格式導入向導功能,可以對文本格式中行列排列整齊的數據導入到EXCEL中。具體過程如下:首先在菜單欄中點擊打開,在下拉菜單文件類型中選擇文本文件格式即可啟動文本導入向導,在高級設置中選擇全部文本,文件類型選擇固定寬度。最后在數據預覽中,左右拖動豎線對EXCEL中的單元格網格進行調整并選定列數據類型,如圖3所示。點擊完成即可將即可發現文本格式中的數據已經成功的展現在EXCEL中。此時的文件格式仍然是文本文件,需要再另存為.xls文件,最后將表格中的列寬度調到合適大小,采用數據即完美展現在Excel中,如圖4所示。
4 結語
SD卡作為目前一種大容量的數據存儲設備,在嵌入式系統中應用越來越廣泛。本文利用STM32實現了通過SDIO接口與SD卡進行數據傳輸,創建文本格式,并提出了數據的管理方式,便于實現文本格式文件到EXCEL的轉換,方便數據管理,具有較高的實用價值。
參考文獻:
[1] 劉火良,楊森.STM32庫開發實戰指南[M].北京:機械工業出版社,2013:124.
[2] 徐建功,趙捷.基于STM32F103XX微處理器的Micro SD卡讀寫[J],現代電力電子技術,2010(20):26-28,32.
[3] 黃嘵曦,黃世震.基于ARM的SDIO驅動設計[J],計算機與數字工程,2010,38(1):159-163.
[4] 周躍,沈捷.基于SD卡的數據存儲系統設計[J],化工自動化及儀表,2012,39(1):95-98.