基于雙模式USB接口的便攜式比色計設計
2.2 單片機控制CH375電路設計
本系統使用 C8051F020單片機作為處理器。C8051F020是Cygnal 公司推出的一種 SOC型 8位單片機,片內有 64KB FLASH存儲器和4KB RAM,完全符合作為主機時(shí)讀寫(xiě) U盤(pán)的要求。C8051F020單片機控制 CH375的電路如圖 2所示。
1. 系統軟件設計
2. 1主機模式默認狀態(tài)下,儀器工作在主機模式,通過(guò)讀寫(xiě) U盤(pán),存儲采集到的數據。 在單片機下開(kāi)發(fā) U盤(pán)的讀寫(xiě)系統,單片機端程序要涉及較多的協(xié)議,必須能實(shí)現 USB的控制傳輸、批量傳輸、SCSI/UFI/RBC命令傳輸及 FAT文件系統等功能。CH375內置了 USB通信協(xié)議的固件程序,包含了 USB Mass Storage類(lèi)協(xié)議,所以實(shí)際的單片機程序只需要處理 FAT文件系統層,并且這一層也可以由 CH375的 U盤(pán)文件級子程序庫實(shí)現,因此簡(jiǎn)化了程序的開(kāi)發(fā)流程。
CH375的 U盤(pán)文件級子程序庫提供了 USB存儲設備的文件級接口,這些應用層接口 API包含了常用的文件級操作,可以移植并嵌入到各種常用的單片機程序中,編寫(xiě)程序時(shí)可以直接調用這些 API函數讀寫(xiě) U盤(pán)。單片機讀寫(xiě) U盤(pán)的程序流程如圖 3所示。
單片機端程序用到的主要操作函數包括:
(1)初始化 CH375芯片:CH375Init;
(2)查詢(xún) U盤(pán)是否準備好:CH375DiskReady;
(3)打開(kāi)文件:CH375FileOpen;
(4)關(guān)閉文件:CH375FileClose;
(5)新建文件:CH375FileCreate;
(6)以字節為單位從文件讀數據:CH375ByteRead;
(7)以字節為單位向文件寫(xiě)數據:CH375ByteWrite;
(8)以字節為單位移動(dòng)文件指針:CH375ByteLocate。
3.2 從機模式 當圖 1中的P1口連接到PC機USB接口時(shí),在 C8051F020單片機控制下,儀器切換到從機模式,設備可以與 PC機通訊,進(jìn)行數據交換。
3.2.1 本地端的單片機軟件
CH375專(zhuān)門(mén)用于處理 USB通訊,當 CH375接收上位機發(fā)送的數據或發(fā)送完給上位機的數據后,以中斷方式通知單片機。本地端單片機程序主要完成 CH375的初始化和數據的接收與發(fā)送,單片機控制 CH375對數據的處理過(guò)程如下:
1.單片機通過(guò)CH375芯片接收數據的處理步驟:
?。?) 當 CH375接收到 USB主機發(fā)來(lái)的數據后,首先鎖定當前 USB緩沖區,防止被后續數據覆蓋,然后將中斷引腳設置為低電平,向單片機請求中斷;
?。?) 單片機進(jìn)入中斷服務(wù)程序,執行 GET_STATUS命令獲取中斷狀態(tài);
?。?) 在 GET_STATUS命令后將中斷引腳恢復為高電平,取消中斷;
?。?) 判斷中斷狀態(tài),為“下傳成功”,單片機執行 RD_USB_DATA命令從 CH375讀取接收到的數據;
?。?) RD_USB_DATA命令完成后,釋放緩沖區,繼續 USB通訊;
?。?) 退出中斷服務(wù)程序。
評論