低成本的U盤數(shù)據(jù)采集器設(shè)計(jì)
3 系統(tǒng)軟件設(shè)計(jì)
如圖5所示,C8051F340單片機(jī)主程序需要首先完成單片機(jī)I/O引腳的設(shè)置與相關(guān)寄存器配置,然后讀取P4口用戶輸入控制指令,并根據(jù)用戶指令設(shè)置A/D轉(zhuǎn)換器參數(shù),接著初始化CH375通信端口,進(jìn)而初始化CH375芯片及其程序庫(kù)。緊接著檢查U盤是否插入,以及插入的U盤是否準(zhǔn)備就緒。一旦U盤準(zhǔn)備就緒,就在U盤新建文本文件格式的數(shù)據(jù)采集文件,然后打開文件,并使文件指針指向文件尾部以方便后面寫入采集數(shù)據(jù)。所有準(zhǔn)備工作完成,就可以啟動(dòng)A/D轉(zhuǎn)換器。如果采樣數(shù)據(jù)達(dá)到U盤1個(gè)扇區(qū)512字節(jié),那么就可以將采樣數(shù)據(jù)一次性寫入U(xiǎn)盤的1個(gè)扇區(qū)中。這里需要注意兩點(diǎn)。第一,U盤讀寫可以字節(jié)為單位也可以塊為單位,以字節(jié)為單位需要頻繁訪問U盤,從而導(dǎo)致U盤存儲(chǔ)速度下降,使用壽命縮短,而以U盤1個(gè)扇區(qū)的512字節(jié)為單位讀寫U盤則可以很好地解決這個(gè)問題;另外,為了實(shí)現(xiàn)不間斷實(shí)時(shí)采樣,在設(shè)計(jì)數(shù)據(jù)的采集和存儲(chǔ)時(shí)采用了“乒乓制”,即在單片機(jī)開辟了A、B兩個(gè)512字節(jié)的RAM存儲(chǔ)區(qū),而A、B兩個(gè)存儲(chǔ)區(qū)分別交替完成存儲(chǔ)采樣數(shù)據(jù)和將采樣數(shù)據(jù)搬移到U盤中的任務(wù),相互獨(dú)立工作,互不干擾,有效地解決了存儲(chǔ)數(shù)據(jù)與搬移數(shù)據(jù)可能出現(xiàn)的沖突。第二,A/D轉(zhuǎn)換器采集到的數(shù)據(jù)不是真實(shí)的電壓值,而只是真實(shí)電壓值與參考電壓相比的相對(duì)值,因此為了今后對(duì)采樣值分析方便,還需要計(jì)算出真實(shí)采樣電壓值,并將數(shù)字轉(zhuǎn)換為字符后再存儲(chǔ)到U盤采樣數(shù)據(jù)文件中。
C8051F340單片機(jī)通過CH375訪問U盤是系統(tǒng)軟件的核心部分,在實(shí)現(xiàn)這部分功能的程序中使用了南京沁恒電子有限公司開發(fā)的CH375HF5.LIB庫(kù)函數(shù)。這里以系統(tǒng)插入U(xiǎn)盤,向U盤寫入512字節(jié)數(shù)據(jù),然后拔出的過程為例,簡(jiǎn)單介紹單片機(jī)訪問CH375的程序流程。
系統(tǒng)初始化成功后,調(diào)用xQueryInterrupt()函數(shù)查詢CH375中斷并更新中斷狀態(tài),等待U盤插入。U盤插入后,經(jīng)過一段延時(shí),系統(tǒng)調(diào)用CH375DiskReady()函數(shù)查詢U盤是否準(zhǔn)備就緒。U盤一旦就緒,系統(tǒng)調(diào)用mCopyCodeStringToIRAM()和CH375FileCreate()函數(shù),在U盤根目錄新建采樣數(shù)據(jù)文件,并調(diào)用CH375FileOpen()函數(shù)打開文件,接著使用語句
mCmdParam.ByteLocate.mByteOffset=Oxffffffff使文件指針指向文件的尾部,以方便后面添加采樣數(shù)據(jù)。如果已完成512字節(jié)采樣數(shù)據(jù)的采集,則調(diào)用CH375FileWriteX()函數(shù),實(shí)現(xiàn)U盤一個(gè)扇區(qū)的寫操作。寫操作完畢后,需要利用下列4個(gè)語句:
mCmdParam.Modify.mFileAttr=Oxff
mCmdParam.Modify.mFileTime=MAKE_FILE_TIME()
mCmdParam.Modify.mFileDate=MAKE_FILE_DATE()
mCmdParam.Modify.mFileSize=0xffffffff
對(duì)文件屬性、時(shí)間、日期、長(zhǎng)度等參數(shù)進(jìn)行修改,然后調(diào)用CH375FileModify()函數(shù)完成對(duì)上述4個(gè)文件屬性的更新。最后系統(tǒng)調(diào)用CH375FileClose()函數(shù)關(guān)閉文件,調(diào)用xQueryInterrupt()函數(shù)查詢CH375中斷并更新中斷狀態(tài),等待U盤拔出,從而最終完成對(duì)U盤的訪問。
結(jié)語
本文設(shè)計(jì)的數(shù)據(jù)采集器利用高度集成的C8051F340處理器實(shí)現(xiàn)了數(shù)據(jù)A/D轉(zhuǎn)換和系統(tǒng)控制,利用CH375實(shí)現(xiàn)了采集器的USB主機(jī)功能,從而使采集的數(shù)據(jù)能以FAT32文件系統(tǒng)格式直接存儲(chǔ)到U盤中。該采集器數(shù)據(jù)收集方便,便于計(jì)算機(jī)分析,同時(shí)僅有C8051F340和CH375兩個(gè)主要器件,結(jié)構(gòu)簡(jiǎn)單,工作穩(wěn)定,只有名片大小,成本不足50元(不包括U盤),已成功應(yīng)用于工業(yè)現(xiàn)場(chǎng)。
評(píng)論