1 USB 接口原理
USB1.1 規(guī)范將USB 分為5 部分:控制器、控制器驅(qū)動程序、USB 芯片驅(qū)動程序、USB設(shè)備以及針對不同USB 設(shè)備的客戶端驅(qū)動程序。
(1) 控制器(Host Controller)主要負責(zé)執(zhí)行由控制器驅(qū)動程序發(fā)出的命令。
(2) 控制器驅(qū)動程序(Host Controller Driver), 在控制器與USB 設(shè)備間建立通信管道(Pipe)。
(3) USB 驅(qū)動程序(USB Driver),提供對不同USB 設(shè)備及芯片的支持。
(4) USB 設(shè)備(USB Device), 有兩類USB 設(shè)備:一類稱為功能設(shè)備(Function),另一類是稱為USB 集線器(HUB),可以連接多個USB 設(shè)備。
(5) USB 設(shè)備驅(qū)動程序(Client Driver Software)及特定應(yīng)用程序。
主控制器的驅(qū)動軟件由操作系統(tǒng)支持,USB 設(shè)備開發(fā)人員一般只需編寫客戶驅(qū)動程序,實現(xiàn)特定功能,設(shè)備端所有功能軟件需要全面設(shè)計。
USB 的四種數(shù)據(jù)傳輸模式分別是:控制型傳輸、中斷型傳輸、批量型傳輸、實時型傳輸。第一種在缺省通道中傳輸USB 接口本身的配置等控制信息,后面三種用于功能部件傳輸數(shù)據(jù)。中斷型用于鍵盤等的異步輸入輸出少量數(shù)據(jù)傳輸,批量傳輸主要用于象硬盤等塊設(shè)備的數(shù)據(jù)傳輸,在中斷和批量的傳輸過程中要傳遞交互握手信號,確保數(shù)據(jù)準(zhǔn)確無誤。
實時傳輸對帶寬有嚴(yán)格要求,但允許有一定誤碼,省去了交互握手信號的傳遞,常用于音視頻碼流數(shù)據(jù)傳輸。四種類型數(shù)據(jù)都按帶寬要求分配在1ms 一幀的數(shù)據(jù)幀內(nèi)進行傳輸,USB1.0 實時傳輸可得到的最大帶寬10.24Mbps。
2 嵌入式系統(tǒng)USB 接口設(shè)計
要滿足高性能ARM嵌入式系統(tǒng)的要求,擴展USB接口必須選擇高性能USB控制器芯片,Philips公司的PDISUBD12 USB器件,是與微處理器配合使用的高性能USB接口器件,性價比很高。PDIUSBD12主要特性有:
(1) 符合USB 1.1 技術(shù)規(guī)范;
(2) USB控制器并行接口與處理器間的數(shù)據(jù)傳輸速度高達2M 字節(jié)/秒;
(3) 在批量模式和同步模式下均可實現(xiàn)1M 字節(jié)/秒的數(shù)據(jù)傳輸速率;
(4) 集成了FIFO存儲收發(fā)器,支持DMA 操作;
(5) 內(nèi)置時鐘倍頻PLL電路,可編程時鐘頻率輸出;
(6) 多中斷模式實現(xiàn)批量和同步傳輸;[!--empirenews.page--]
采用PDIUSBD12 USB標(biāo)準(zhǔn)組件與S3C44B0X接口,減小了開發(fā)的時間、風(fēng)險以及費用,是最快捷、最經(jīng)濟的方法實現(xiàn)ARM嵌入式系統(tǒng)擴展USB的解決方案之一。PDIUSBD12與S3C44B0X ARM7處理器的電路圖見圖2。因ARM7用存儲器影射方法擴展I/O接口,一般按16bit方式尋址,所以U2的A0連到U1的Addr1引腳, 片選信號nGCS1的基地址是0x0200_0000。
3 ARM 端USB 設(shè)備程序
設(shè)備端程序主要完成:ARM BIOS 和ucLinux 的加載、啟動通信進程、USB 控制器初始化、響應(yīng)主控制器標(biāo)準(zhǔn)PnP 及其他命令、建立USB 端點(End point)邏輯通道、數(shù)據(jù)傳輸操作等功能,圖3 是基于ARM 的USB 設(shè)備與PC 間音頻通信的程序功能結(jié)構(gòu)圖。
操作USB 芯片的接口函數(shù)的宏定義為:
typedef unsigned short int U16 ;
#define pD12_CMD ( ( U16 *) 0x02000002 ) //指向D12 命令寄存器指針
#define pD12_DAT ( ( U16 *) 0x02000000 ) //指向D12 數(shù)據(jù)寄存器指針
#define D12WriteCmd( data ) (*p D12_CMD = (U16)(data) & 0xff )
#define D12WriteData( data ) (* pD12_DAT = (U16)(data) & 0xff )
#define D12ReadData() (* pD12_DAT & 0xff )
4 音頻碼流USB 設(shè)備驅(qū)動程序
Windows2000 中各種USB 設(shè)備客戶驅(qū)動程序結(jié)構(gòu)框架基本相同,可以從Windows2000DDK 中獲得USB 設(shè)備驅(qū)動程序范例代碼,對范例代碼作少量修改就可以滿足特定功能需要。圖1 顯示了驅(qū)動程序各層間的數(shù)據(jù)傳遞關(guān)系,底層USB 主控制器驅(qū)動程序(USB Host Driver)由操作系統(tǒng)提供支持,設(shè)備驅(qū)動程序只需要對USB Host Driver 上傳的I/O 數(shù)據(jù)包IRP 作出響應(yīng),并把要輸出數(shù)據(jù)以IRP 形式下傳給USB Host Driver 即可。
在ISO(實時型)模式下傳輸音頻碼流,USB 客戶程序除了WDM(Windows Driver Model)驅(qū)動常規(guī)處理外,必須計算好帶寬,并為驅(qū)動程序在非分頁存儲區(qū)內(nèi)分配好環(huán)行緩沖區(qū)(Ringbuffer),以便USB 主控制器可以不間斷輸出實時數(shù)據(jù)。RingBuffer 的大小按下式
計算:
每幀字節(jié)數(shù) × 每緩沖幀數(shù) × 緩沖區(qū)數(shù) ;
每傳完一緩沖區(qū),USB Host Driver 回調(diào)(CallBack)一次客戶驅(qū)動程序,USB 帶寬按每1ms 傳送1 幀數(shù)據(jù)來分配,要實現(xiàn)8kHz 采樣頻率、8bits 編碼的音頻PCM 碼流傳輸,幀數(shù)據(jù)包大小必須設(shè)為8Bytes,若設(shè)置4 個緩沖區(qū)交替工作,每緩沖區(qū)分20 幀傳送, 則RingBuffer 的大小為640Bytes,那么USB 主控制器每20ms 的頻率中斷回調(diào)一次客戶驅(qū)動程序是合適的。
驅(qū)動程序通過IoSetCompletionRoutine()函數(shù)給每個IRP 設(shè)置回調(diào)函數(shù)入口地址,每完成一個IRP 緩沖區(qū)數(shù)據(jù)傳送操作,回調(diào)一次該地址指向的函數(shù),以便把下一緩沖包數(shù)據(jù)壓入到IRP 棧,直到全部數(shù)據(jù)流傳送完畢或人為終止傳送。
5 結(jié)束語
擴展USB 接口,大幅提升了32 位ARM 嵌入式系統(tǒng)數(shù)據(jù)通信的吞吐能力,有即插即用特性和多種數(shù)據(jù)傳輸模式,方案適合于嵌入式系統(tǒng)的多種應(yīng)用。文章具體闡述了方案硬件、軟件設(shè)計的關(guān)鍵問題,并討論了如何分配USB 總線帶寬,實現(xiàn)恒速音頻PCM 碼流傳送,實驗結(jié)果表明該方案能流暢地接收Windows2000 通過USB 接口輸出話音編碼信號,方案可行,具有較高參考價值
北京2022年10月19日 /美通社/ -- 隨著云計算、大數(shù)據(jù)的普及發(fā)展,過去的"云"是服務(wù)于大企業(yè)的計算模型,而十多年過去了,越來越多的應(yīng)用及業(yè)務(wù)走上"云端",對計算核心數(shù)需求...
關(guān)鍵字: ARM 大數(shù)據(jù) 云游戲 CPULua RTOS 是一個實時操作系統(tǒng),設(shè)計在嵌入式系統(tǒng)上運行,對 FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺,并可以輕松移植到其他32位...
關(guān)鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時雙向通信,是嵌入式系統(tǒng)必不可少的d...
關(guān)鍵字: 異步收發(fā) 傳輸器 嵌入式系統(tǒng)物聯(lián)網(wǎng)正在擴大規(guī)模并加速發(fā)展,進而驅(qū)動著全新的經(jīng)濟。而Arm生態(tài)系統(tǒng)正是這一巨大機遇背后的推動力。
關(guān)鍵字: ARM 物聯(lián)網(wǎng)ARM公司是一家知識產(chǎn)權(quán)(IP)供應(yīng)商,它與一般的半導(dǎo)體公司最大的不同就是不制造芯片且不向終端用戶出售芯片,而是通過轉(zhuǎn)讓設(shè)計方案,由合作伙伴生產(chǎn)出各具特色的芯片。
關(guān)鍵字: ARM科技公司們認為,收購將使英偉達控制一個重要的供應(yīng)商,該供應(yīng)商向蘋果、英特爾、三星電子、亞馬遜和華為等公司授權(quán)基本的芯片技術(shù),同時也向不計其數(shù)的中小技術(shù)企業(yè)提供授權(quán)??偛课挥谟腁RM公司將芯片設(shè)計和相關(guān)軟件代碼授權(quán)給所...
關(guān)鍵字: 英偉達 ARM 半導(dǎo)體公司