全速USB控制芯片SL11的应用

分享到:
点击量: 213352

  1 概述

  USB接口近两年在计算机领域得到了迅速的应用。它是一种带宽为1.5 Mb/s~480Mb/s的通用串行总线,主要用于将外设按菊花链的方式连接到微机上,可连接多达127个外围设备,如外部CD-ROM驱动器、打印机、扫描仪、解调器" href="http://www.dz-z.com/product/detail/12481049.html" target="_blank">调制解调器、鼠标和键盘等。而且有可能在不久以后由USB取代所有外设接口。由于利用USB可实现热插拔和即插即用功能,同时它连接简单、灵活性强并可多数据流工作。因此目前不少设备带有USB接口。

  SL11是美国SCANLOGIC公司生产的支持全速传输的USB控制芯片,它符合USB1.1规范并支持上传DMA数据方式。SL11带有4个通道,一个用于控制通道,一个用于DMA传输通道,还有2个通用通道。片内所带的256字节RAM区可分成两个部分,即控制寄存器部分和数据缓冲器部分。数据缓冲部分为3个64字节的缓冲区,其中一个用于控制通道的收发数据缓冲,另两个可以用作其它数据通道的数据缓冲。该器件具有乒乓(PING-PONG)数据传输功能,可以充分利用USB的高速数据传输能力来提高传输速度。SL11可以和任何CPU、DSP相连接。它具有28脚PLCC和48脚LPQFP两种封装形式。图1为其28脚PLCC封装的引脚排列图。

  2 SL11的硬件结构

  SL11中的寄存器可分为两部分,其中一部分为端点寄存器(控制USB事务和数据流),另一部分为USB通用控制寄存器(全局、其它操作的控制和状态信息显示)。

  

 

  SL11可支持4个端点(EP0-3)。其中端点0用来对应缺省控制通道并初始化和操纵配置设备,同时提供设备配置信息的读取、允许USB状态、控制读取和支持控制传输。端点1~3则用于支持块传输(BULK)、等时传输(ISO)、中断传输和DMA传输等。每个端点都具备a SET和b SET两组寄存器。利用这种特点可实现交叠操作(Overlapped),即一组用来传输而另一组为设置参数作准备,每一组寄存器中都含有5个寄存器。

  3 SL11的应用

  图2为SL11与8051的连接图。8051可以直接通过SL11收发数据,也可以利用2个74LS245隔离缓冲后,用DMA方式在RAM和SL11之间进行数据传输。USB接口的操作过程采用中断方式工作。

  3.1 SL11的USB列举和标准命令传输

  USB列举过程是一个很复杂的过程,值得注意的是在列举过程中,HOST将进行两次地址分配。当**次HOST GET-CONFIGURATION要求回送9个字节内容时,若设备强行回送全部的配置信息,那么HOST不再进行二次地址分配也能完成整个设备的列举过程。若按要求回送9个字节的内容,主机接下来还要进行二次地址分配,以重新进行GET-CONFIGURATION,这次主机将要求回送FFH个字节内容。这时作为外设可以回送全部的设备配置信息。主机接着进行列举过程的下一步,直到完成列举。为了与HOST协调,也为了编程的一致性和方便性,采用后一种方式*为可靠。

  对于标准命令请求的中断响应,根据处理过程一般分为三个子程序以分别对应命令的三个阶段,即建立阶段、数据阶段和响应阶段。USB的标准命令很多,下面仅列出一个有代表性的命令GET—DE-SCRIP—TOR—device(获取设备描述符)。

  

 

  

 

  

 

  

 

  

 

  备描述符发送完后便可引入中断,以接收主机发送的空数据包,表示数据阶段结束。程序如下:

  

 

  接收完空数据包后,设备自动回ACK,设为接收状态。程序如下:

  SET—RECEIVE:

  

 

  

 

  3.2 BULK数据收发过程

  在设备列举过程中,通常应配置BULK数据传输管道。一般的配置为:管道1为BULK数据IN;管道2为BULK数据OUT(注:数据的收发是以HOST为参考),下面给出BULK数据的收发流程。

  a.BULK数据IN流程

  利用自定义命令可对端点1进行初始化,并可利用80H开始的64字节数据缓冲区作为端点1的数据缓冲区。图3是端点1的初始化和端点1完成中断的程序流程。

  b.BULK数据OUT流程

  利用自定义命令对端点2进行初始化时,可利用C0H开始的64字节数据缓冲区作为端点2的数据缓冲区。端点2的初始化及中断程序流程如图4所示。