STC15和CH376的實(shí)時(shí)海量數據采集系統設計
摘要:設計了一種基于STC15單片機的U盤(pán)實(shí)時(shí)海量數據采集系統。該系統利用USB接口芯片CH376時(shí)U盤(pán)進(jìn)行讀寫(xiě)操作,利用實(shí)時(shí)時(shí)鐘芯片DS1 2887實(shí)時(shí)采集記錄數據的時(shí)間,將采集到的海量數據以EXCEL文件形式存儲在U盤(pán)中。實(shí)驗結果表明,該方案能夠采集、存儲海量數據而且還兼顧成本低、通用性強、移動(dòng)性好等優(yōu)點(diǎn),具有一定實(shí)用價(jià)值。
引言
在工業(yè)數據采集中,數據的存儲擔負著(zhù)記錄系統運行狀態(tài)的責任,基于單片機的數據采集儀表以其成本低廉、操作簡(jiǎn)單、工作可靠而得到大批量應用。鑒于單片機數據采集系統的以上優(yōu)勢提出了一種基于STC15系列單片機和CH376的U盤(pán)海量存儲數據方案,該方案利用南京沁恒公司推出的USB接口芯片CH376對U盤(pán)進(jìn)行讀寫(xiě)操作,完成超速信息的轉存,并采用沁恒公司提供的FAT文件系統庫,將采集到的數據以文件的形式存儲在U盤(pán)中,操作者可以方便地利用PC機對采集到的數據進(jìn)行分析和處理。
1 系統設計
系統主要框圖如圖1所示,主要是以STC15F2K60S2單片機為核心,通過(guò)擴展外同接口而使其以低成本的優(yōu)勢滿(mǎn)足大容量數據采集存儲的要求。被測信號經(jīng)過(guò)前端調理電路的放大與濾波處理后進(jìn)入單片機的片內A/D轉換模塊,此時(shí)采樣數據存儲于單片機內部開(kāi)辟的緩沖數組中,當緩沖區滿(mǎn)后通過(guò)控制CH376向U盤(pán)寫(xiě)入采樣數據,并同時(shí)將DS12887內的時(shí)間信息寫(xiě)入文件中。

1.1 STC15F2K60S2單片機簡(jiǎn)介
STC15F2K60S2系列單片機是STC公司生產(chǎn)的單時(shí)鐘/機器周期(1T)的單片機,采用STC—Y5超高速CPU內核。STC15F2K60S2系列單片機是高速/高可靠/低功耗/超強抗干擾的一代8051單片機,采用第八代加密技術(shù),加密性超強,指令代碼完全兼容傳統8051。內部集成高精度R/C時(shí)鐘,可設置5~35 MHz的工作頻率,徹底省掉外部昂貴的晶振和外部復位電路,具有3路CCP/PWM/PCA和8路高速A/D轉換器,內置2 KB大容量SRAM,2組高速異步串行通信端口UART1/UART2,一組高速同步通信端口SPI,廣泛地用于一般的現代工業(yè)控制領(lǐng)域。
1.2 CH376模塊設計
1.2.1 USB接口芯片CH376簡(jiǎn)介
CH376是南京沁恒公司推出的一款U盤(pán)和SD卡文件管理控制芯片,用于單片機或嵌入式系統讀寫(xiě)U盤(pán)或者SD卡中的文件。CH376支持USB設備方式和USB主機方式,并且內置了USB通信協(xié)議的基本固件,內置了處理海量存儲Mass-Storage設備的專(zhuān)用通信協(xié)議的固件,內置了SD卡的通信接口固件,內置了FAT16和FAT32以及FAT12文件系統的管理固件,支持常用的USB存儲設備(包括U盤(pán)/USB硬盤(pán)/USB閃存盤(pán)/USB讀卡器)和SD卡(包括標準容量SD卡和高容量HC-SD卡以及協(xié)議兼容的MMC卡和TF卡)。
CH376支持3種通信接口:8位并口、SPI接口或者異步串口,單片機/DSP/MCU/MPU等控制器可以通過(guò)上述任何一種通信接口控制CH376芯片,存取U盤(pán)或者SD卡中的文件或者與計算機通信。CH376芯片內部集成了USB-SIE和Phy-I/O、CRC數據校驗、USB-Host控制器、USB-Dev ice控制器、SD卡SPI-Host控制器、被動(dòng)并行接口、SPI—Slave控制器、異步串口、雙口SRAM、FIFO、高速MCU、固件程序、晶體振蕩器和PLL倍頻器、電源上電復位電路等。其主要特點(diǎn)概括為:
①支持1.5 Mbps低速和12 Mbps全速USB通信,兼容USB V2.0;
②支持USB-HOST主機接口和USB-DEVICE設備接口,支持動(dòng)態(tài)切換主機方式與設備方式;
③內置USB通信協(xié)議的基本固件處理海量存儲Mass-Storage設備的專(zhuān)用通信協(xié)議固件,SD卡的通信接口固件以及FAT16/FAT32和FAT12文件系統的管理固件;
④提供文件管理功能、文件讀寫(xiě)功能和磁盤(pán)管理功能;
⑤提供2 MB速度的8位被動(dòng)并行接口,提供2 MB/24 MHz速度的SPI設備接口,提供最高3 Mbps速度的異步串口;
⑥支持5 V/3.3 V/3 V電源電壓,支持低功耗模式。
1.2.2 CH376硬件電路設計
USB接口芯片CH376模塊硬件電路設計如圖2所示。單片機與CH376采用的是硬件總線(xiàn)8位并口連接方式,這樣無(wú)需用I/O模擬CH376讀寫(xiě)時(shí)序,簡(jiǎn)化了軟件的設計。CH376芯片通過(guò)8位被動(dòng)并行接口的D7~D0、RD#、WR#、PCS#、A0直接連接到STC15F2K60S2單片機的系統總線(xiàn)上,其中D7~D0連接STC15F2K60S2的數據總線(xiàn)P0.7~P0.0引腳上,RD#、WR#引腳與STC15F2K60S2的對應引腳相連,INT#引腳連到STC15F2K60S2的外部中斷INT0上,采用中斷方式處理USB數據傳輸,PCS#連接STC15F2K60S2的P2.6引腳來(lái)控制CH376的使能,A0連到STC15F2K60S2的P2.0引腳。因此,CH376命令寄存器的地址可選為BDF1H,數據寄存器的地址可選為BCF0H。

另外,R2用于限制作為USB主機提供給外部USB設備的電流,電容C1用于CH376內部電源節點(diǎn)退耦,C1是容量為4 700 pF~0.02μF的獨石或者高頻瓷片電容。電容C3和C4用于外部電源退耦,C3是容量為0.1μF的獨石或者高頻瓷片電容。晶振Y1用于時(shí)鐘振蕩電路,USB—HOST主機方式要求時(shí)鐘頻率比較準確,晶振Y1的頻率為12 MHz±0.4‰。振蕩電容C6、C7是可選的,根據晶振Y1的特性選擇,容量在0~22 pF。
1.2.3 CH376軟件設計
系統利用單片機將片內A/D轉換器采集到的數據通過(guò)CH376存入U盤(pán)中需要完成三件事:
第一是要完成單片機讀寫(xiě)CH376,由于CH376是以硬件并行總線(xiàn)的方式與單片機連接的,單片機讀寫(xiě)CH376就不需要用I/O模擬時(shí)序了,確定CH376的命令端口地址和數據端口地址后,直接向命令端口地址寫(xiě)入相應命令,向數據端口地址寫(xiě)入相應數據即完成了寫(xiě)入操作。讀操作時(shí)也只需要將命令端口或數據端口的值直接賦給一個(gè)變量,單片機讀取的狀態(tài)或數據就保存在該變量中了。
第二是操作沁恒公司提供的FILE SYS文件系統庫,通過(guò)移植、裁減該文件系統庫,在U盤(pán)中創(chuàng )建一個(gè)EXCEL格式的文件ZYZ_ADC.XLS,這是系統軟件設計的核心所在。具體步驟是:首先單片機發(fā)送CMD_SET_USB_MODE命令設置CH376工作在主機模式下,然后調用FILE SYS文件系統庫中的CH376DiskConnect函數等待U盤(pán)連接,U盤(pán)可以由CH376自動(dòng)檢測并產(chǎn)生中斷通知,也可以由單片機定時(shí)發(fā)送命令檢測。U盤(pán)連接成功后,在進(jìn)行操作之前必須由單片機發(fā)送CMD_DISK_MOUNT進(jìn)行初始化,并檢測磁盤(pán)是否準備就緒,確認磁盤(pán)準備就緒后,調用文件系統庫函數CH376FileOpen,打開(kāi)磁盤(pán)中已經(jīng)創(chuàng )建好的文件,如果該文件不存在,則調用文件系統庫函數CH376FileCreate并在磁盤(pán)中創(chuàng )建一個(gè)新的文件,設定其參數為“/ZYZ_ADC.XLS”即完成了在U盤(pán)中創(chuàng )建了一個(gè)名為ZYZ_ADC.XLS的EXCEL格式文件。另外,文件創(chuàng )建成功后為方便向文件中添加數據,還需要將該文件移置到U盤(pán)中所有已有文件的末尾,可調用文件系統庫函數CH376ByteLocate,設定參數為0xFFFFFFFF即可移動(dòng)該文件至所有文件之后。以上一切準備就緒后就可以向文件中寫(xiě)入數據了,最后就是保存文件并更新文件長(cháng)度,涉及到的文件庫函數是CH376GetFileSize。在U盤(pán)中創(chuàng )建EXCEL文件的軟件流程圖如圖3所示。

第三是向已創(chuàng )建的EXCEL文件中寫(xiě)入A/D采集數據和時(shí)鐘芯片中的日期、時(shí)間信息。系統軟件是將EXCEL文件中的所有已采集的數據以字符形式存儲的,因此對于采集的電壓、日期、時(shí)間等二進(jìn)制數據要轉換成字符串形式。另外,EXCEL文件中的數據信息是以單元格的形式存儲的,即每一次采集的數據存儲在一個(gè)單元格中,因此在調用sprintf函數時(shí),將采集的數據信息寫(xiě)入EXCEL文件時(shí)用“t”切換單元格,比如將采集的日期、時(shí)間、單元信息分別顯示在3個(gè)不同的單元格中的函數格式為:


2 系統測試結果
為了驗證上述系統能否完成將A/D采集來(lái)的海量數據信息存入U盤(pán)中創(chuàng )建的EXCEL文件中,選用了2 GB的金士頓U盤(pán)作為測試對象,系統上電后插上U盤(pán),即可看到CH376模塊中USB讀寫(xiě)指示燈變亮并且U盤(pán)指示燈閃爍數下,這表明U盤(pán)讀寫(xiě)成功。然后,按下數據采集控制開(kāi)關(guān),可以看到U盤(pán)指示燈開(kāi)始不停地閃爍,表示數據采集正在進(jìn)行中,通過(guò)串口調試軟件的打印窗口如圖4所示,可以清楚地看到文件創(chuàng )建成功,數據寫(xiě)入文件的詳細過(guò)程。

圖4中File size=1表示創(chuàng )建了一個(gè)新文件,其大小為1 K,下面即是不停地向文件中寫(xiě)入日期、時(shí)間、電壓等采集信息。待系統運行一段時(shí)間后取下U盤(pán),將U盤(pán)重新插在PC上即可在U盤(pán)中發(fā)現一個(gè)新建的名為ZYZ_ADC.XLS的文件,打開(kāi)該文件,如圖5所示,可以看到系統采集到的日期、時(shí)間、電壓等采樣信息完整地存在于該文件中。

結語(yǔ)
本文提出的基于STC15系列單片機和CH376的實(shí)時(shí)海量數據采集系統設計方案中,由于CH376內置了文件系統,使單片機的操作更為方便,單片機只需要發(fā)送命令和數據就可以在U盤(pán)中創(chuàng )建文件、讀寫(xiě)數據。因此開(kāi)發(fā)人員用簡(jiǎn)便的方法就可以實(shí)現利用U盤(pán)存儲A/D轉換器采集來(lái)的海量數據,該方案設計簡(jiǎn)單而且數據存儲能力強大,能夠存儲海量數據,具有一定的實(shí)用價(jià)值。
評論