USB equipment firmware procedure development based on DSP
摘要:本文介紹了一種采用TMS320VC5509A自帶的USB模塊來實現(xiàn)USB數(shù)據(jù)傳輸?shù)姆桨福瑢υ揇SP內(nèi)部的USBCSL)來實現(xiàn)USB設備固件程序的設計,并給出了相關的部分代碼。該方案大大降低了系統(tǒng)硬件模塊的構造及其傳輸原理做了分析,詳細的介紹了如何利用CCS內(nèi)部集成的片級支持庫(設計的復雜度和調(diào)試的難度,提高了系統(tǒng)的集成度和穩(wěn)定性,適用于便攜式設備中。
關鍵詞:TMS320VC5509A;CSL;DSP;USB;固件程序
Abstract: This article introduced a method to realize USB data transmission using the TMS320VC5509A’s own USB module , analyzed the DSP’s interior USB module’s structure and its transmission principle, how to realize the USB firmware procedure design using chip support library which is integrated in CCS has been introduced in detail, and the related partial codes has been given. This method greatly reduced the complexity of the system’s hardware design and the debugging difficulty, it enhanced the system integration rate and the stability, using in the portable equipment is suitable.
KeyWords: TMS320VC5509A;CSL;DSP;USB;Firmware
1.引言
通用串行總線(USB)是一種高傳輸速率的串行接口總線,由于它具有即插即用、易于擴展、傳輸速率高、連接簡單、使用方便的特點,被廣泛的應用于各種計算機外設、數(shù)據(jù)采集、數(shù)字設備以及工業(yè)控制等領域中。選取合適的USB控制芯片是USB數(shù)據(jù)傳輸系統(tǒng)設計的重要環(huán)節(jié),目前常采用USB控制芯片有兩類,一類是不帶MCU的控制芯片,如PDIUSBD12;而另一類是帶MCU的,如EZ—USB系列等。這兩類專用的控制芯片都需要通過芯片所提供的接口來與系統(tǒng)處理器進行通信,而本文介紹的USB接口方案沒有采用專用的USB控制芯片,而是采用DSP芯片TMS320VC5509A內(nèi)部集成的USB模塊來完成USB通信,使系統(tǒng)硬件設計和調(diào)試難度都大大降低,同時也提高了系統(tǒng)的集成度和穩(wěn)定性。
2.USB接口設計
2.1 TMS320VC5509A簡介
TMS320VC5509A是TI推出的高性能、低功耗的定點DSP處理器,CPU頻率最高可以運行在200MHz(內(nèi)核電壓工作在1.6v),每個時鐘周期可執(zhí)行一到兩條指令,有兩個算術邏輯單元(ALU),兩個硬件乘法器,是一款具有較高性價比、高集成度、低功耗的DSP芯片,適用于便攜式設備中。TMS320VC5509A集成了128K 16Bits RAM、32K 16Bits的ROM,且?guī)в蠩MIF接口, 可實現(xiàn)與多種存儲器之間的無縫連接。片內(nèi)還有豐富的外設:2個20位的定時器;3個多通道緩沖串口(McBSP);USB全速接口(12Mbps);I2C接口;實時時鐘等[1]。
2.2 TMS320VC5509A的USB模塊介紹
TMS320VC5509A自帶的USB模塊支持USB1.1協(xié)議全速標準,該USB模塊有兩個控制端點(僅用于控制傳輸)和14個通用端點,通用端點支持中斷、批量和同步傳輸。DSP的USB模塊由串行接口引擎(SIE)、USB緩沖管理單元(UBM)、緩沖器RAM、USB的DMA控制器和緩沖器RAM仲裁器組成。DSP存儲器與USB主機之間的數(shù)據(jù)傳輸模型如圖(1)所示:在IN事務中,CPU或USB的DMA控制器將準備發(fā)送到主機的數(shù)據(jù)放到緩沖器RAM中,等待USB緩沖管理單元將數(shù)據(jù)取出后送到串行接口引擎(SIE),由SIE負責數(shù)據(jù)的發(fā)送;在OUT事務中,SIE接收到由主機發(fā)來的數(shù)據(jù)后送到UBM,再送入到緩沖器RAM中,等待CPU或USB的DMA控制器將數(shù)據(jù)取出后送到DSP的存儲器中。

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

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

圖(3)USB接口硬件連接圖
3.USB設備固件程序設計與實現(xiàn)
USB驅(qū)動程序主要包括兩個部分:設備固件程序和主機端的設備驅(qū)動程序,設備固件程序是指運行在設備端CPU中的程序,它主要完成USB協(xié)議的處理及設備與主機的數(shù)據(jù)交換, 設備固件程序設計是重點也是難點,本文主要介紹設備固件程序的編寫。
3.1 DSP 的CSL編程
在DSP系統(tǒng)軟件設計中,一般會大量涉及到對片上外設的操作,而這往往要消耗過多的時間和精力。TI為5000系列和6000系列的DSP提供了各自的片級支持庫CSL(chip support library),CSL庫函數(shù)主要用于配置和控制DSP片上外設,使片上外設更容易使用,縮短開發(fā)時間,增加可移植性。用CSL來配置和管理DSP的USB模塊可以使USB固件程序的開發(fā)變得更加方便和快捷。CSL已集成到CCS中,我們可利用CCS提供的圖形用戶接口(GUI)來對USB模塊進行相應的初始化配置,或者直接調(diào)用CSL庫函數(shù)來配置。
3.2 USB設備枚舉過程
當主機檢測到有設備連接到USB總線時,主機要向USB設備發(fā)出一系列的設備請求,獲取USB設備的一些屬性,如設備支持的最大傳輸速率、設備接口特性、設備端點個數(shù)以及每個端點支持的傳輸方式等。接著主機為USB設備分配一個唯一的設備地址,然后USB設備才可以正常使用,這個過程叫做枚舉[4]。USB設備的枚舉過程分以下幾步:
1. USB設備加電,并連接上USB總線。
2. 主機檢測到USB設備,總線復位,集線器發(fā)送復位信號并維持至少10毫秒。
3. 復位完成,USB設備處于缺省狀態(tài),此時設備將以缺省地址0響應主機請求
4. 主機發(fā)出請求,從缺省地址0讀取USB設備的設備描述符。
5. 主機為該USB設備分配一個新的設備地址。
6. 主機從新的設備地址再次讀取USB設備的設備描述符。
7. 主機讀取設備的配置,包括配置描述符、該配置的所有接口描述符、接口的所有端點描述符以及字符串描述符號。
8. 主機加載設備驅(qū)動程序,USB枚舉過程結(jié)束,USB設備可以正常使用了。





