基于嵌入式ARM9的USB设计与实现

时间:2022-05-12 03:10:30

基于嵌入式ARM9的USB设计与实现

摘 要:从电路设计到程序调试,全方位地研究开发了一种基于嵌入式的通用USB接口。选用arm9的S3C2440A芯片作为CPU,因为该芯片内部集成了控制usb的全部部件,所以只需附加简单的电源变换等电路即可完成硬件设计,再通过串口加载和调试USB的驱动程序,实现嵌入式终端的USB接口功能。测试表明,该接口可以稳定可靠地自动挂载U盘以及准确交换数据。采用基于S3C2440A芯片的USB接口方案具有电路简单和运行可靠的特点,从而提升了嵌入式终端的整体性能,为日后的应用提供了基础。

关键词:USB;嵌入式;ARM9;S3C2440A

中图分类号:TP319文献标识码:B

文章编号: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)是通用串行总线的缩写,因其具有方便易用,动态分配带宽,容错性优越和高性价比等特点,现已成为计算机的主流接口[1]。

随着嵌入式系统的广泛应用,各种小型终端需要开发出与外界联系的USB接口。目前,常用的技术有两种。基于单片机的USB接口,特点是需要外置芯片,电路复杂,留下的CPU资源不多[2];基于ARM的USB接口,特点是资源丰富,但ARM系列产品较多,如果选型不当,还需要搭接较多的电路,且不能很好地发挥CPU性能[3]。

该设计采用三星公司ARM9核的S3C2440A芯片作为CPU,因为该芯片内部集成了控制USB的所有部件,电路简单,易于实现[4]。

1 S3C2440A特点

S3C2440A的CPU部分主要集成了电源模块、复位和时钟模块、触摸屏和小键盘模块、程序存储器和数据存储器模块。同时提供如下丰富的接口:同步存储器(SDRAM)和NAND FLASH控制接口,可扩展到1 GB的存储的空间;4个DMA通道和24个中断端口;能控制STN LCD和TFT液晶屏显示,支持触摸屏功;USB接口A型和B型各一个;3个串行口、I2C,SPI,I2S等接口;带AC97音频接口;具备SD卡、数码相机接口和网络接口。

S3C2440A还具备多种工作模式,管脚为17×17方型分布,横向从左1到右17编号,纵向从下A到上U编号,分类为A1~A17,B1~B17,C1~C17依此类推到U1~U17。这些管脚所对应的功能并不是惟一的,通常只要使能变化,S3C2440A就能实现不同的控制功能。该设计涉及到的S3C2440A,其管脚如表1所示分为3类。

表1 实现设计电路用到的S3C2440A管脚

USB接口所用的管脚串口电路用到的管脚管脚对电压的要求

PinNumberPinNamePinNumberPinNameS3C2440A芯片的管脚对电压要求不同,可以分为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 实现USB方案的硬件电路

2.1 USB接口电路

由于S3C2440A内部集成了USB控制器,所以接口电路比较简单[5],其原理如图1所示。

图1 USB接口电路原理图

2.2 串口电路

串口在该设计中的作用是通过计算机加载USB驱动程序,原理如图2所示。

2.3 电源电路

由于S3C2440A芯片的管脚对电压提出了不同要求,所以需要完成电源的变压[6],其原理如图3所示。

3 驱动程序的研究

按USB接口,其设备结构可分为USB Host(主机)和USB Device(外部设备)。USB主机控制USB设备进行通信,而主机与主机之间,或USB设备与USB设备之间是不能通信的。

3.1 USB主机

USB主机的功能通常包含以下几个部分:验证USB设备是否安插好或拔除;控制USB主机与设备两者中的数据流;返回USB主机的所显状态[7]。

USB系统软件由以下3个部分组成[8]:主机控制器驱动(HCD)、USB驱动(USBD)、主机软件(Host Software)。主机控制器所具备的功能如表2所示。HCD和USBD包含基于不同抽象层次的软件接口,两者以一定的方式协同完成任务,用以实现USB系统的功能。它们的任务差别没有具体定义,然而HCD要具备的一项功能就是必须支持多种不同主机控制器芯片。在一些操作系统中,当系统必须实现某些基本功能时,可由Host Software实现。

表2 主机控制器功能

功能描 述

状态处理作为主机的一部分,主机控制器报告和管理它的状态

串行化与反串行化对于从主机输出的数据,主机控制器协议及数据信息从它原始形状转化为自位流。对主机接收的数据进行反操作

帧产生以每1 ms为单位产生SOF标志包

数据处理主机控制器处理输入和输出数据的请求

协议引擎主机控制器支持USB具体规定的协议

传输差错控制所有的主机控制器在发现和处理已定义的错误时展现相似的行为

远程唤醒所有的主机控制器都应具有将总线置于挂起状态及在远程唤醒事件下重新启动的能力

集线器集线器提供了标准的将多个USB设备连接到主机控制器的功能

主机系统接口主机控制器在主机系统控制器之间建立一个高速的数据通道

3.2 USB传输类型

USB定义了4种传送类型:控制传送、同步传送、中断传送、批传送。其中,控制传送是指可靠的、非周期性的、突发的,并由主机客户软件所发起的通信,主要应用于控制命令和状态信息的传送;同步传送是指在主机和设备之间周期性的、连续的通信,一般用于传送时实信息,这种类型保留了将时间概念包含于数据的能力,但传送并不一定很紧急;中断传送是指少量数据的、低速的、周期的传送;批传送是指非周期的、大量的、可靠的传送,其典型应用在于传送那些可以利用带宽的数据。

3.3 USB 设备请求

USB设备应通过缺省控制管道(Default Control Pipe)响应来自主机的请求命令。这些请求是通过使用控制传输来完成的。请求及请求的参数通过Setup包发向设备,由主机负责设置Setup包内的每个域的值。USB设备请求包含的请求类型有三种:标准、厂商和设备类。标准请求用来完成设备的枚举过程;厂商请求用来完成使用者自己定义的请求;设备类请求指的是某些特定的USB设备类所传输出的请求,例如打印机类就属于这一类。设备请求要求有严格的定义,包含的内容有类型、设备请求、值、索引和长度。

图2 串口电路原理图

图3 电源变化电路原理图

3.4 USB驱动程序结构

S3C2440A芯片支持USB1.1协议和USB 2.0协议。该设计是针对USB Host(主机,A型),并基于USB 1.1协议编写的。程序结构和数据传输的流向如图4所示。

驱动程序的编写主要分为以下几个部分考虑:硬件提取层、中断服务程序、标准设备请求和主循环。硬件提取层实现的是S3C2440A对I/O端口直接的读写操作;中断服务程序处理各种中断,包括总线任务上的请求;标准设备请求完成主机送来的各种标准请求,用于完成各种枚举请求;而主循环则负责完成前台的数据采集等工作,所有的任务结束后都要回到主循环上去。

图4 USB驱动程序结构和数据传输流向

4 结 语

该设计采用三星公司ARM9的S3C2440A芯片作为CPU,比原来基于单片机的模式,电路简单,容易可靠地实现嵌入式终端的USB接口功能。在调试中,用到的嵌入式开发板GEC2440A套件还提供了串口工具DNW。用这一工具可以检测驱动程序的正确与否,如:程序编写无误,则DNW串口会提示“USB IS CONNECT”。由于S3C2440A芯片功能丰富,如处理器可提高运算速度,LCD可人机交互,网口可连接因特网,所以开发出的嵌入式终端不但可提升整体性能,还为日后的应用奠定了基础[9-11]。

参考文献

[1]杨静,文必洋.基于USB 2.0的雷达数据传输接口设计[J].微计算机信息,2008(3):270-273.

[2]张洪,董秀成.基于AVR 单片机的通用USB接口模块设计[J].国外电子元器件,2008(5):18-21.

[3]虞致国,魏敬和.基于USB接口的ARM 嵌入式仿真器的设计[J].电子器件,2008(8):1 294-1 299.

[4]张明扬,邓万鹏.基于Linux 系统的USB 主机接口设计与实现[J].沈阳师范大学学报,2008(3):333-336.

[5]胡小军,张爱成.USB接口开发技术[M].西安:西安电子科技大学出版社,2005.

[6]陈黎明,陈长欣.嵌入式故障注入系统的USB接口设计与实现[J].仪表技术,2008(7):42-44.

[7]江海航.嵌入式DSP系统USB通信固件的设计与实现[J].计算机与数字工程,2008(7):196-199.

[8]周洪建,蔡桂艳.一种实现USB随机中断传输的设备驱动程序设计方法[J].计算机应用与软件,2008(8):181-183.

[9]张萌,曹建.基于USB接口的全自动热量计的设计及实现[J].仪器仪表学报,2008(6):1 295-1 299.

[10]徐艳春,杨春玲.微弱信号采集系统的USB实现[J].微计算机信息,2008,24(3):161-164.

[11]曾一,.一种USB接口便携式多模式多通道A/D数据采集系统[J].电测与仪表,2008(7):44-46.

作者简介 王 平 男,1955年出生,高级工程师,硕士生导师,福建省电子学会理事。研究领域为嵌入式系统、通信网络新技术,无线传感器网络。

施文灶 男,1982年出生, 讲师。研究领域为嵌入式系统、图像传输技术。

黄 男,1970年出生,副教授。研究领域为机器人,神经网络。

江华丽 女,1985年出生,硕士研究生。研究领域为图像信号处理与多媒体通信网络。

上一篇:图像去噪的新型自适应混合滤波算法 下一篇:基于OpenGL的分形植物模拟