實(shí)例講解usb2.0的固件設(shè)計(jì)方法
usb總線是在1995年被提出,并由7個(gè)計(jì)算機(jī)和通信工業(yè)領(lǐng)先的公司所組成的聯(lián)盟所定義并加以推廣,1999年usb的第三個(gè)版本usb2.0發(fā)布,usb2.0利用傳輸時(shí)序的縮短以及相關(guān)的傳輸技術(shù),將整個(gè)傳輸速度從原來12mbps提高到480mbps,整整提高了40倍。usb2.0除了有傳輸速度快之外,還有眾多優(yōu)點(diǎn),如統(tǒng)一了各種接口設(shè)備的連接頭并使用單一專用的接頭型號,最多可以連接127個(gè)接口設(shè)備,最突出的優(yōu)點(diǎn)是具有“熱插撥”的特性,可以即插即用,并能自動(dòng)檢測與配置系統(tǒng)的資源。但其開發(fā)難度比較大,其中設(shè)備的固件設(shè)計(jì)即是難點(diǎn)之一。
在usb設(shè)備與主機(jī)正常通信之前,主機(jī)必須檢測并配置設(shè)備,所以用戶必須編寫固件程序代碼,響應(yīng)主機(jī)的控制請求命令,并且能夠提供描述符,使主機(jī)了解設(shè)備的功能,從而配置設(shè)備,開始與設(shè)備的正常通信。另外,固件還要完成正常的數(shù)據(jù)傳輸功能。
cy7c68013芯片簡介
cypress公司的ez-usb fx2芯片cy7c68013是一款性能較高的usb2.0微控制器。在單片機(jī)上集成usb2.0收發(fā)器﹑sie(串行接口引擎)﹑增強(qiáng)的8051微控制器和可編程的外圍接口。ez-usb fx2中的智能sie可以處理大部分usb2.0協(xié)議,使得微控制器可以專注于應(yīng)用功能,從而減少了開發(fā)時(shí)間﹑確保了usb的兼容性,其內(nèi)部功能框圖如圖1所示。
(1) cy7c68013的主要特性如下:a.帶有加強(qiáng)的8051內(nèi)核性能,可達(dá)到標(biāo)準(zhǔn)8051的5~10倍,且與標(biāo)準(zhǔn)8051的指令完全兼容;
b.集成度高, 芯片內(nèi)部集成微處理器、ram、sie(串行接口引擎)等多個(gè)功能模塊,從而減少了多個(gè)芯片接口部分需要時(shí)序配合的麻煩;
c.采用軟配置,在外設(shè)未通過usb 接口接到pc機(jī)之前, 外設(shè)上的固件存儲在pc上;而一旦外設(shè)連接到pc 機(jī)上,pc 則先詢問外設(shè)是“誰”(即讀設(shè)備描述符) ,然后將該外設(shè)的固件下載到芯片的ram中,這個(gè)過程叫做再枚舉。這樣,在開發(fā)過程中,當(dāng)固件需要修改時(shí),可以先在pc 機(jī)上修改好, 然后再下載到芯片中;
d.具有易用的軟件開發(fā)工具,該芯片開發(fā)系統(tǒng)的驅(qū)動(dòng)程序和固件的開發(fā)和調(diào)試相互獨(dú)立,可加快開發(fā)的速度。
(2) cy7c68013有三種可用的接口模式: 端口、gpif主控和從fifo方式。
a.在“端口”模式下,所有i/o引腳都可作為8051的通用i/o口。
b.在“從fifo”模式下,外部邏輯或外部處理器直接與fx2端點(diǎn)fifo相連。在這種模式下,gpif 不被激活,因?yàn)橥獠窟壿嬁芍苯涌刂苀ifo。這種模式下,外部主控端既可以是異步方式,也可以是同步方式,并可以為fx2 接口提供自己的獨(dú)立時(shí)鐘。
c.“gpif主控”接口模式使用portb 和portd 構(gòu)成通向四個(gè)fx2端點(diǎn)fifo( ep2 ,ep4 , ep6和ep8)的16位數(shù)據(jù)接口。gpif 作為內(nèi)部的主控制器與fifo直接相連, 并產(chǎn)生用戶可編程的控制信號與外部接口進(jìn)行通信。同時(shí),gpif 還可以通過rdy引腳采樣外部信號并等待外部事件。由于gpif 的運(yùn)行速度比fifo 快得多,因此其時(shí)序信號具有很好的編程分辨率。另外,gpif 既可以使用內(nèi)部時(shí)鐘,也可以使用外部時(shí)鐘。
固件程序的功能和基本架構(gòu)
固件程序是所有基于微控制器及其外圍電路的功能設(shè)備正常工作必不可少的部分,其作用就是輔助硬件,主要有以下幾種功能:
a.初始化工作,包括設(shè)置一些特殊功能寄存器的初值以實(shí)現(xiàn)所需的設(shè)備屬性或者功能,例如開中斷,使能端點(diǎn),配置端口等。 b.輔助硬件完成設(shè)備的重新列舉過程,包括模擬設(shè)備的斷開與重新連接,對接收到的設(shè)置包進(jìn)行分析判斷,從而對主機(jī)的設(shè)備請求作出適當(dāng)?shù)捻憫?yīng),完成主機(jī)對設(shè)備的配置任務(wù)。
c.對中斷的處理。
d.數(shù)據(jù)的接收和發(fā)送。
e.外圍電路的控制。
cypress公司為了簡化和加速用戶使用ez-usb fx2芯片進(jìn)行usb外設(shè)的開發(fā)過程,提供了一個(gè)完整的固件程序的架構(gòu),用戶只需要提供一個(gè)usb描述符表,添加其他端點(diǎn)接收和發(fā)送數(shù)據(jù)的通信代碼,以及控制外圍電路的程序代碼。
固件程序框架的流程如圖2所示。
固件架構(gòu)是由keil c51 c編譯器與其整合開發(fā)工具所編寫和構(gòu)建出來的。其主要所含的文件有:
fw.c固件架構(gòu)原始的程序代碼
periph.c用戶副函數(shù)鉤子的相關(guān)定義,主要的用戶函數(shù)應(yīng)用代碼
gpif.c含有g(shù)pif波形描述符表,可以實(shí)現(xiàn)波形的傳輸
dscr..a51 usb描述符表的范例
fx2.h 共同的fx2常數(shù),宏,數(shù)據(jù)類型以及函數(shù)庫內(nèi)副函數(shù)的雛形框架
fx2regs.h fx2寄存器的聲明與位屏蔽常數(shù)
cy7c68013的固件程序編寫實(shí)例
通過cy7c68013的gpif方式下的單字節(jié)讀寫實(shí)例來說明固件程序的編寫方法。圖3是cy7c68013與sram的硬件連接圖。
其設(shè)備描述符的格式和編寫可以在參考文獻(xiàn)中找到,這里不加詳述。
其初始化程序代碼如下所示:
usb描述符表和用戶函數(shù)可根據(jù)所用的方式和需要的功能進(jìn)行簡單編寫,在這不再詳細(xì)的羅列代碼。
結(jié)束語
本文結(jié)合實(shí)際工程應(yīng)用,提出了usb2.0的固件設(shè)計(jì)方法和具體步驟,并給出了具體實(shí)例。本文所使用的范例代碼是從實(shí)際項(xiàng)目中截取的,希望對讀者設(shè)計(jì)設(shè)備固件程序能有所幫助。
tcp/ip相關(guān)文章:tcp/ip是什么
評論