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

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

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

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