秦 偉
(中煤科工集團重慶研究院有限公司,重慶400037)
?
秦 偉
(中煤科工集團重慶研究院有限公司,重慶400037)
針對單片機大容量數據采集系統,設計了一種以STM32F107微控制器為核心,以大容量SD卡為存儲介質的數據采集系統。簡述了開源的FatFS文件系統在STM32處理器上的移植及其底層驅動函數的編寫,利用24位∑-Δ模/數轉換器實現了高精度數據采集,利用FatFS文件系統實現了采集數據的大容量存儲和管理,為數據后續處理和傳輸提供了便利。
STM32;FatFS文件系統;SD卡;高精度數據采集
近年來,數據采集及其應用得到了人們越來越廣泛的關注,數據采集系統也有了迅速的發展,特別是以單片機為核心的數據采集系統,由于其超高的性價比,已經廣泛應用于很多領域。但是傳統的以51單片機為核心的數據采集系統受限于有限的存儲空間和通信方式,存在實時性差、采集容量小等缺點,已無法滿足數據量越來越大的現代社會的需求,大容量數據存儲已成為微控制器應用的瓶頸。為突破容量的限制,一般采用外擴存儲器,比如U盤、SD卡等,并移植文件系統便于對數據進行后續管理和處理。
本系統由模擬量輸入模塊、USB傳輸模塊、大容量存儲模塊和人機交互模塊組成,系統框圖如圖1所示。模擬信號經信號調理輸入模塊處理后,通過模數轉換器ADC轉換為數字信號,再由STM32微控制器進行濾波等數據處理后,存儲在SD卡里,并通過串口傳輸到上位機進行數據分析。

圖1 采集系統方案圖
1.1 STM32F107微控制器[1]
系統采用了ST公司基于ARM Cortex-M3內核的32位增強型閃存微控制器STM32F107作為控制核心。Cortex-M3內核專門用于滿足集高性能、低功耗、實時應用、具有競爭性價格于一體的嵌入式領域的要求,采用哈佛結構,能夠達到1.25 DMIPS/MHz和0.19 mW/MHz,有單周期乘法指令和硬件除法指令。該芯片最高工作頻率可達到72 MHz,具有256 KB的閃存以及64 KB的SRAM,以及性能出眾的片上外設(如USB、USART、SPI、I2C、GPIO、PWM、10/100M Ethernet MAC等),最大限度地實現集成,豐富的片上資源大大簡化了系統硬件,同時降低了系統功耗,待機電流僅為2 μA 。
1.2 24位A/D轉換器控制原理[2]


圖2 A/D轉換器讀取時序圖
1.3 SD卡簡介[4]
SD卡是一種為滿足安全性、容量、性能和使用環境等各方面的需求而設計的一種新型Flash存儲器件。SD卡允許在兩種模式下工作,即SD模式和SPI模式,本系統采用SPI模式。SD卡使用卡內智能控制模塊進行Flash操作控制,包括協議、安全算法、數據存取、ECC算法、 缺陷處理和分析、電源管理、時鐘管理。SD卡被廣泛使用在便攜裝置,如數碼相機、個人數碼設備和多媒體播放器等,目前SD卡容量已經進入以G為單位的時代。
1.4 FatFS文件系統[5]

圖3 FatFs 模塊層次結構圖
FatFS是一種開源的FAT 文件系統模塊,專門為小型的嵌入式系統而設計。它完全采用標準C格式語法編寫,完全獨立于I/O 層,只需做簡單的修改即可移植到8051、PIC、AVR、SH、Z80、H8 和ARM 等系列單片機上。FatFS的特點是分離緩沖FAT結構的每個文件,可以快速訪問多個文件,支持多個驅動器和分區,支持FAT12、FAT16和FAT32,支持8.3格式的文件名,優化了8/16位微控制器。FatFS的設計思想是小塊的數據可以通過Buffer存儲,大塊的數據直接存取,提高了存取速度和效率。FatFS模塊層次結構如圖3所示。
SD卡協議采用命令的方式進行數據操作[6],因此SD卡和STM32F107的通信采用發送應答機制,每發送一個命令,SD卡都會給出一個應答,以告知主機該命令的執行情況,或者返回主機請求的數據。SPI模式下常用的命令如表1所列。
2.1 SD卡初始化操作[7]
因為系統使用的是SPI模式,所以先得讓卡進入SPI模式,方法如下:在SD卡收到復位(CMD0)時,CS引腳為低電平,則SPI模式被啟用。不過在發送復位命令之前,要發送至少74個時鐘周期,以保證SD卡內部供電電壓的上升。在卡初始化的時候,時鐘周期最大不能超過400 kHz,初始化完成后,才能切換到SPI高速模式。初始化流程如圖4所示。
2.2 SD卡讀寫操作
通過SD卡初始化,可以得知卡的類型(V1、V2、V2HC或MMC),完成初始化后,可以開始通過命令讀寫數據。SD卡讀取數據通過命令CMD17來實現,流程如圖5所示。

圖4 SD卡初始化流程圖

命 令參 數回 應描 述CMD0(0x00)NONER1復位SD卡CMD8(0x08)VHS+CheckpatternR7發送接口狀態命令CMD9(0x09)NONER1讀取卡特定數據寄存器CMD10(0x0A)NONER1讀取卡標志數據寄存器CMD16(0x10)塊大小R1設置塊大小(字節數)CMD17(0x11)地址R1讀取一個塊的數據CMD24(0x18)地址R1寫入一個塊的數據CMD41(0x29)NONER3發送給主機容量支持信息和激活卡初始化過程CMD55(0x37)NONER1告訴SD卡,下一個是特定應用命令CMD58(0x3A)NONER3讀取OCR寄存器

圖5 SD卡讀取數據流程圖
SD卡寫數據和讀取數據差不多,只不過是通過命令CMD24來實現。
FatFS文件系統,最頂層是應用層,使用時無需理會FatFS內部結構和復雜的Fat協議,只需要調用FatFS模塊提供的API接口函數即可,比如f_open、f_read、f_write和f_close等,就像在PC機上讀寫文件那樣簡單。中間層是FatFS模塊,實現了Fat文件讀寫協議,使用時不作修改,包含頭文件即可。
需要編寫移植代碼的是FatFS模塊提供的底層接口,它包括存儲介質讀寫接口(disk I/O)和供給文件創建修改時間的實時時鐘(RTC)。
從網站上下載FatFS的R0.09a版本源代碼,解壓后有兩個文件夾:doc和src。前者是FatFS的說明文檔,后者是源代碼文件夾,移植時,只需要修改兩個文件:ffconf.h和diskio.c。
首先,修改數據類型,修改integer.h,使其中定義的數據類型與keil mdk4.74編譯器相對應。
其次,修改文件ffconf.h,按照需求配置相關功能。例如,_VOLUMES用于設置FatFS支持的邏輯設備數目,本系統只有一個存儲設備(SD卡),所以_VOLUMES設置為1,其他設置可參考注釋進行修改。
最后,編寫底層函數,因為FatFS模塊完全與磁盤I/O層分開,因此需要下面的函數來實現底層物理磁盤的讀寫與獲取當前時間。打開diskio.c,進行底層驅動編寫,編寫6個接口函數,如圖6所示。

圖6 底層接口函數
DSTATUS disk_initialize()函數初始化磁盤驅動器,本系統采用SD卡作為存儲介質,因此該函數主要就是對SD卡進行初始化操作,初始化成功后返回狀態0。需要注意的是應用程序不能調用此函數,否則文件卷上的FAT結構可能會損壞。
DSTATUS disk_status()函數返回當前驅動器的狀態,例如磁盤驅動初始化是否成功,驅動器中有無設備,設備是否寫保護等。
DRESULT disk_read()函數從磁盤驅動器上讀取扇區內容,調用SPI讀取單個或多個塊的內容。
DRESULT disk_write()函數調用SPI向磁盤寫入一個或多個扇區。
DRESULT disk_ioctl()函數通過底層SPI驅動可以讀取存儲設備中的一些特殊寄存器(SD卡中的OCR、CID、RCA等),獲得相關信息后,后續操作才能執行成功,比如格式化操作等。
DWORD get_fattime()函數獲取當前時間。
通過以上3個步驟,完成了對FatFS文件系統的移植,在應用程序中可以調用該文件系統的API函數。
4.1 SD卡電路連接
圖7為SD卡的硬件連接電路圖。使用了STM32F107的SPI3,引腳PC3為SD卡片選,配置為推挽輸出;PC12為MOSI,配置為推挽復用;PC11為MISO,配置為推挽復用,PC2引腳用來檢測SD是否插入,配置為輸入模式,硬件上拉;PC10引腳為SPI時鐘信號,配置為推挽輸出。

圖7 SD卡硬件連接圖
4.2 采集電路設計
采集電路包括輸入信號濾波、限幅、單端轉差分等預處理電路,ADC和STM32F107之間通過SPI1接口連接,電路圖如圖8所示。A/D轉換完成后,會在DOUT引腳產生一個下降沿,觸發STM32F107的外部中斷,在中斷程序里,通過SPI1讀取數據。讀取多個數據完成后,再寫入到SD卡。
本文完成了開源軟件FatFS文件系統在STM32F107微控制器上的移植,設計了基于24位高精度A/D轉換器。

圖9 采集電路原理圖
ADS1252的數據采集電路,將SD卡作為存儲介質,對基于單片機的大容量數據采集系統具有借鑒意義。

[1] ST.STM32F10xxx 參考手冊中文版[EB/OL]. [2015-01].http://download.csdn.net/detail/winnerben/2887762.
[2] 張中平.∑-Δ模數轉換器的原理及應用[J].電子器件,2003,12,26(4).
[3] Texas Instruments.ADS1252 datasheet [EB/OL].(2009-09-27)[2015-01].http://download.csdn.net.
[4] ScanDisk Corpate.SD memory card specification part 1:physical layer specification version 1.0,2000.
[5] 鄧劍.FAT文件系統原理及實現[J].計算機與數字工程,2005,9(33):105-108.
[6] ScanDisk Corpate.SD memory card specification part 5:SPI bus protocol,2000.
[7] 周熠.基于SPI協議的MMC卡讀寫機制的實現[J].計算機仿真,2005,1(22):97-99.
[8] FatFS官方應用詳解[EB/OL].[2015-01].http://www.docin.com/p-723009741.html.
秦偉(工程師),主要研究方向為礦山救援技術和工程物探儀器。
Marvell新一代ZigBee無線微控制器SoC促進智能家居和IoT創新
美滿電子科技(Marvell)近日推出新一代業界領先的88MZ300 802.15.4/ZigBee無線微控制器SoC。該SoC是Marvell面向IoT解決方案的無線微控制器系列的最新成員。這款高性能、低功耗、高性價比的SoC提供卓越的射頻(RF)性能,與Marvell前一代88MZ100 SoC相比,傳輸距離延長一倍以上,功耗降低50%,同時由于芯片的高集成度而最大限度地減少了所需外部器件數量。88MZ300 SoC支持包括即將出臺的ZigBee 3.0和Thread協議在內的開放標準,連同ZigBee至Wi-Fi橋接參考設計以及由硬件制造商和系統集成合作伙伴組成的生態系統,能夠幫助設備制造商(OEM)迅速將最新的創新性物聯網應用推向市場。
Marvell公司副總裁兼移動與物聯網業務部總經理Philip Poulidis表示:“Marvell不斷展示家庭自動化、聯網照明及IoT領域的創新,88MZ300 ZigBee無線微控制器在性能和成本上引領802.15.4技術。88MZ300與Kinoma以及不久前推出的智能家居云中心(Smart Home Cloud Center)相結合,為家庭自動化和IoT市場提供了一款整體解決方案。我們期望隨著88MZ300的采用,會出現一系列激動人心的新產品。”
88MZ300以Marvell大獲成功的88MZ100 ZigBee無線微控制器為基礎開發,提供XIP(Execute In Place)功能,允許直接在閃存中執行代碼,從而降低了系統成本,同時實現了可擴展的存儲器架構,為代碼較長的應用以及未來的軟件升級提供了方便。這對設備制造商很有好處,因為設備制造商設計產品時需要應對協議標準不斷演變的問題。88MZ300接收(RX)電流為8.5 mA,待機電流為1 μA,因此功耗超低;另外該SoC可用1.8~3.6 V 的各種電源工作,因此允許使用小型電池,并延長了電池壽命。此外,88MZ300提供2.4 GHz Wi-Fi與藍牙共存性能,顯著改善了數據鏈路質量,減少了信息損失,進而提升了用戶體驗。基于88MZ300的IoT解決方案不僅提供成熟可靠、基于開放標準的網絡協議棧,還提供與Marvell智能家居云中心平臺以及Kinoma軟件兼容的交鑰匙型硬件設計。

Qin Wei
(China Coal Technology Engineering Group Chongqing Research Institute,Chongqing 400037,China)
Aiming at the large-capacity data acquisition system,the paper designs a system which takes STM32F107 microcontroller as the core,and adopts SD card as the storage medium.The article outlines the transplant of the open source Fat file system on the STM32 processor and the programming of the low-level driver functions.The system achieves high-precision data acquisition by using the 24-bits Σ-Δ ADC,and uses the Fat file system to achieve a large-capacity storage and management for the collected data,which provides a convenience for the subsequent processing and transmission of the data.
STM32;Fat file system;SD card;high-precision data acquisition
TP274.2
A
迪娜
2015-01-05)