實(shí)例講解usb2.0的固件設計方法
usb總線(xiàn)是在1995年被提出,并由7個(gè)計算機和通信工業(yè)領(lǐng)先的公司所組成的聯(lián)盟所定義并加以推廣,1999年usb的第三個(gè)版本usb2.0發(fā)布,usb2.0利用傳輸時(shí)序的縮短以及相關(guān)的傳輸技術(shù),將整個(gè)傳輸速度從原來(lái)12mbps提高到480mbps,整整提高了40倍。usb2.0除了有傳輸速度快之外,還有眾多優(yōu)點(diǎn),如統一了各種接口設備的連接頭并使用單一專(zhuān)用的接頭型號,最多可以連接127個(gè)接口設備,最突出的優(yōu)點(diǎn)是具有“熱插撥”的特性,可以即插即用,并能自動(dòng)檢測與配置系統的資源。但其開(kāi)發(fā)難度比較大,其中設備的固件設計即是難點(diǎn)之一。
在usb設備與主機正常通信之前,主機必須檢測并配置設備,所以用戶(hù)必須編寫(xiě)固件程序代碼,響應主機的控制請求命令,并且能夠提供描述符,使主機了解設備的功能,從而配置設備,開(kāi)始與設備的正常通信。另外,固件還要完成正常的數據傳輸功能。
cy7c68013芯片簡(jiǎn)介
cypress公司的ez-usb fx2芯片cy7c68013是一款性能較高的usb2.0微控制器。在單片機上集成usb2.0收發(fā)器﹑sie(串行接口引擎)﹑增強的8051微控制器和可編程的外圍接口。ez-usb fx2中的智能sie可以處理大部分usb2.0協(xié)議,使得微控制器可以專(zhuān)注于應用功能,從而減少了開(kāi)發(fā)時(shí)間﹑確保了usb的兼容性,其內部功能框圖如圖1所示。

a.帶有加強的8051內核性能,可達到標準8051的5~10倍,且與標準8051的指令完全兼容;
b.集成度高, 芯片內部集成微處理器、ram、sie(串行接口引擎)等多個(gè)功能模塊,從而減少了多個(gè)芯片接口部分需要時(shí)序配合的麻煩;
c.采用軟配置,在外設未通過(guò)usb 接口接到pc機之前, 外設上的固件存儲在pc上;而一旦外設連接到pc 機上,pc 則先詢(xún)問(wèn)外設是“誰(shuí)”(即讀設備描述符) ,然后將該外設的固件下載到芯片的ram中,這個(gè)過(guò)程叫做再枚舉。這樣,在開(kāi)發(fā)過(guò)程中,當固件需要修改時(shí),可以先在pc 機上修改好, 然后再下載到芯片中;
d.具有易用的軟件開(kāi)發(fā)工具,該芯片開(kāi)發(fā)系統的驅動(dòng)程序和固件的開(kāi)發(fā)和調試相互獨立,可加快開(kāi)發(fā)的速度。
(2) cy7c68013有三種可用的接口模式: 端口、gpif主控和從fifo方式。
a.在“端口”模式下,所有i/o引腳都可作為8051的通用i/o口。
b.在“從fifo”模式下,外部邏輯或外部處理器直接與fx2端點(diǎn)fifo相連。在這種模式下,gpif 不被激活,因為外部邏輯可直接控制fifo。這種模式下,外部主控端既可以是異步方式,也可以是同步方式,并可以為fx2 接口提供自己的獨立時(shí)鐘。
c.“gpif主控”接口模式使用portb 和portd 構成通向四個(gè)fx2端點(diǎn)fifo( ep2 ,ep4 , ep6和ep8)的16位數據接口。gpif 作為內部的主控制器與fifo直接相連, 并產(chǎn)生用戶(hù)可編程的控制信號與外部接口進(jìn)行通信。同時(shí),gpif 還可以通過(guò)rdy引腳采樣外部信號并等待外部事件。由于gpif 的運行速度比f(wàn)ifo 快得多,因此其時(shí)序信號具有很好的編程分辨率。另外,gpif 既可以使用內部時(shí)鐘,也可以使用外部時(shí)鐘。
固件程序的功能和基本架構
固件程序是所有基于微控制器及其外圍電路的功能設備正常工作必不可少的部分,其作用就是輔助硬件,主要有以下幾種功能:
a.初始化工作,包括設置一些特殊功能寄存器的初值以實(shí)現所需的設備屬性或者功能,例如開(kāi)中斷,使能端點(diǎn),配置端口等。 b.輔助硬件完成設備的重新列舉過(guò)程,包括模擬設備的斷開(kāi)與重新連接,對接收到的設置包進(jìn)行分析判斷,從而對主機的設備請求作出適當的響應,完成主機對設備的配置任務(wù)。
c.對中斷的處理。
d.數據的接收和發(fā)送。
e.外圍電路的控制。
cypress公司為了簡(jiǎn)化和加速用戶(hù)使用ez-usb fx2芯片進(jìn)行usb外設的開(kāi)發(fā)過(guò)程,提供了一個(gè)完整的固件程序的架構,用戶(hù)只需要提供一個(gè)usb描述符表,添加其他端點(diǎn)接收和發(fā)送數據的通信代碼,以及控制外圍電路的程序代碼。
固件程序框架的流程如圖2所示。

固件架構是由keil c51 c編譯器與其整合開(kāi)發(fā)工具所編寫(xiě)和構建出來(lái)的。其主要所含的文件有:
fw.c固件架構原始的程序代碼
periph.c用戶(hù)副函數鉤子的相關(guān)定義,主要的用戶(hù)函數應用代碼
gpif.c含有g(shù)pif波形描述符表,可以實(shí)現波形的傳輸
dscr..a51 usb描述符表的范例
fx2.h 共同的fx2常數,宏,數據類(lèi)型以及函數庫內副函數的雛形框架
fx2regs.h fx2寄存器的聲明與位屏蔽常數
cy7c68013的固件程序編寫(xiě)實(shí)例
通過(guò)cy7c68013的gpif方式下的單字節讀寫(xiě)實(shí)例來(lái)說(shuō)明固件程序的編寫(xiě)方法。圖3是cy7c68013與sram的硬件連接圖。

其設備描述符的格式和編寫(xiě)可以在參考文獻中找到,這里不加詳述。
其初始化程序代碼如下所示:
usb描述符表和用戶(hù)函數可根據所用的方式和需要的功能進(jìn)行簡(jiǎn)單編寫(xiě),在這不再詳細的羅列代碼。
結束語(yǔ)
本文結合實(shí)際工程應用,提出了usb2.0的固件設計方法和具體步驟,并給出了具體實(shí)例。本文所使用的范例代碼是從實(shí)際項目中截取的,希望對讀者設計設備固件程序能有所幫助。
tcp/ip相關(guān)文章:tcp/ip是什么
評論