您的位置:首页 > 运维架构 > Linux

浅谈基于ARM与LINUX系统的嵌入式USB主机设计应用案例

2012-03-14 09:59 676 查看
  浅谈基于ARM与LINUX系统的嵌入式USB主机设计应用案例

  1 引言

  通用串行总线(Universal Serial Bus,即USB)是一种新型的高速串行总线,作为一种快速、灵活的总线接口,已经在电子产品中广泛应用。同时人们对USB的期望也越来越高,希望USB能应用在各种计算机领域中。但是,由于USB通信模型是一种Host/Slave主从式结构,经由USB总线进行通信的双方必须有一方在通信控制中担当主机,而两个USB设备之间则无法直接进行基于USB的数据交换。这就大大限制了USB在嵌入式设备中的应用。

  ARM( Advanced RISC Machine)作为一种低功耗、高性能的32位嵌入式微处理器,在中高端嵌入式设备开发中有着广泛的应用。有些ARM芯片的生产厂商在以ARM为内核的微处理器中集成了USB主机控制器,但是,更多的ARM处理器是不带USB主机功能的。解决这一问题的方法就是在需要使用USB设备的嵌入式系统中外扩一片USB主机控制器芯片,使之具有与USB设备进行数据传输的能力。本设计考虑设计一种USB主、从机一体化的外部扩展模块,通过简单地改变跳线,使得ARM核心的嵌入式设备既可作为USB主机,又可以作为USB从机。

  2 总体设计

  由于目前USB从机的硬件及软件方面的开发已经比较成熟,可以直接使用现有的资源,所以本设计主要讨论USB主机功能的实现,目标任务是ARM核心板能够读写外接USB设备,这里选择最常用的U盘,实现读、写U盘数据。

  系统分为ARM核心板和SL811HST扩展板两大部分。核心板是一个由ARM7微处理器、FLASH、SDRAM 、JTAG口和串口组成的最小系统。ARM处理器选用的是三星公司的S3C44B0X,这是一款基于ARM7TDMI内核的微处理器,具有低功耗、高性能的特点。Flash用来存放ucLinux操作系统和一些十分重要的数据,SDRAM则是操作系统和应用程序的运行空间、数据及堆栈区,JTAG口和串口用于下载和调试。扩展板主要由USB主控芯片及其外围电路和USB主、从接口构成。USB主控制芯片选用的是Cypress公司的SL811HST,这是一款双功能的控制芯片,通过设置开关既可以用来做主机又可以做从机。USB接口分为主机接口和从机接口,与主控芯片功能配套。

  3 硬件电路

  Flash存储器是一种可在系统进行电擦写,掉电后信息不丢失的存储器。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。系统中选用一片16位的Flash存储器SST39VF1601,单片存储容量2M,用于存放操作系统和程序代码,系统上电或复位后从此获得第一条指令并开始执行,因此,应将Flash存储器配置到BANK0,即将S3C44B0X的nGCS<0>接到其片选引脚CE#端;将S3C44B0X的OM[1:0]置为10,选择BANK0为16位工作方式。与Flash存储器不同,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,因此,它在系统中主要用作程序的运行空间、数据及堆栈区,系统及用户堆栈、运行数据也都存放在其中。系统中选用一片HY57V641620HG,它的存储容量为8M,工作电压为3.3V,16位数据宽度。1620的CS与S3C44B0X的nGCS6连接。

  JTAG接口主要是用来实现芯片的嵌入式调试及在系统编程的功能,如对Flash器件进行编程等。串口的主要作用是向计算机传输信息,这些信息可以在计算机的超级终端上显示,以便于调试程序时监测程序的内部变量值;在ucLinux操作系统运行时,串口将用来显示它的启动信息和运行状态,向操作系统发送命令对其进行控制也需要通过串口来完成。ARM核心板的硬件组成如图1所示:



  图1 ARM 核心板的构成
  Cypress公司的SL811HST芯片是一款嵌入式的USB主机/从机控制器,它的双功能端口既可作为USB主机又可作为从机来支持全速或低速的USB器件,能够与单片机、DSP和ARM等实现无缝接口。数据线为8位,只需要9根线用于系统的数据通讯,16个内部寄存器,可以对USBHost进行充分的控制。内部多达256字节的RAM,为USB传输建立了足够的缓冲区。它的主要优点有:通过其M/S引脚对主/从模式方便的进行选择;提供全速和低速2种USB总线速度方式;硬件自动产生帧起始包SOF和CRC5/16校验;片上集成了接口引擎(SIE)、单端口根Hub、USB收发器和256B的SRAM,其中0x00~0x0F共16个字节是寄存器区,其余的240B是数据缓冲区。

  SL811HS只有一根地址线A0。A0=1用于设定偏移量,A0=0用于读写数据。读写数据应该首先指定偏移量,然后实现读取时序。A0与ARM的ADDR0相连。nCS和ARM的nGCS2相连,即把SL811HST分配到ARM的外部I/O口02。SL811HST与S3C44B0X的连接如图2所示:

  本文来自: 赛微电子网-电子工程师社区 原文地址:http://www.srvee.com/embed/apply/qtjyARMyLINUXxtdqrsUSBzjsjyyal_66806.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: