C8051F320在USB設計中的應用
關(guān)鍵詞:C8051F320;USB;USB描述符;固件
隨著(zhù)USB技術(shù)的快速發(fā)展以及USB外設在越來(lái)越多場(chǎng)合的廣泛應用,支持USB接口技術(shù)的芯片也越來(lái)越多。對于USB接口的設計,如非擴展之用,選用帶有MCU的USB控制器當然是設計師們的首選,因為這樣不僅可以大大簡(jiǎn)化硬件電路、減小外設體積,而且還可以提高產(chǎn)品的可靠性。文中介紹的C8051F320就是順應這種需求而推出的一種新型USB控制器芯片。
1 C8051F320的主要特點(diǎn)
C8051F320是Cygnal公司推出的一款具有全速USB功能的混合信號flash微控制器芯片,該器件內部集成有2304 Byte RAM和16k Byte的flash存儲器。實(shí)際上,C8051F320是一個(gè)完整的小型片上系統(SoC)。由于利用該芯片進(jìn)行設計時(shí)可以不需要任何外部元件(包括電阻和晶振),因而是小型USB應用的理想選擇。與其它同類(lèi)產(chǎn)品相比,C8051F320主要具有如下一些特點(diǎn):
●全速的USB 2.0功能控制器;
●內部集成了時(shí)鐘恢復電路,且不需要外接晶體振蕩器;
●可支持8個(gè)USB端點(diǎn);
●帶有1k字節的USB緩沖存儲器;
●內部集成了USB接口的數據收發(fā)器,設計中無(wú)需外部上拉電阻;
●具有高速增強型8051 MCU內核,該MCU內核采用流水線(xiàn)式指令結構,70%的指令執行時(shí)間為一個(gè)或兩個(gè)系統時(shí)鐘周期,處理速度可達25MIPS(時(shí)鐘頻率為25MHz時(shí))。
此外,C8051F320還有許多其它特性,如支持在系統編程(ISP),帶有可編程的數字I/O和數字交叉開(kāi)關(guān),可提供全速、非侵入式的在系統片內調試電路等。
2 C8051F320的引腳功能
C8051F320的引腳排列如圖1所示。主要引腳的功能如下:
D+、D-:USB電纜的USB D+和USB D-連接端;
VDD:2.7~3.6V片上電源輸入端或片內電壓調節器的3.3V輸出端;
REGIN:片內電壓調節器的5V輸入端;
VBUS:USB電纜VBUS引線(xiàn)的感應輸入端,當該腳出現5V高電平信號時(shí),表示該設備已經(jīng)和主機連接好;
RST/C2CK:多功能引腳,內部上電復位POR(Power On Reset)和VDD監視器的漏極開(kāi)路輸出,使該腳保持低電平15μs以上可對系統進(jìn)行一次復位。此外,該腳還可作為C2接口的時(shí)鐘信號輸入端;
P3.0/C2D:多功能引腳,可作為I/O端口或C2接口的雙向數據信號傳輸端口。
3 應用舉例
筆者以C8051F320為核心設計了一個(gè)USB和CAN總線(xiàn)的接口轉換模塊,運用該接口轉換模塊可以方便地把具有USB接口的測控設備連接到一個(gè)CAN總線(xiàn)測控網(wǎng)絡(luò )中,以對系統的運行狀況進(jìn)行系統和整體的測試和分析。在該接口轉換模塊的設計中,最主要的工作就是USB接口部分的設計,包括硬件電路和固件程序的設計。
3.1 USB 接口硬件電路設計
由于C8051F320微控制器具有簡(jiǎn)單易用的特點(diǎn),因此,用C8051F320進(jìn)行USB接口的硬件設計也顯得十分簡(jiǎn)單,主要包括兩部分的內容,一是接口轉換模塊供電方式的選擇,二是USB引腳的連接,圖2是其USB接口電路圖。
由于整個(gè)模塊的功率估計在3W左右,而USB總線(xiàn)的供電量只適合小功率模塊的供電,最大也只有500mA,因此不能滿(mǎn)足整個(gè)模塊的安全供電,所以模塊選擇自供電模式,圖2所示的整個(gè)模塊(包括C8051F320和模塊中所有其它部分)的供電電源都來(lái)自外部5V電源。由于C8051F320中的USB收發(fā)器內部集成了上拉電阻,因而不需要任何外部器件便可直接與USB接口相連。
3.2 USB固件程序設計
USB固件程序設計是USB接口部分的主要工作,它的主要目的是:當USB設備連接到主機上時(shí),主機可以發(fā)現新設備,然后建立連接并完成數據傳輸任務(wù),也就是能夠讓?zhuān)祝椋睿洌铮鳎笳z測和識別USB設備。因此在USB固件程序中,最重要的工作就是USB描述符的定義和USB傳輸中斷的處理。
(1)USB描述符
USB描述符是USB協(xié)議定義的一套描述設備功能和屬性的固定結構的描述語(yǔ)言。USB2.0中的描述符包括設備描述符、配置描述符、接口描述符、端點(diǎn)描述符等8種標準描述符和其它一些非標準描述符。USB主機通過(guò)USB描述符完成設備類(lèi)型的識別和配置,同時(shí)為設備提供相應的客戶(hù)端驅動(dòng)程序,運行于USB協(xié)議棧上層的客戶(hù)端驅動(dòng)程序通過(guò)這些信息來(lái)正確訪(fǎng)問(wèn)設備并與其通信,從而達到即插即用的目的。其中,配置中用到的兩個(gè)端點(diǎn)描述符如表1所列。
表1 端點(diǎn)描述
偏移量 | 域 | 大小 (字節) | 端點(diǎn)描述符1 | 端點(diǎn)描述符2 | ||
數值 | 說(shuō)明 | 數值 | 說(shuō)明 | |||
0 | bLength | 1 | 0x07 | 描述符字節數 | 0x07 | 描述符字節數 |
1 | bDescriptorType | 1 | 0x05 | 端點(diǎn)描述符類(lèi)型 | 0x05 | 端點(diǎn)描述符類(lèi)型 |
2 | bEndpointAddress | 1 | 0x81 | 端點(diǎn)地址:端點(diǎn)1 IN | 0x02 | 端點(diǎn)地址:端點(diǎn)2 OUT |
3 | bmAttributes | 1 | 0x02 | 傳輸類(lèi)型:批量傳輸 | 0x02 | 傳輸類(lèi)型:批量傳輸 |
4 | wMaxPacketSize | 2 | 64 | 最大數據包64字節 | 64 | 最大數據包64字節 |
6 | bInterval | 1 | 0x05 | / | 0x05 | / |
(2)USB中斷服務(wù)程序的編寫(xiě)
當USB中斷到達時(shí),C8051F320首先通過(guò)讀?。眨樱鹿δ芸刂破鞯娜齻€(gè)中斷寄存器CMINT、IN1INT和OUT1INT來(lái)判斷中斷來(lái)源(USB復位中斷、端點(diǎn)0中斷、端點(diǎn)1輸入中斷、端點(diǎn)2輸出中斷),然后根據不同的中斷來(lái)源跳入相應的處理模塊以進(jìn)行不同的中斷處理,并在處理完畢后返回。
其中,端點(diǎn)0是每個(gè)USB設備都必須支持的默認控制傳輸端點(diǎn),主要用于主機對USB設備的配置、狀態(tài)信息的獲取和設備錯誤的糾正等,它的中斷處理模塊由控制輸出和控制輸入兩部分組成。每次傳輸首先由設置事務(wù)開(kāi)始,然后根據設置事務(wù)數據包中的USB標準命令請求判斷該次傳輸是控制輸入還是控制輸出。由于作用和地位的特殊性和重要性,端點(diǎn)0中斷處理模塊是一個(gè)最為復雜的中斷處理模塊。結合C8051F320端點(diǎn)0控制狀態(tài)寄存器E0CSR的特點(diǎn)和應用的具體需求,圖3給出了該中斷處理模塊的流程圖,主要是對控制傳輸中設置事務(wù)的分析和處理。
圖3
USB復位中斷的主要作用是將相關(guān)USB變量、寄存器和各端點(diǎn)的狀態(tài)恢復為初始狀態(tài)(需要注意的是:復位后,端點(diǎn)0為空閑狀態(tài),端點(diǎn)1的 IN和端點(diǎn)2的OUT為暫停狀態(tài))。端點(diǎn)1輸入中斷和端點(diǎn)2輸出中斷均為批量傳輸中斷,其主要作用是在收到中斷時(shí),在各自預先定義好的緩沖區中寫(xiě)入要傳輸給主機的數據或取走主機傳輸過(guò)來(lái)的數據,實(shí)際上,這是C8051F320 讀寫(xiě)USB緩沖區的過(guò)程。
4 結束語(yǔ)
隨著(zhù)USB技術(shù)的日益成熟,越來(lái)越多的測控設備趨向于引入USB總線(xiàn)接口技術(shù)或者只提供USB外接接口,所以設計一種USB接口到測控網(wǎng)絡(luò )總線(xiàn)的接口轉換模塊非常必要。文中給出的這種USB和CAN總線(xiàn)的接口轉換模塊就是立足于這類(lèi)需要而進(jìn)行的一項前期研究工作,該方案具有較強的實(shí)用性。
評論