我爱嵌入式系统

当前位置:首页 > 硬件天地 > 详细内容
基于PDIUSBD12芯片的USB接口设计
发布时间:2009/10/28  阅读次数:2224  字体大小: 【】 【】【
随着计算机技术和信息技术的飞速发展,计算机外设种类的增多与有限的主板插槽和端口之间的矛盾日益突出,由Intel,Microsoft等公司联合制定的总线接口规范即通用串行总线(Universal Serial Bus, USB)的出现[1],为解决这一矛盾提出了最好的解决方案。USB具有以下特点:

       (1)有较高的传输速率USB 1.1支持全速和低速2种方式。全速速率为
12 Mb/s,低速速率为1.5 Mb/s;USB 2.0除支持USB 1.1的2种速度方式外,还增加了速率可达480 Mb/s的高速方式。
      
(2)他的使用方便灵活[2]USB支持即插即用和热插拔,他允许在任何时候连接和断开外设,当外设被连接时,系统会自动检测到外设并准备使用。
       (3)他易于扩展通过根集线器可携带127个设备[3],真正实现多个外设共用一个接口。

      
此外,USB还有可靠性高、成本低、功耗小等优点而倍受欢迎。

   目前供于开发USB设备的芯片很多,但主要有2类:一类是带USB接口的微控制器(MCU),这些微控制器有些是从底层专用于USB控制的,比如Cypress半导体公司的CY7C63xxx(低速)、CY7C64013(全速),这类微控制器有自己的系统结构和指令;有些微控制器只是增加了USB接口的通用芯片(基于8051内核),比如Intel公司的8x931,8x930,Cypress半导体公司的EZUSB;另一类是纯粹的USB接口芯片,他需要一个外部微控制器控制,比如朗讯公司的USS820/825,National半导体公司的USBN9602,NetChip公司的NET2888,Philips公司的PDIUSBD11(I2C)和PDIUSBD12(并行接口)。因此在USB设备开发之前必须根据具体要求选用合适的USB接口芯片,以降低开发成本、减少开发时间。本文以PDIUSBD12为USB接口芯片,以ADuC812为控制器完成了USB接口的设计。

1PDIUSBD12芯片和ADuC812芯片简介
1.1PDIUSBD12 简介
   PDIUSBD12是Philips公司推出的一款特点突出的USB接口芯片。该芯片使用8位并行数据线连接到MCU,1位地址线用来区分写命令或读写数据,他支持3个USB端点,1个端点能保存128 B,另2个能保存256 B。

   PDIUSBD12完全遵从USB 1.1协议,他内部集成有串行接口引擎(SIE)、320 b  FIFO存储器、收发器(Transceiver)和电压调节器,其原理框图如图1所示。还有可编程的时钟输出和状态LED输出(GoodLinkTM),可控制的软件连接(SoftConnectTM)以及内部上电复位和低电压复位电路。有2种电源供电方式:内部3.3±0.3 V电源和外部电源(电压范围3.6~5.5 V)。温度范围为-40℃~+85 ℃,采用28脚SSOP封装。

             对外部微控制器没有任何限制,开发者可以选用自己熟悉的MCU来控制。多种中断方式方便于块传输(Bulk)和同步传输(Isochronous),使用块传输方式时的速度可达1 Mb/s,同步传输的速度可达1 Mb/s。他适合大多数USB设备类的设计:图像设备类、大容量存储设备类、通信设备类、打印设备类、人机接口设备类等。

1.2ADuC812简介
   ADuC812是美国AD公司首先投入市场的微处理器,其内部集成了完整的8052内核、1个8通道的12位ADC、2个12位的电压输出DAC,除了8052的256 b RAM外,还有640 b Flash数据存储器,8 kb Flash程序存储器[4]

  
另外该MCU还有看门狗定时器、电源监视器、ADC与数据存储器之间的DMA功能,以及为多处理器接口和I/O扩展提供了32条可编程的I/O线、I2C兼容的SPI和标准UART串行I/O等。他采用52脚PQF封装,大小约为1 cm2

   同时,AD公司还为ADuC812的开发提供了完整的硬件调试工具和开发仿真软件,使得开发变得简单方便。因此,ADuC812由于体积小、功耗低、性价比高而极具诱人的应用前景。


2硬件电路设计
   由PDIUSBD12和ADuC812构成的USB接口电路如图2所示。PDIUSBD12的8位并行数据接入ADuC812 的P0口,地址线A15(P27)作为PDIUSBD12的片选,地址线A14(P2.6)作为PDIUSBD12的命令或数据的选择线。在片选信号有效的前提下(P2.7=0),当P2.6=1时,给PDIUSBD12发命令;当P2.6=0时,给PDIUSBD12写数据或从PDIUSBD12的 Buffer中读数据;因此,地址
0x7FFF发命令,地址0x3FFF读写数据。PDIUSBD12与ADuC812的数据交换采用中断方式(外部中断0)。他的一个输出(GL-N)接LED对其状态进行监控,这个LED在USB被连接时会发光,在进行数据传输时会闪烁,LED常亮或一直不亮说明USB接口有问题。

   USB设备通过4线电缆接入主机或USB Hub,这4线分别是:VCC(总线电源),GND(地线),D+和D-(数据线)。主机通过D+和D-上的电压变化来检测到设备的状态,当没有设备连接到USB端口时,D+和D-线上的下拉电阻就将2条数据线拉到近地,当检测到任一条数据线电压接近VCC,而其他保持近地电压,那么主机就知道该设备已经准备好了。


             主机通过检测是哪一条数据线电压变高来确定设备是全速或低速,当D+数据线高时,就为全速;当D-数据线低时,就为低速。PDIUSBBD12的全速模式通过软连接(SoftConnectTM)在D+上接1个1.5kΩ的上拉电阻。

3固件设计
   当设备连接到主机以后,主机通过给PDIUSBD12的端点0发送包含标准USB请求的控制传输(即Setup包),PDIUSBD12产生一个中断给MCU(INT0),MCU通过读PDIUSBD12的中断寄存器和最后一次传输状态寄存器来对每一个请求作出响应,并通过PDIUSBD12的端点0回送请求信息。主机从返回的信息中读取描述数据,分配和载入一个设备驱动程序并对设备进行配置。设备被配置好后,就可以使用配置中支持的端点来传输数据。这一部分工作由MCU来控制完成,并且该控制程序需要固化在ADuC812的内部ROM中,称之为固件(firmware)。


       PDIUSBD12的端点0有3个状态,其变化关系如图3所示,固件程序必须利用这3种状态关系来正确地处理控制传输。把主机通过PDIUSBD12的端点0给设备发USB请求设为OUTs,通过端点0
接收数据设为INs。MCU处理来自主机的Setup包(Control Out)的软件流程图如图4所示,MCU通过PDIUSBD12的控制端点0给主机发送描述符数据(Control In)的软件流程图如图5所示。PDIUSBD12的描述符数据必须严格遵循USB 1.1协议第九章(Chap9)的规定,描述符数据包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。




       完成PDIUSBD12的固件(Firmware)程序后,在USB设备驱动程序的开发中笔者使用了Jungo公司的WinDriver 5.03,应用程序的开发使用的是VC 6.0。


   该USB接口适合于高速数据采集系统与主机进行数据通信,同时,他也为便携式系统提供了方便、快捷和可靠的接口解决方案。目前,USB已经广泛地应用在PC的外设上,特别是USB 2.0协议推出后,数据传输能力和速度大大提高,使得USB数码相机、数码摄像机能在短时间内完成大容量的图像传输。此外,USB的突出特点使得他必将在更广阔的领域得到应用。

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

51RTOS.com 版权所有  

Copyright 20006-2009 我爱嵌入式 ( 51RTOS.com ) All rights reserved 沪ICP备09080633号