<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于AN2131QC USB固件程序設(shè)計(jì)

          基于AN2131QC USB固件程序設(shè)計(jì)

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

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

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

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

          AN2131QC是基于USB 1.1的外設(shè)通訊控制芯片

          主要特點(diǎn):

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

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

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

          (4)8 kB內(nèi)部RAM,支持外部存儲(chǔ)器;

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

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

          2 AN2131QC的數(shù)據(jù)傳輸方式

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

          (1)控制傳輸

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

          (2)批量傳輸

          主要用于傳輸長(zhǎng)度不大于64個(gè)字節(jié),而且需要周期性傳輸?shù)臄?shù)據(jù)塊,具有錯(cuò)誤重發(fā)功能,可以動(dòng)態(tài)地利用可獲得的USB總線帶寬。

          (3)中斷傳輸

          對(duì)于一個(gè)規(guī)定的時(shí)間里傳輸一個(gè)中等數(shù)量的數(shù)據(jù)是很有用,因?yàn)樗鼘⒈WC主機(jī)在最短的延遲里響應(yīng)或發(fā)送數(shù)據(jù)。

          (4)同步傳輸

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

          3 框架函數(shù)

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

          3.1 任務(wù)分配

          (1)D_Init( )

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

          (2)TD_Poll( )

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


          本文引用地址:http://www.ex-cimer.com/article/201706/353730.htm(3)TD_Suspend( )

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

          (4)TD_Resume( )

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

          3.2 設(shè)備請(qǐng)求

          設(shè)備請(qǐng)求函數(shù)一般具有如下形式:

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

          3.3 USB中斷

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



          4 固件程序

          4.1 固件的定義


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

          4.2 固件程序設(shè)計(jì)

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

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

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

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

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



          在KeilμVision2下調(diào)試,即可生成bulk.HEX。

          5 結(jié) 語(yǔ)

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



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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();