單片機與USB接口實(shí)現電力補償裝置控制系統
Flash數據存儲程序
C8051F320芯片與Flash存儲器的通信采用SPI接口方式,數據傳輸率為12MHz(位/秒)。本設計中,C8051F320工作在SPI主機模式,SPI總線(xiàn)的數據傳輸都將由C8051F320發(fā)起。首先對SPI相關(guān)SFR SPI0CFG寄存器和SPI0CN寄存器進(jìn)行配置,使其工作在3線(xiàn)主模式12MHz。通信時(shí)首先用GPIO引腳來(lái)選擇相應的Flash從器件,隨后通過(guò)讀取SPIDAT來(lái)進(jìn)行讀寫(xiě)操作。在使用Flash芯片進(jìn)行讀寫(xiě)操作時(shí),首先要確定Flash存儲器的狀態(tài)??赏ㄟ^(guò)寫(xiě)入D7H命令,讀取狀態(tài)寄存器判斷設備是否Ready或處于Bus
y狀態(tài)。確定狀態(tài)后,可根據數據手冊中的命令格式進(jìn)行相關(guān)的讀寫(xiě)以及擦除操作。
USB通信程序
固件編程是USB設備開(kāi)發(fā)過(guò)程里的主要工作。固件的主要任務(wù)是初始化單片機和外設,發(fā)送USB請求,響應主機的標準設備請求。根據設備的功能分類(lèi)完成各種數據交換請求。初始化編程主要完成USB控制器的初始化、端點(diǎn)初始化,交叉開(kāi)關(guān)和I/O口初始化、系統時(shí)鐘設置,控制器使能。初始化后,USB設備可隨時(shí)插入主機中,主機將遵循USB協(xié)議對設備進(jìn)行識別和初始化。主機識別到設備之后對設備進(jìn)行配置,調用相應的驅動(dòng)程序,配上上位機軟件進(jìn)行相關(guān)通信操作。
Silicon lab公司提供了USBXpress的開(kāi)發(fā)套件。通過(guò)使用USBXpress庫,大大簡(jiǎn)化了USB固件程序和PC端驅動(dòng)程序的開(kāi)發(fā)。 USBXpress通過(guò)一系列函數實(shí)現單片機端的應用程序接口(API)。這些函數封裝了USB協(xié)議的細節,使得程序開(kāi)發(fā)人員不需要了解USB的過(guò)多細節即可使用USB進(jìn)行數據通信(見(jiàn)圖3)。

圖3 單片機與PC機的USB通信
本系統中主要用到了初始化、讀、寫(xiě)、中斷這四個(gè)函數:
初始化USB_Init(0,0xEA61,NULL,NULL,Serial,250,0x80,0x100)函數;塊寫(xiě)函數Block_Write();塊讀函數Block_Read();USB中斷使能函數。
USB的所有處理程序都是通過(guò)USB的中斷服務(wù)程序完成的。進(jìn)入USB中斷后,程序調用Get_Interrupt_Source()函數獲得USB中斷的進(jìn)入原因。然后根據不同的入口情況,來(lái)進(jìn)行相應的處理。比如收到數據之后,讀取相應的緩沖區內容到內存中;收到初始化命令時(shí),復位單片機內的各個(gè)狀態(tài)參數。USB通信流程圖示于圖4。

圖4 USB通信流程圖
PC機端軟件程序
計算機端軟件程序包括兩部分:USB驅動(dòng)程序和用戶(hù)應用程序。
USB驅動(dòng)程序
USB驅動(dòng)程序是一個(gè)軟件組件,封裝了應用程序存取硬件設備的功能函數。有些設備具有相同的屬性,把它們歸為一組標準類(lèi)別,可以定義設備類(lèi)規范作為該類(lèi)設備的主機驅動(dòng)框架。設備類(lèi)驅動(dòng)程序使用相似的函數,處理不同設備間的通信,這樣使設備類(lèi)驅動(dòng)程序的開(kāi)發(fā)可以脫離設備制造商。
USB驅動(dòng)程序模型一般分為五層(見(jiàn)圖5)。

圖5 USB驅動(dòng)程序模型
用戶(hù)端若要從設備讀取數據,將調用一個(gè)應用程序接口API,如OpenFile,SiUSBXp.dll實(shí)現這個(gè)API??偩€(xiàn)驅動(dòng)程序控制對總線(xiàn)上所有設備的訪(fǎng)問(wèn)。
本系統中,開(kāi)發(fā)USB設備驅動(dòng)程序的工具使用了USBXpress Development Kit。主要函數如下:
S
I_Open()函數;SI_Close()函數;SI_Read函數;SI_Write()函數;SI_GetNumDevices()函數;SI_CheckRXQueue()函數。
評論