<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于A(yíng)N2131QC USB固件程序設計

基于A(yíng)N2131QC USB固件程序設計

作者: 時(shí)間:2017-06-12 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:USB通用串行總線(xiàn)已經(jīng)成為PC的標準配備,使用USB接口可以連接多個(gè)不同的設備,支持熱插拔,并具有自動(dòng)檢測的功能。要深入了解并設計出USB設備就不得不使用到內含USB接口的微控制器或是專(zhuān)用的接口控制芯片。這里討論在一般常用的 USB單片機中內建USB接口的情況。簡(jiǎn)要介紹 的特性,描述主機與設備之間的通信,介紹它的幾種傳輸并在此基礎上介紹固件的定義,闡述基本框架以及其的基本設計。

關(guān) 鍵 詞:
;基本框架;USB接口;設計

隨著(zhù)USB接口的推出,它正在逐漸成為計算機外圍設備一種主流接口,所以USB接口的開(kāi)發(fā)也越來(lái)越得到關(guān)注。在其開(kāi)發(fā)中,的開(kāi)發(fā)是一個(gè)重要的環(huán)節,它是USB設備運行的核心,響應各種USB設備請求,完成各種數據交換工作和事件的處理,直接影響產(chǎn)品的數據傳輸速率。固件程序也是開(kāi)發(fā)過(guò)程中的一個(gè)難點(diǎn),因此本文介紹其基本框架和其基本的程序設計。

1 AN2131QC的主要特點(diǎn)

AN2131QC是基于USB 1.1的外設通訊控制芯片

主要特點(diǎn):

(1)4時(shí)鐘周期的8051內核;

(2)2個(gè)快速存儲器到存儲器的數據發(fā)送指針;

(3)多個(gè)USB數據傳輸中斷;

(4)8 kB內部RAM,支持外部存儲器;

(5)軟配置,方便固件程序升級;

(6)32個(gè)輸入輸出管道,支持1024B的同步數據傳輸。

2 AN2131QC的數據傳輸方式

USB總線(xiàn)的數據傳送是通過(guò)管道來(lái)完成的,當外圍設備接到總線(xiàn)上時(shí),地址是由主機隨機分配的,信息的交換通過(guò)4種方式實(shí)現。

(1)控制傳輸

主要作用是建立主機和USB外設之間的聯(lián)系管道和USB外設的狀態(tài)反映,不能用于傳輸信息數據。AN2131QC的端點(diǎn)O用于控制傳輸。

(2)批量傳輸

主要用于傳輸長(cháng)度不大于64個(gè)字節,而且需要周期性傳輸的數據塊,具有錯誤重發(fā)功能,可以動(dòng)態(tài)地利用可獲得的USB總線(xiàn)帶寬。

(3)中斷傳輸

對于一個(gè)規定的時(shí)間里傳輸一個(gè)中等數量的數據是很有用,因為它將保證主機在最短的延遲里響應或發(fā)送數據。

(4)同步傳輸

可以1次傳輸長(cháng)度不超過(guò)1 024 B的數據塊,主要用于傳輸大批量的實(shí)時(shí)數據,例如音頻數據,不支持錯誤重發(fā)。

3 框架函數

框架函數一般都提供有交互的掛鉤,可以用來(lái)方便用戶(hù)添加完成特定的功能代碼。所謂函數掛鉤,就是應用程序之間的橋梁,就好比用鉤子在應用程序之間建立聯(lián)系。函數掛鉤非常簡(jiǎn)單,其所能完成的功能也非常有限,但可以根據實(shí)際需要向函數中添加代碼,以實(shí)現特定的功能??蚣芎瘮捣譃?類(lèi):任務(wù)分配、標準設備請求和USB中斷處理。

3.1 任務(wù)分配

(1)D_Init( )

該函數可在框架初始化期間被調用。在設備重枚舉和任務(wù)調度啟用前調用該函數,可用于初始化用戶(hù)的全局狀態(tài)變量。在該函數中,用戶(hù)可設置整體狀態(tài)變量的初始值,并可規定各種端點(diǎn)資源的使用(包括中斷)以及配置外圍接口的輸入/輸出等。

(2)TD_Poll( )

在設備工作期間,該函數可被重復調用。它包含一個(gè)執行外設功能的狀態(tài)機。該函數在高優(yōu)先級的任務(wù)處理完成后便可返回。然而,如果不能從該函數中返回,則,框架將不能響應設備請求和USB掛起事件。如果某項任務(wù)需要大量的處理時(shí)間,則應將該任務(wù)分為若干小任務(wù),并通過(guò)對該函數的多次調用來(lái)分批處理。


本文引用地址:http://dyxdggzs.com/article/201706/353730.htm(3)TD_Suspend( )

該函數可在框架進(jìn)入掛起狀態(tài)之前被調用。函數中應該包括使設備進(jìn)入低功耗狀態(tài)的程序,然后返回TRUE。當然,可以讓該函數返回FALSE,以阻止設備進(jìn)入掛起狀態(tài)。

(4)TD_Resume( )

該函數可在設備被外部喚醒事件喚醒且框架程序恢復處理后被調用。此時(shí),設備將恢復到正常的操作方式。

3.2 設備請求

設備請求函數一般具有如下形式:

該函數主要對來(lái)自主機的命令及請求進(jìn)行處理(如分析描述符表),以確定新的配置接口和端點(diǎn)。

3.3 USB中斷

由于在固件程序中提供有中斷服務(wù)例程接口,因此,開(kāi)發(fā)者只要在需要處理的中斷服務(wù)例程接口中加入自己編寫(xiě)的中斷服務(wù)代碼,即可完成對相應中斷請求的服務(wù)。這些中斷服務(wù)例程接口函數的形式為:



4 固件程序

4.1 固件的定義


載有在用戶(hù)環(huán)境中不能加以改變的計算機程序及數據的器件。包含在固件中的計算機程序和數據歸類(lèi)為軟件;載有計算機程序和數據的電路歸類(lèi)為硬件。固件程序就是硬件中的軟件部分,通過(guò)執行該軟件可以實(shí)現特定的硬件功能。通常的固件程序是將一段程序存儲在ROM上,設備啟動(dòng)之后自動(dòng)引導配置特定的芯片,使之完成特定的功能。

4.2 固件程序設計

Cypress公司提供固件程序框架,用于加速開(kāi)發(fā)基于EZ-USB芯片的外設。固件程序采用Keil C編寫(xiě),主要包括2個(gè)文件,一個(gè)是任務(wù)調度和設備請求分析程序fw.c,其中包含了固件執行的入口,一般不用修改;一個(gè)是USB外設功能程序periph.c,包括用戶(hù)初始化函數、標準設備請求函數、完成外設功能的USB中斷處理函數。用戶(hù)只需提供設備描述符表并鏈接進(jìn)來(lái),再編寫(xiě)完成外設功能的代碼,就可以開(kāi)發(fā)出一個(gè)功能完善的USB外設。例如要使用AN2131QC的塊輸入端點(diǎn)2完成快速讀操作,其固件編寫(xiě)步驟如下:

(1)按照USB描述符表樣例Dser.a51中的格式,按順序依次修改設備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符。

(2)修改periph.c程序中初始化函數TD_Init(),進(jìn)行端點(diǎn)使能與中斷允許設置。

void TD_Init(void)
{
IN2VAL=bmEP2; // 使輸入端點(diǎn)2有效
IN2IEN=bmEP2; ///使能端點(diǎn)中斷
USBBAV=bmAVEN; //使能自動(dòng)向量
EA=1; //使能8051中斷
Rwuen=TRUE; //使能遠程喚醒
}

(3)修改periph.c中的塊輸入端點(diǎn)2的中斷函數ISR_Ep2 in(),填加用戶(hù)功能代碼,完成塊讀傳輸。



在KeilμVision2下調試,即可生成bulk.HEX。

5 結 語(yǔ)

當前,USB設備的開(kāi)發(fā)已成為熱點(diǎn),縮短研發(fā)周期、提高開(kāi)發(fā)效率是開(kāi)發(fā)者追求的目標。選擇EZ-USB芯片,利用EZ-USB程序框架,可以大大加快USB設備固件程序的開(kāi)發(fā)過(guò)程。



關(guān)鍵詞: AN2131QC EZ-USB 固件程序

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>