一、 引言
USB是应用在PC领域中的新型接口技术,它由三部分组成:具有USB接口的PC系统,能够支持USB的系统软件和使用USB接口的设备。它的提出是基于采用通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目地。它的最显著优点是支持热插拔,当用户插入USB外设后,计算机能够自动识别接入的外设,而不需要重新启动系统。
二、USB设备硬件结构
为了提高系统的可扩展性,也便于选择高性能的单片机,以实现更多的功能,我们使用较为广泛的Philip公司的单纯的接口芯片PDIUSBD12。下面介绍USB设备硬件的相关情况。
1. PDIUSBD12芯片的内部结构
芯片内部集成SIE、320B的FIFO缓存、收发器以及电压调整电路和终结电阻器,提供2MB/s速率的并行接口,具有全自治本地DMA功能,芯片提供的多重中断模式有利于批量和等时数据传输模式。芯片还提供了可编程时钟、上电复位和低电压复位电路。
2. PDIUSBD12芯片的控制字
D12的控制字分为初始化命令、数据流命令和通用命令三种基本类型。在USB 设备列举过程中使用初始化命令,这些命令用来启动设备、设置地址、端点和工作模式。数据流命令用于管理USB 和单片机之间的数据流。很多数据流是通过一个发给单片机的中断请求开始的。控制器使用数据流命令来存取数据,确认在FIFO中的数据是否有效。通用命令主要在数据传输过程中使用,包括恢复和读取当前帧号。
3. PDIUSBD12 与单片机的连接
以PDIUSBD12和89C52单片机之间的连接如图所示,ALE接到单片机的ALE上,使用地址总线复用方式。A0通过电阻接VCC。VCC接+5V,VOUT3.3通过电容接地,同时脚20RESET_N和脚18DMACK_N接高电平。GND接地。8根数据线接至数据总线。脚11CS_N端接至控制器或译码器的相应端, PDIUSBD12可以通过CS_N端,映射为控制器的任何地址。脚14中断接至控制器的中断线,并用电阻拉高。XTAL1和XTAL2接6MHZ晶振,EOT_N拉高,D-、D+分别接到USB 总线的D-、D+上。在实际产品中,脚21GL_N可接LED显示设备状态。
三、USB设备固件的设计
固件的设计要求非常熟悉USB设备的具体通信步骤以及单片机的指令系统。
1. 固件介绍
PDIUSBD12是一种高速并行总线的USB接口设备,支持本地DMA传输.固件设计的目标是使D12在USB上能达到最快的传输率。外围设备如打印机等使用D12传送大量的数据。这些设备中的CPU忙于处理许多任务象设备控制,数据和图象处理。D12的固件设计成完全的中断驱动模式。当CPU在处理前台任务时,USB传输在后台被处理。这保证了最好的传输率和较好的软件结构,简化了编程和调试。
在后台中断服务程序和前台主程序之间的数据交换是通过标志和数据缓冲区来实现的。例如, D12主要的大量输出端点用一个圆形的数据缓冲区。当D12从USB接收到数据封包,就向CPU产生一个中断请求,CPU会马上执行中断服务程序。在中断服务程序内部,固件把数据封包从D12的内部缓冲区送到圆形缓冲区,然后清除PDIUSBD12的内部缓冲区使它能接收下一个新的数据包。CPU能继续执行当前前台的任务直到完成。然后它返回到主循环,检查圆形缓冲区是否有新的数据,开始另外一个前台任务。
使用这种结构,主函数不关心数据源是来自USB设备,串行口还是并行口。主函数只检查圆形缓冲区是否有新数据需要处理。因此,主函数将目标定为数据处理,而中断服务程序做的工作是以可能的最快速度传送数据。类似地,控制端点在数据封包处理上使用了同样的概念。中断服务程序在数据缓冲区里接收和存储控制传输内容并设置相应的标志寄存器。主函数将发送请求到协议处理程序。一旦所有的标准设备,类,和用户请求在协议处理程序处理了,中断服务程序就能保持它的效率。
2. 固件结构和任务
1) 固件结构
固件由6部分组成,它们如下: 主程序:发送USB设备请求,读测试键,控制发光二极管,处理USB总线事务,等等、标准请求、用户请求、中断服务程序、PDIUSBD12命令接口、硬件层。下面依次简略介绍: