。常 USB 接口硬件電路設(shè)計(jì)
由于C8051F320微控制器具有簡(jiǎn)單易用的特點(diǎn),因此,用C8051F320進(jìn)行USB接口的硬件設(shè)計(jì)也顯得十分簡(jiǎn)單,主要包括兩部分的內(nèi)容,一是接口轉(zhuǎn)換模塊供電方式的選擇,二是USB引腳的連接,圖2是其USB接口電路圖。
由于整個(gè)模塊的功率估計(jì)在3W左右,而USB總線的供電量只適合小功率模塊的供電,最大也只有500mA,因此不能滿足整個(gè)模塊的安全供電,所以模塊選擇自供電模式,圖2所示的整個(gè)模塊(包括C8051F320和模塊中所有其它部分)的供電電源都來(lái)自外部5V電源。由于C8051F320中的USB收發(fā)器內(nèi)部集成了上拉電阻,因而不需要任何外部器件便可直接與USB接口相連。
3.2 USB固件程序設(shè)計(jì)
USB固件程序設(shè)計(jì)是USB接口部分的主要工作,它的主要目的是:當(dāng)USB設(shè)備連接到主機(jī)上時(shí),主機(jī)可以發(fā)現(xiàn)新設(shè)備,然后建立連接并完成數(shù)據(jù)傳輸任務(wù),也就是能夠讓Windows正常檢測(cè)和識(shí)別USB設(shè)備。因此在USB固件程序中,最重要的工作就是USB描述符的定義和USB傳輸中斷的處理。
(1)USB描述符
。眨樱旅枋龇牵眨樱聟f(xié)議定義的一套描述設(shè)備功能和屬性的固定結(jié)構(gòu)的描述語(yǔ)言。USB2.0中的描述符包括設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符等8種標(biāo)準(zhǔn)描述符和其它一些非標(biāo)準(zhǔn)描述符。USB主機(jī)通過(guò)USB描述符完成設(shè)備類型的識(shí)別和配置,同時(shí)為設(shè)備提供相應(yīng)的客戶端驅(qū)動(dòng)程序,運(yùn)行于USB協(xié)議棧上層的客戶端驅(qū)動(dòng)程序通過(guò)這些信息來(lái)正確訪問設(shè)備并與其通信,從而達(dá)到即插即用的目的。其中,配置中用到的兩個(gè)端點(diǎn)描述符如表1所列。
點(diǎn)擊看原圖
(2)USB中斷服務(wù)程序的編寫
當(dāng)USB中斷到達(dá)時(shí),C8051F320首先通過(guò)讀。眨樱鹿δ芸刂破鞯娜齻(gè)中斷寄存器CMINT、IN1INT和OUT1INT來(lái)判斷中斷來(lái)源(USB復(fù)位中斷、端點(diǎn)0中斷、端點(diǎn)1輸入中斷、端點(diǎn)2輸出中斷),然后根據(jù)不同的中斷來(lái)源跳入相應(yīng)的處理模塊以進(jìn)行不同的中斷處理,并在處理完畢后返回。
其中,端點(diǎn)0是每個(gè)USB設(shè)備都必須支持的默認(rèn)控制傳輸端點(diǎn),主要用于主機(jī)對(duì)USB設(shè)備的配置、狀態(tài)信息的獲取和設(shè)備錯(cuò)誤的糾正等,它的中斷處理模塊由控制輸出和控制輸入兩部分組成。每次傳輸首先由設(shè)置事務(wù)開始,然后根據(jù)設(shè)置事務(wù)數(shù)據(jù)包中的USB標(biāo)準(zhǔn)命令請(qǐng)求判斷該次傳輸是控制輸入還是控制輸出。由于作用和地位的特殊性和重要性,端點(diǎn)0中斷處理模塊是一個(gè)最為復(fù)雜的中斷處理模塊。結(jié)合C8051F320端點(diǎn)0控制狀態(tài)寄存器E0CSR的特點(diǎn)和應(yīng)用的具體需求,圖3給出了該中斷處理模塊的流程圖,主要是對(duì)控制傳輸中設(shè)置事務(wù)的分析和處理。

USB復(fù)位中斷的主要作用是將相關(guān)USB變量、寄存器和各端點(diǎn)的狀態(tài)恢復(fù)為初始狀態(tài)(需要注意的是:復(fù)位后,端點(diǎn)0為空閑狀態(tài),端點(diǎn)1的 IN和端點(diǎn)2的OUT為暫停狀態(tài))。端點(diǎn)1輸入中斷和端點(diǎn)2輸出中斷均為批量傳輸中斷,其主要作用是在收到中斷時(shí),在各自預(yù)先定義好的緩沖區(qū)中寫入要傳輸給主機(jī)的數(shù)據(jù)或取走主機(jī)傳輸過(guò)來(lái)的數(shù)據(jù),實(shí)際上,這是C8051F320 讀寫USB緩沖區(qū)的過(guò)程。
。础〗Y(jié)束語(yǔ)

USB復(fù)位中斷的主要作用是將相關(guān)USB變量、寄存器和各端點(diǎn)的狀態(tài)恢復(fù)為初始狀態(tài)(需要注意的是:復(fù)位后,端點(diǎn)0為空閑狀態(tài),端點(diǎn)1的 IN和端點(diǎn)2的OUT為暫停狀態(tài))。端點(diǎn)1輸入中斷和端點(diǎn)2輸出中斷均為批量傳輸中斷,其主要作用是在收到中斷時(shí),在各自預(yù)先定義好的緩沖區(qū)中寫入要傳輸給主機(jī)的數(shù)據(jù)或取走主機(jī)傳輸過(guò)來(lái)的數(shù)據(jù),實(shí)際上,這是C8051F320 讀寫USB緩沖區(qū)的過(guò)程。
。础〗Y(jié)束語(yǔ)
隨著USB技術(shù)的日益成熟,越來(lái)越多的測(cè)控設(shè)備趨向于引入USB總線接口技術(shù)或者只提供USB外接接口,所以設(shè)計(jì)一種USB接口到測(cè)控網(wǎng)絡(luò)總線的接口轉(zhuǎn)換模塊非常必要。文中給出的這種USB和CAN總線的接口轉(zhuǎn)換模塊就是立足于這類需要而進(jìn)行的一項(xiàng)前期研究工作,該方案具有較強(qiáng)的實(shí)用性。
<




