當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]本文介紹了一種采用TMS320VC5509A自帶的USB模塊來(lái)實(shí)現(xiàn)USB數(shù)據(jù)傳輸?shù)姆桨福瑢?duì)該DSP內(nèi)部的USB模塊的構(gòu)造及其傳輸原理做了分析,詳細(xì)的介紹了如何利用CCS內(nèi)部集成的片級(jí)支持庫(kù)(CSL)來(lái)實(shí)現(xiàn)USB設(shè)備固件程序的設(shè)計(jì),并給出了相關(guān)的部分代碼。該方案大大降低了系統(tǒng)硬件設(shè)計(jì)的復(fù)雜度和調(diào)試的難度,提高了系統(tǒng)的集成度和穩(wěn)定性,適用于便攜式設(shè)備中。

1.引言

通用串行總線(USB)是一種高傳輸速率的串行接口總線,由于它具有即插即用、易于擴(kuò)展、傳輸速率高、連接簡(jiǎn)單、使用方便的特點(diǎn),被廣泛的應(yīng)用于各種計(jì)算機(jī)外設(shè)、數(shù)據(jù)采集、數(shù)字設(shè)備以及工業(yè)控制等領(lǐng)域中。選取合適的USB控制芯片是USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)的重要環(huán)節(jié),目前常采用USB控制芯片有兩類,一類是不帶MCU的控制芯片,如PDIUSBD12;而另一類是帶MCU的,如EZ—USB系列等。這兩類專用的控制芯片都需要通過芯片所提供的接口來(lái)與系統(tǒng)處理器進(jìn)行通信,而本文介紹的USB接口方案沒有采用專用的USB控制芯片,而是采用DSP芯片TMS320VC5509A內(nèi)部集成的USB模塊來(lái)完成USB通信,使系統(tǒng)硬件設(shè)計(jì)和調(diào)試難度都大大降低,同時(shí)也提高了系統(tǒng)的集成度和穩(wěn)定性。

2.USB接口設(shè)計(jì)

2.1 TMS320VC5509A簡(jiǎn)介

TMS320VC5509A是TI推出的高性能、低功耗的定點(diǎn)DSP處理器,CPU頻率最高可以運(yùn)行在200MHz(內(nèi)核電壓工作在1.6v),每個(gè)時(shí)鐘周期可執(zhí)行一到兩條指令,有兩個(gè)算術(shù)邏輯單元(ALU),兩個(gè)硬件乘法器,是一款具有較高性價(jià)比、高集成度、低功耗的DSP芯片,適用于便攜式設(shè)備中。TMS320VC5509A集成了128K 16Bits RAM、32K 16Bits的ROM,且?guī)в蠩MIF接口, 可實(shí)現(xiàn)與多種存儲(chǔ)器之間的無(wú)縫連接。片內(nèi)還有豐富的外設(shè):2個(gè)20位的定時(shí)器;3個(gè)多通道緩沖串口(McBSP);USB全速接口(12Mbps);I2C接口;實(shí)時(shí)時(shí)鐘等[1]。

2.2 TMS320VC5509A的USB模塊介紹

TMS320VC5509A自帶的USB模塊支持USB1.1協(xié)議全速標(biāo)準(zhǔn),該USB模塊有兩個(gè)控制端點(diǎn)(僅用于控制傳輸)和14個(gè)通用端點(diǎn),通用端點(diǎn)支持中斷、批量和同步傳輸。DSP的USB模塊由串行接口引擎(SIE)、USB緩沖管理單元(UBM)、緩沖器RAM、USB的DMA控制器和緩沖器RAM仲裁器組成。DSP存儲(chǔ)器與USB主機(jī)之間的數(shù)據(jù)傳輸模型如圖(1)所示:在IN事務(wù)中,CPU或USB的DMA控制器將準(zhǔn)備發(fā)送到主機(jī)的數(shù)據(jù)放到緩沖器RAM中,等待USB緩沖管理單元將數(shù)據(jù)取出后送到串行接口引擎(SIE),由SIE負(fù)責(zé)數(shù)據(jù)的發(fā)送;在OUT事務(wù)中,SIE接收到由主機(jī)發(fā)來(lái)的數(shù)據(jù)后送到UBM,再送入到緩沖器RAM中,等待CPU或USB的DMA控制器將數(shù)據(jù)取出后送到DSP的存儲(chǔ)器中。

圖(1)DSP存儲(chǔ)器與USB主機(jī)之間的數(shù)據(jù)傳輸

2.3 USB 模塊的時(shí)鐘發(fā)生器:

USB模塊有專門的時(shí)鐘發(fā)生器,獨(dú)立于CPU的時(shí)鐘發(fā)生器,如圖(2)所示,由DSP時(shí)鐘發(fā)生器輸出的時(shí)鐘送入到CPU和其他外設(shè)(不包括USB模塊),而USB模塊的時(shí)鐘由單獨(dú)的時(shí)鐘發(fā)生器為它提供。USB模塊的時(shí)鐘可選擇用模擬鎖相環(huán)(APLL)或數(shù)字鎖相環(huán)(DPLL)來(lái)產(chǎn)生[3]。模擬鎖相環(huán)與數(shù)字鎖相環(huán)相比有它獨(dú)特的優(yōu)勢(shì),TI推薦使用模擬鎖相環(huán)來(lái)產(chǎn)生USB模塊的時(shí)鐘。提供給USB模塊的時(shí)鐘必須設(shè)置為48MHz。

圖(2)時(shí)鐘發(fā)生器


2.4 USB接口硬件設(shè)計(jì)

如圖(3)所示,DP、DN和PU端口接到5509A的USB模塊端口引腳上,DSP的DP、DN端口以差分方式傳送數(shù)據(jù),PU端口通過1.5k的上拉電阻接到USB總線的D+端,DSP可以通過編程來(lái)控制PU端口,從而控制設(shè)備與USB總線的連接與斷開。主機(jī)USB接口提供的電源經(jīng)電阻分壓后送入DSP,供DSP檢測(cè)是否與主機(jī)的USB接口連接上。

圖(3)USB接口硬件連接圖

3.USB設(shè)備固件程序設(shè)計(jì)與實(shí)現(xiàn)

USB驅(qū)動(dòng)程序主要包括兩個(gè)部分:設(shè)備固件程序和主機(jī)端的設(shè)備驅(qū)動(dòng)程序,設(shè)備固件程序是指運(yùn)行在設(shè)備端CPU中的程序,它主要完成USB協(xié)議的處理及設(shè)備與主機(jī)的數(shù)據(jù)交換, 設(shè)備固件程序設(shè)計(jì)是重點(diǎn)也是難點(diǎn),本文主要介紹設(shè)備固件程序的編寫。

3.1 DSP 的CSL編程

在DSP系統(tǒng)軟件設(shè)計(jì)中,一般會(huì)大量涉及到對(duì)片上外設(shè)的操作,而這往往要消耗過多的時(shí)間和精力。TI為5000系列和6000系列的DSP提供了各自的片級(jí)支持庫(kù)CSL(chip support library),CSL庫(kù)函數(shù)主要用于配置和控制DSP片上外設(shè),使片上外設(shè)更容易使用,縮短開發(fā)時(shí)間,增加可移植性。用CSL來(lái)配置和管理DSP的USB模塊可以使USB固件程序的開發(fā)變得更加方便和快捷。CSL已集成到CCS中,我們可利用CCS提供的圖形用戶接口(GUI)來(lái)對(duì)USB模塊進(jìn)行相應(yīng)的初始化配置,或者直接調(diào)用CSL庫(kù)函數(shù)來(lái)配置。

3.2 USB設(shè)備枚舉過程

當(dāng)主機(jī)檢測(cè)到有設(shè)備連接到USB總線時(shí),主機(jī)要向USB設(shè)備發(fā)出一系列的設(shè)備請(qǐng)求,獲取USB設(shè)備的一些屬性,如設(shè)備支持的最大傳輸速率、設(shè)備接口特性、設(shè)備端點(diǎn)個(gè)數(shù)以及每個(gè)端點(diǎn)支持的傳輸方式等。接著主機(jī)為USB設(shè)備分配一個(gè)唯一的設(shè)備地址,然后USB設(shè)備才可以正常使用,這個(gè)過程叫做枚舉[4]。USB設(shè)備的枚舉過程分以下幾步:

1. USB設(shè)備加電,并連接上USB總線。

2. 主機(jī)檢測(cè)到USB設(shè)備,總線復(fù)位,集線器發(fā)送復(fù)位信號(hào)并維持至少10毫秒。

3. 復(fù)位完成,USB設(shè)備處于缺省狀態(tài),此時(shí)設(shè)備將以缺省地址0響應(yīng)主機(jī)請(qǐng)求

4. 主機(jī)發(fā)出請(qǐng)求,從缺省地址0讀取USB設(shè)備的設(shè)備描述符。

5. 主機(jī)為該USB設(shè)備分配一個(gè)新的設(shè)備地址。

6. 主機(jī)從新的設(shè)備地址再次讀取USB設(shè)備的設(shè)備描述符。

7. 主機(jī)讀取設(shè)備的配置,包括配置描述符、該配置的所有接口描述符、接口的所有端點(diǎn)描述符以及字符串描述符號(hào)。

8. 主機(jī)加載設(shè)備驅(qū)動(dòng)程序,USB枚舉過程結(jié)束,USB設(shè)備可以正常使用了。

3.3 USB設(shè)備固件程序設(shè)計(jì)

USB設(shè)備固件程序主要包括兩個(gè)部分:USB模塊的初始化和USB中斷服務(wù)程序,下面分別對(duì)這兩個(gè)部分的實(shí)現(xiàn)做個(gè)簡(jiǎn)單的介紹。

3.3.1 USB模塊的初始化

USB模塊初始化流程為:首先關(guān)閉中斷,然后設(shè)置API函數(shù)指針向量,設(shè)置USB模塊時(shí)鐘,初始化USB設(shè)備的端點(diǎn),調(diào)用函數(shù)USB_init( )初始化USB模塊,用函數(shù)IRQ_plug( )初始化中斷向量表,再打開中斷,最后調(diào)用函數(shù)USB_connectDev( )使USB的D+端通過1.5k電阻上拉,從而使設(shè)備接入U(xiǎn)SB總線,隨后開始USB設(shè)備的枚舉過程[5]。下面對(duì)USB模塊初始化過程中涉及到的部分CSL庫(kù)函數(shù)做個(gè)簡(jiǎn)單介紹:

USB模塊時(shí)鐘設(shè)置函數(shù)USB_initPLL( ),該函數(shù)有三個(gè)參數(shù),分別是USB模塊的輸入時(shí)鐘、USB模塊的輸出時(shí)鐘(必須設(shè)置為48MHz)、輸入時(shí)鐘的分頻數(shù)(該參數(shù)在USB模塊的寄存器中用2 bit 來(lái)設(shè)置,即分頻數(shù)只能設(shè)定為1,2,3或4,所以在硬件設(shè)計(jì)時(shí)需考慮好DSP的外部輸入時(shí)鐘頻率,使USB模塊的時(shí)鐘能夠設(shè)置為48MHz)。

端點(diǎn)初始化函數(shù)USB_initEndptObj( )有七個(gè)參數(shù),該函數(shù)用于對(duì)端點(diǎn)的端點(diǎn)號(hào)、端點(diǎn)的傳輸方式(控制傳輸,中斷傳輸,批量傳輸和同步傳輸)、端點(diǎn)能夠接收的包的最大值、引發(fā)該端點(diǎn)產(chǎn)生中斷的中斷事件、產(chǎn)生該端點(diǎn)中斷后去執(zhí)行的函數(shù)等屬性進(jìn)行相應(yīng)的設(shè)置。

初始化中斷向量表函數(shù)IRQ_plug( )有兩個(gè)參數(shù)[6],第一個(gè)參數(shù)為中斷事件ID(DSP中各種類型的中斷在CSL的頭文件中都定義了不同的ID值),第二個(gè)參數(shù)為中斷函數(shù)地址(產(chǎn)生與事件ID對(duì)應(yīng)的中斷時(shí)轉(zhuǎn)而執(zhí)行的中斷函數(shù)的地址)。USB模塊初始化的部分代碼如下:

USB_EpObj usbEpObjOut0, usbEpObjIn0………; //創(chuàng)建USB端點(diǎn)

USB_EpHandle myUsbConfig[] = {&usbEpObjOut0, &usbEpObjIn0,……,NULL};

void USB_Init()

{ ……

CSL_init( ); //CSL 初始化

INT_DisableGlobal(); //關(guān)中斷

USB_setAPIVectorAddress(); //初始化USB模塊API函數(shù)向量指針

USB_initPLL(12,48,0); //設(shè)置USB模塊時(shí)鐘,必須設(shè)置為48MHz

event_mask = USB_EVENT_RESET | …...;//引發(fā)端點(diǎn)中斷的事件

/////端點(diǎn)初始化

USB_initEndptObj(USB0, &usbEpObjOut0, USB_OUT_EP0, USB_CTRL,0x40, event_mask, USB_ctl);

USB_initEndptObj(USB0, &usbEpObjIn0, USB_IN_EP0, USB_CTRL,0x40, event_mask, USB_ctl);

…… //其它端點(diǎn)初始化程序

USB_init(USB0, myUsbConfig, 0x40); //USB模塊初始化

IRQ_plug(usbId,&USB_isr); //初始化中斷向量表

IRQ_globalEnable(); //開中斷

USB_connectDev(USB0); //設(shè)備連接到USB總線上

……

}


3.3.2 USB中斷服務(wù)程序

當(dāng)產(chǎn)生USB中斷時(shí),程序會(huì)執(zhí)行相應(yīng)的USB中斷程序,在USB中斷程序中我們可以調(diào)用函數(shù)USB_evDispatch( )來(lái)處理中斷事務(wù),該函數(shù)會(huì)清除相應(yīng)的中斷標(biāo)志位,并且發(fā)布USB中斷事件,從而去執(zhí)行相應(yīng)的端點(diǎn)中斷函數(shù)。若是控制端點(diǎn)0中斷,則執(zhí)行控制端點(diǎn)0的中斷函數(shù),完成相應(yīng)的復(fù)位、掛起、SETUP(設(shè)備請(qǐng)求包)等操作。若是其他通用端點(diǎn)中斷則按照該端點(diǎn)初始化時(shí)定義的傳輸方式來(lái)完成數(shù)據(jù)傳輸。USB中斷函數(shù)及端點(diǎn)中斷函數(shù)的部分程序如下:

interrupt void USB_isr() //USB中斷

{ USB_evDispatch( ); }

//控制端點(diǎn)0中斷處理函數(shù)

void USB_ctl(USB_DevNum DevNum, USB_EpHandle hEp0In,USB_EpHandle hEp0Out)

{ ……

if(USB_ctl_events & USB_EVENT_RESET) {…… } //復(fù)位處理

if(USB_ctl_events & USB_EVENT_SUSPEND) {…… } //掛起處理

if((USB_ctl_events & USB_EVENT_SETUP) == USB_EVENT_SETUP) //收到SETUP包

{

if(USB_getSetupPacket(DevNum,&USB_Setup) == USB_TRUE)

{…… } //處理SETUP包,完成相應(yīng)的USB設(shè)備枚舉操作

}

……

}

…… //其它端點(diǎn)中斷函數(shù)

3.4 USB設(shè)備固件程序流程圖

如圖(4)所示,DSP及其USB模塊的初始化完成后進(jìn)入主循環(huán),等待USB中斷。若是控制端點(diǎn)中斷則進(jìn)入控制端點(diǎn)中斷服務(wù)程序,完成設(shè)備枚舉的相關(guān)操作;若是通用端點(diǎn)中斷,則按照通用端點(diǎn)定義的傳輸方式來(lái)完成數(shù)據(jù)的傳輸。然后中斷返回,進(jìn)入主循環(huán)。

4.結(jié)論

本文介紹的采用TMS320VC5509A自帶的USB接口來(lái)完成USB數(shù)據(jù)傳輸?shù)姆桨?,使系統(tǒng)硬件設(shè)計(jì)的復(fù)雜度和系統(tǒng)調(diào)試的難度都大大的降低,同時(shí)也提高了系統(tǒng)的集成度和穩(wěn)定性,減小了系統(tǒng)體積和功耗,適合于在便攜式產(chǎn)品中應(yīng)用。

圖(4)USB設(shè)備固件程序流程圖

參考文獻(xiàn):

[1] TMS320VC5509A Fixed-Point Digital Signal Processor Texas Instruments Incorporated June 2006

[2] 滕巖峰 周雪峰 帶USB接口的100MHZ高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息 2006.22.7-2

[3] Using the USB APLL on the TMS320VC5509A Texas Instruments Incorporated February 2004

[4] 陳啟美、丁傳鎖編著 計(jì)算機(jī)USB接口技術(shù) 南京大學(xué)出版社 2003

[5] TMS320C55x CSL USB Programmer’s Reference Guide Texas Instruments Incorporated October 2001

[6] TMS320C55x Chip Support Library API Reference Guide Texas Instruments Incorporated September 2004

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉