王 平,施文灶,黃 晞,江華麗
摘 要:從電路設(shè)計(jì)到程序調(diào)試,全方位地研究開(kāi)發(fā)了一種基于嵌入式的通用USB接口。選用ARM9的S3C2440A芯片作為CPU,因?yàn)樵撔酒瑑?nèi)部集成了控制USB的全部部件,所以只需附加簡(jiǎn)單的電源變換等外圍電路即可完成硬件設(shè)計(jì),再通過(guò)串口加載和調(diào)試USB的驅(qū)動(dòng)程序,實(shí)現(xiàn)嵌入式終端的USB接口功能。測(cè)試表明,該接口可以穩(wěn)定可靠地自動(dòng)掛載U盤(pán)以及準(zhǔn)確交換數(shù)據(jù)。采用基于S3C2440A芯片的USB接口方案具有外圍電路簡(jiǎn)單和運(yùn)行可靠的特點(diǎn),從而提升了嵌入式終端的整體性能,為日后的應(yīng)用提供了基礎(chǔ)。
關(guān)鍵詞:USB;嵌入式;ARM9;S3C2440A
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)12-033-03
Design and Realization of USB Based on Embedded ARM9
WANG Ping,SHI Wenzao,HUANG Xi,JIANG Huali
(School of Physics and Optoelectronics Technology,Fujian Normal University,Fuzhou,350007,China)
Abstract:In embedded system,from circuit design to the process of debugging,research and development of a common USB interface.Taking S3C2440A of ARM9 chip as CPU,the chip because of the internal control integrated USB all parts,so only a simple additional power,and other external circuit to complete hardware design,and then through the serial port to load and debug the USB driver,the end of embedded USB interface function is achieved.The tests prove that this can be stable and reliable interface to automatically mount disk U,as well as the exchange of accurate data.Based on the USB interface chip of S3C2440A,it has a simple external circuit and reliable operation of the characteristics,thus enhancing the overall performance embedded terminal for the future provide a basis.
Keywords:USB;embedded;ARM9;S3C2440A
0 引 言
USB(Universal Serial Bus)是通用串行總線的縮寫(xiě),因其具有方便易用,動(dòng)態(tài)分配帶寬,容錯(cuò)性優(yōu)越和高性價(jià)比等特點(diǎn),現(xiàn)已成為計(jì)算機(jī)的主流接口[1]。
隨著嵌入式系統(tǒng)的廣泛應(yīng)用,各種小型終端需要開(kāi)發(fā)出與外界聯(lián)系的USB接口。目前,常用的技術(shù)有兩種。基于單片機(jī)的USB接口,特點(diǎn)是需要外置芯片,電路復(fù)雜,留下的CPU資源不多[2];基于ARM的USB接口,特點(diǎn)是資源豐富,但ARM系列產(chǎn)品較多,如果選型不當(dāng),還需要搭接較多的外圍電路,且不能很好地發(fā)揮CPU性能[3]。
該設(shè)計(jì)采用三星公司ARM9核的S3C2440A芯片作為CPU,因?yàn)樵撔酒瑑?nèi)部集成了控制USB的所有部件,外圍電路簡(jiǎn)單,易于實(shí)現(xiàn)[4]。
1 S3C2440A特點(diǎn)
S3C2440A的CPU部分主要集成了電源模塊、復(fù)位和時(shí)鐘模塊、觸摸屏和小鍵盤(pán)模塊、程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器模塊。同時(shí)提供如下豐富的外圍接口:同步存儲(chǔ)器(SDRAM)和NAND FLASH控制接口,可擴(kuò)展到1 GB的存儲(chǔ)的空間;4個(gè)DMA通道和24個(gè)中斷端口;能控制STN LCD和TFT液晶屏顯示,支持觸摸屏功;USB接口A型和B型各一個(gè);3個(gè)串行口、I2C,SPI,I2S等接口;帶AC97音頻接口;具備SD卡、數(shù)碼相機(jī)接口和網(wǎng)絡(luò)接口。
S3C2440A還具備多種工作模式,管腳為17×17方型分布,橫向從左1到右17編號(hào),縱向從下A到上U編號(hào),分類為A1~A17,B1~B17,C1~C17依此類推到U1~U17。這些管腳所對(duì)應(yīng)的功能并不是惟一的,通常只要使能變化,S3C2440A就能實(shí)現(xiàn)不同的控制功能。該設(shè)計(jì)涉及到的S3C2440A,其管腳如表1所示分為3類。
表1 實(shí)現(xiàn)設(shè)計(jì)電路用到的S3C2440A管腳
USB接口所用的管腳串口電路用到的管腳管腳對(duì)電壓的要求
PinNumberPinNamePinNumberPinNameS3C2440A芯片的管腳對(duì)電壓要求不同,可以分為1.2 V,3.3 V,接地3類
N11DP0K13TXD0電壓要求管腳名稱
N12DN1/PDN0K14RXD01.2 VJ17 G4 F1 F16 A16 B11 A10 A6 A1 N16 M13 U11 T8 T6 U2 U1 L2 J2
P12DN0L17nRTS03.3 VB6 A9 B12 B14 B16 F17 C1
U14DP1/PDP0K11nCTS0接地T14 F2 A3 A4 B10 A12 C17 G17 R17 M17 H1 K1 T1 T2 U4 U7 U10 B1 E2 D17 D16 A15 B13 A11 A7 A5 N1 U3 U9 U15 G1 H11
2 實(shí)現(xiàn)USB方案的硬件電路
2.1 USB接口電路
由于S3C2440A內(nèi)部集成了USB控制器,所以接口電路比較簡(jiǎn)單[5],其原理如圖1所示。
圖1 USB接口電路原理圖
2.2 串口電路
串口在該設(shè)計(jì)中的作用是通過(guò)計(jì)算機(jī)加載USB驅(qū)動(dòng)程序,原理如圖2所示。
2.3 電源電路
由于S3C2440A芯片的管腳對(duì)電壓提出了不同要求,所以需要完成電源的變壓[6],其原理如圖3所示。
3 驅(qū)動(dòng)程序的研究
按USB接口,其設(shè)備結(jié)構(gòu)可分為USB Host(主機(jī))和USB Device(外部設(shè)備)。USB主機(jī)控制USB設(shè)備進(jìn)行通信,而主機(jī)與主機(jī)之間,或USB設(shè)備與USB設(shè)備之間是不能通信的。
3.1 USB主機(jī)
USB主機(jī)的功能通常包含以下幾個(gè)部分:驗(yàn)證USB設(shè)備是否安插好或拔除;控制USB主機(jī)與設(shè)備兩者中的數(shù)據(jù)流;返回USB主機(jī)的所顯狀態(tài)[7]。
USB系統(tǒng)軟件由以下3個(gè)部分組成[8]:主機(jī)控制器驅(qū)動(dòng)(HCD)、USB驅(qū)動(dòng)(USBD)、主機(jī)軟件(Host Software)。主機(jī)控制器所具備的功能如表2所示。HCD和USBD包含基于不同抽象層次的軟件接口,兩者以一定的方式協(xié)同完成任務(wù),用以實(shí)現(xiàn)USB系統(tǒng)的功能。它們的任務(wù)差別沒(méi)有具體定義,然而HCD要具備的一項(xiàng)功能就是必須支持多種不同主機(jī)控制器芯片。在一些操作系統(tǒng)中,當(dāng)系統(tǒng)必須實(shí)現(xiàn)某些基本功能時(shí),可由Host Software實(shí)現(xiàn)。
表2 主機(jī)控制器功能
功能描 述
狀態(tài)處理作為主機(jī)的一部分,主機(jī)控制器報(bào)告和管理它的狀態(tài)
串行化與反串行化對(duì)于從主機(jī)輸出的數(shù)據(jù),主機(jī)控制器協(xié)議及數(shù)據(jù)信息從它原始形狀轉(zhuǎn)化為自位流。對(duì)主機(jī)接收的數(shù)據(jù)進(jìn)行反操作
幀產(chǎn)生以每1 ms為單位產(chǎn)生SOF標(biāo)志包
數(shù)據(jù)處理主機(jī)控制器處理輸入和輸出數(shù)據(jù)的請(qǐng)求
協(xié)議引擎主機(jī)控制器支持USB具體規(guī)定的協(xié)議
傳輸差錯(cuò)控制所有的主機(jī)控制器在發(fā)現(xiàn)和處理已定義的錯(cuò)誤時(shí)展現(xiàn)相似的行為
遠(yuǎn)程喚醒所有的主機(jī)控制器都應(yīng)具有將總線置于掛起狀態(tài)及在遠(yuǎn)程喚醒事件下重新啟動(dòng)的能力
集線器集線器提供了標(biāo)準(zhǔn)的將多個(gè)USB設(shè)備連接到主機(jī)控制器的功能
主機(jī)系統(tǒng)接口主機(jī)控制器在主機(jī)系統(tǒng)控制器之間建立一個(gè)高速的數(shù)據(jù)通道
3.2 USB傳輸類型
USB定義了4種傳送類型:控制傳送、同步傳送、中斷傳送、批傳送。其中,控制傳送是指可靠的、非周期性的、突發(fā)的,并由主機(jī)客戶軟件所發(fā)起的通信,主要應(yīng)用于控制命令和狀態(tài)信息的傳送;同步傳送是指在主機(jī)和設(shè)備之間周期性的、連續(xù)的通信,一般用于傳送時(shí)實(shí)信息,這種類型保留了將時(shí)間概念包含于數(shù)據(jù)的能力,但傳送并不一定很緊急;中斷傳送是指少量數(shù)據(jù)的、低速的、周期的傳送;批傳送是指非周期的、大量的、可靠的傳送,其典型應(yīng)用在于傳送那些可以利用帶寬的數(shù)據(jù)。
3.3 USB 設(shè)備請(qǐng)求
USB設(shè)備應(yīng)通過(guò)缺省控制管道(Default Control Pipe)響應(yīng)來(lái)自主機(jī)的請(qǐng)求命令。這些請(qǐng)求是通過(guò)使用控制傳輸來(lái)完成的。請(qǐng)求及請(qǐng)求的參數(shù)通過(guò)Setup包發(fā)向設(shè)備,由主機(jī)負(fù)責(zé)設(shè)置Setup包內(nèi)的每個(gè)域的值。USB設(shè)備請(qǐng)求包含的請(qǐng)求類型有三種:標(biāo)準(zhǔn)、廠商和設(shè)備類。標(biāo)準(zhǔn)請(qǐng)求用來(lái)完成設(shè)備的枚舉過(guò)程;廠商請(qǐng)求用來(lái)完成使用者自己定義的請(qǐng)求;設(shè)備類請(qǐng)求指的是某些特定的USB設(shè)備類所傳輸出的請(qǐng)求,例如打印機(jī)類就屬于這一類。設(shè)備請(qǐng)求要求有嚴(yán)格的定義,包含的內(nèi)容有類型、設(shè)備請(qǐng)求、值、索引和長(zhǎng)度。
圖2 串口電路原理圖
圖3 電源變化電路原理圖
3.4 USB驅(qū)動(dòng)程序結(jié)構(gòu)
S3C2440A芯片支持USB1.1協(xié)議和USB 2.0協(xié)議。該設(shè)計(jì)是針對(duì)USB Host(主機(jī),A型),并基于USB 1.1協(xié)議編寫(xiě)的。程序結(jié)構(gòu)和數(shù)據(jù)傳輸?shù)牧飨蛉鐖D4所示。
驅(qū)動(dòng)程序的編寫(xiě)主要分為以下幾個(gè)部分考慮:硬件提取層、中斷服務(wù)程序、標(biāo)準(zhǔn)設(shè)備請(qǐng)求和主循環(huán)。硬件提取層實(shí)現(xiàn)的是S3C2440A對(duì)I/O端口直接的讀寫(xiě)操作;中斷服務(wù)程序處理各種中斷,包括總線任務(wù)上的請(qǐng)求;標(biāo)準(zhǔn)設(shè)備請(qǐng)求完成主機(jī)送來(lái)的各種標(biāo)準(zhǔn)請(qǐng)求,用于完成各種枚舉請(qǐng)求;而主循環(huán)則負(fù)責(zé)完成前臺(tái)的數(shù)據(jù)采集等工作,所有的任務(wù)結(jié)束后都要回到主循環(huán)上去。
圖4 USB驅(qū)動(dòng)程序結(jié)構(gòu)和數(shù)據(jù)傳輸流向
4 結(jié) 語(yǔ)
該設(shè)計(jì)采用三星公司ARM9的S3C2440A芯片作為CPU,比原來(lái)基于單片機(jī)的模式,外圍電路簡(jiǎn)單,容易可靠地實(shí)現(xiàn)嵌入式終端的USB接口功能。在調(diào)試中,用到的嵌入式開(kāi)發(fā)板GEC2440A套件還提供了串口工具DNW。用這一工具可以檢測(cè)驅(qū)動(dòng)程序的正確與否,如:程序編寫(xiě)無(wú)誤,則DNW串口會(huì)提示“USB IS CONNECT”。由于S3C2440A芯片功能豐富,如處理器可提高運(yùn)算速度,LCD可人機(jī)交互,網(wǎng)口可連接因特網(wǎng),所以開(kāi)發(fā)出的嵌入式終端不但可提升整體性能,還為日后的應(yīng)用奠定了基礎(chǔ)[9-11]。
參考文獻(xiàn)
[1]楊靜,文必洋.基于USB 2.0的雷達(dá)數(shù)據(jù)傳輸接口設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008(3):270-273.
[2]張洪,董秀成.基于AVR 單片機(jī)的通用USB接口模塊設(shè)計(jì)[J].國(guó)外電子元器件,2008(5):18-21.
[3]虞致國(guó),魏敬和.基于USB接口的ARM 嵌入式仿真器的設(shè)計(jì)[J].電子器件,2008(8):1 294-1 299.
[4]張明揚(yáng),鄧萬(wàn)鵬.基于Linux 系統(tǒng)的USB 主機(jī)接口設(shè)計(jì)與實(shí)現(xiàn)[J].沈陽(yáng)師范大學(xué)學(xué)報(bào),2008(3):333-336.
[5]胡小軍,張愛(ài)成.USB接口開(kāi)發(fā)技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005.
[6]陳黎明,陳長(zhǎng)欣.嵌入式故障注入系統(tǒng)的USB接口設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù),2008(7):42-44.
[7]江海航.嵌入式DSP系統(tǒng)USB通信固件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2008(7):196-199.
[8]周洪建,蔡桂艷.一種實(shí)現(xiàn)USB隨機(jī)中斷傳輸?shù)脑O(shè)備驅(qū)動(dòng)程序設(shè)計(jì)方法[J].計(jì)算機(jī)應(yīng)用與軟件,2008(8):181-183.
[9]張萌,曹建.基于USB接口的全自動(dòng)熱量計(jì)的設(shè)計(jì)及實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2008(6):1 295-1 299.
[10]徐艷春,楊春玲.微弱信號(hào)采集系統(tǒng)的USB實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(3):161-164.
[11]曾一,李鵬.一種USB接口便攜式多模式多通道A/D數(shù)據(jù)采集系統(tǒng)[J].電測(cè)與儀表,2008(7):44-46.
作者簡(jiǎn)介 王 平 男,1955年出生,高級(jí)工程師,碩士生導(dǎo)師,福建省電子學(xué)會(huì)理事。研究領(lǐng)域?yàn)榍度胧较到y(tǒng)、通信網(wǎng)絡(luò)新技術(shù),無(wú)線傳感器網(wǎng)絡(luò)。
施文灶 男,1982年出生, 講師。研究領(lǐng)域?yàn)榍度胧较到y(tǒng)、圖像傳輸技術(shù)。
黃 晞 男,1970年出生,副教授。研究領(lǐng)域?yàn)闄C(jī)器人,神經(jīng)網(wǎng)絡(luò)。
江華麗 女,1985年出生,碩士研究生。研究領(lǐng)域?yàn)閳D像信號(hào)處理與多媒體通信網(wǎng)絡(luò)。