新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 低成本的U盤數據采集器設計

        低成本的U盤數據采集器設計

        作者: 時間:2009-01-16 來源:網絡 收藏

        3 系統軟件設計
        如圖5所示,C8051F340單片機主程序需要首先完成單片機I/O引腳的設置與相關寄存器配置,然后讀取P4口用戶輸入控制指令,并根據用戶指令設置A/D轉換器參數,接著初始化CH375通信端口,進而初始化CH375芯片及其程序庫。緊接著檢查是否插入,以及插入的是否準備就緒。一旦準備就緒,就在U盤新建文本文件格式的采集文件,然后打開文件,并使文件指針指向文件尾部以方便后面寫入采集。所有準備工作完成,就可以啟動A/D轉換器。如果采樣達到U盤1個扇區512字節,那么就可以將采樣數據一次性寫入U盤的1個扇區中。這里需要注意兩點。第一,U盤讀寫可以字節為單位也可以塊為單位,以字節為單位需要頻繁訪問U盤,從而導致U盤存儲速度下降,使用壽命縮短,而以U盤1個扇區的512字節為單位讀寫U盤則可以很好地解決這個問題;另外,為了實現不間斷實時采樣,在設計數據的采集和存儲時采用了“乒乓制”,即在單片機開辟了A、B兩個512字節的RAM存儲區,而A、B兩個存儲區分別交替完成存儲采樣數據和將采樣數據搬移到U盤中的任務,相互獨立工作,互不干擾,有效地解決了存儲數據與搬移數據可能出現的沖突。第二,A/D轉換器采集到的數據不是真實的電壓值,而只是真實電壓值與參考電壓相比的相對值,因此為了今后對采樣值分析方便,還需要計算出真實采樣電壓值,并將數字轉換為字符后再存儲到U盤采樣數據文件中。

        C8051F340單片機通過CH375訪問U盤是系統軟件的核心部分,在實現這部分功能的程序中使用了南京沁恒電子有限公司開發的CH375HF5.LIB庫函數。這里以系統插入U盤,向U盤寫入512字節數據,然后拔出的過程為例,簡單介紹單片機訪問CH375的程序流程。
        系統初始化成功后,調用xQueryInterrupt()函數查詢CH375中斷并更新中斷狀態,等待U盤插入。U盤插入后,經過一段延時,系統調用CH375DiskReady()函數查詢U盤是否準備就緒。U盤一旦就緒,系統調用mCopyCodeStringToIRAM()和CH375FileCreate()函數,在U盤根目錄新建采樣數據文件,并調用CH375FileOpen()函數打開文件,接著使用語句

        mCmdParam.ByteLocate.mByteOffset=Oxffffffff使文件指針指向文件的尾部,以方便后面添加采樣數據。如果已完成512字節采樣數據的采集,則調用CH375FileWriteX()函數,實現U盤一個扇區的寫操作。寫操作完畢后,需要利用下列4個語句:
        mCmdParam.Modify.mFileAttr=Oxff
        mCmdParam.Modify.mFileTime=MAKE_FILE_TIME()
        mCmdParam.Modify.mFileDate=MAKE_FILE_DATE()
        mCmdParam.Modify.mFileSize=0xffffffff
        對文件屬性、時間、日期、長度等參數進行修改,然后調用CH375FileModify()函數完成對上述4個文件屬性的更新。最后系統調用CH375FileClose()函數關閉文件,調用xQueryInterrupt()函數查詢CH375中斷并更新中斷狀態,等待U盤拔出,從而最終完成對U盤的訪問。

        結語
        本文設計的數據采集器利用高度集成的C8051F340處理器實現了數據A/D轉換和系統控制,利用CH375實現了采集器的USB主機功能,從而使采集的數據能以FAT32文件系統格式直接存儲到U盤中。該采集器數據收集方便,便于計算機分析,同時僅有C8051F340和CH375兩個主要器件,結構簡單,工作穩定,只有名片大小,成本不足50元(不包括U盤),已成功應用于工業現場。


        上一頁 1 2 下一頁

        關鍵詞: U盤 數據 集器設計

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 北辰区| 阜阳市| 吉隆县| 洛川县| 磴口县| 常州市| 扶沟县| 阳山县| 道孚县| 六枝特区| 蓬溪县| 九寨沟县| 错那县| 长垣县| 监利县| 吉林省| 沙坪坝区| 班玛县| 阜阳市| 庆阳市| 庆元县| 尖扎县| 开封县| 萨嘎县| 高青县| 綦江县| 平泉县| 苍南县| 西畴县| 泾川县| 五常市| 吴江市| 双鸭山市| 陕西省| 宁南县| 枝江市| 东乡县| 江山市| 镇平县| 七台河市| 车致|