USB设计

2006-08-15 10:43:23来源:中国电子技术信息网 作者:dvbcn热度:
USB设计分硬件和软件两部分。硬件包括电路的设计和固件程序(Firmware)的编写,通常用汇编或C语言;软件分USB设备驱动程序和USB客户软件。
1.硬件
根据设备的需求和USB芯片的性能,设计出相应的电路在USB开发器的仿真板上进行仿真实验。固件的编写可采用分块的方法,比如Main模块、Interurrupt模块、Dtable模块、Vector模块、Timer模块、Declare模块等。通过编译进行连接以.hex文件的格式写到芯片里面去。仿真成功后即可直接应用于设备。
2.软件
(1)USB驱动程序接口

Windows98及2000通过允许USB设备驱动程序栈通信来支持USB。在USB驱动程序和USB驱动程序栈之间是USB驱动程序接口(USBDI),这种通信以WDM结构实现的。Usbhub.sys是USB集线器驱动程序。当Usbd.sys枚举每个USB主机控制器中的根结点集线器时被加载。Usbd.sys是类USB驱动程序。Uhcd.sys(通用主机控制驱动程序)以及Ohcd.sys(开放主机控制驱动程序)是USB主机控制器驱动程序。Hidclass.sys接收和发送到小驱动程序的HID报告。Hidusb.sys通过USB接收和发送HID报告。当检测到USB总线时,PCI枚举器加载USB栈驱动程序部分,并加载至少一个核心组件。
(2) USB驱动程序和USB客户程序
USB驱动程序的编写与硬件相关,属于核心模式。微软的DDK在这方面提供了较为详细的说明。比起VxD,WDM在硬件方面层次更为清楚和直观些。下面是一段驱动程序的入口函数:
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
NTSTATUS status = STATUS_SUCCESS;
// Export other driver entry points...
DriverObject->DriverUnload = USBUnload;
DriverObject->MajorFunction[IRP_MJ_CREATE] = USBCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = USBClose;
DriverObject->MajorFunction[IRP_MJ_READ] = USBRead;
DriverObject->MajorFunction[IRP_MJ_WRITE] = USBWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = USBDeviceControl;
RegisterForPnpNotification(DriverObject);
return status;
}
USB的客户程序实际上是对客户端设备映像的操作,这些映像由USBD或HCD产生,属于用户模式。在DDK中存在着一组叫做USBDI函数的API函数集,该函数集包括了传输函数、管道(Pipe)函数、设备配置函数及其他函数。应用这些函数可编写支持任何USB兼容设备的USB驱动程序和客户程序。其中,管道(Pipe)是USB设备驱动程序建立的逻辑通信通道。
3.设计例程
笔者采用了原Anchor公司的EZ-USB AN2131-DK001,调试软件采用KeilPk51, 基于游戏操纵杆采用C语言和汇编语言相结合,创建一个关于HID设备的固件的工程,对其编译成功后进行连接/定位,用调试器调试后以16进制的形式加载在开发系统中进行仿真。控制方式上以中断方式为主,查询间隔为无穷大。由于是HID设备,不必去写相应的驱动程序,操作系统已经有了HID和Audio的驱动。
试验电路采用Anchor芯片的端口A进行LED的切换。
在主机方面,用VisualC++6.0写了一个应用程序,其访问设备通过GPD(General-purpose)和芯片进行通信。主要是以下三个函数:
·SetupDiGetClassDevs()
·SetupDiEnumDeviceInterfaces()
·SetupDiGetDeviceInterfaceDetail()
在固件方面,开发系统有两个固件文件PERIPH.C和FW.C包含了芯片的控制代码,笔者主要写了一些外设的查询代码。大部分情况下,采用汇编语言写固件要好一些。
将最后的编译好的.hex文件写到仿真板的EEPROM上进行测试,
达到预定的效果,为笔者下一步进行虚拟现实中的力反馈设备的研究提供了大量的经验基础。
USB设计是非常艰幸的一件事,需要设计者具有良好的软件和硬件知识。通常的设计周期为1年左右。

责任编辑:DVBCN编辑部

为您推荐

USB 2.0标准简介

一、什么是USB?USB是英文UniversalSerialBus的缩写,中文含义是“通用串行总线”。它是一种应用在PC领域的新型接口技术。早在1995年,就已经有PC机带有USB接口了,但由于缺乏软件及硬件设备的支持,这些PC机的USB接口都闲置未用。1998年后,随着微软在Windows98中内置了对USB接口的支持模块,加上USB设备的日渐增多,USB接口才逐步走进了实用阶段。这几年,随着大量支持USB的个人电脑的普及,USB逐步成为PC机的标准接口已经是大势所趋。在主机(host)端,最新推出的PC机几乎100%支持USB;而在外设(device)端,使用USB接口的设备也与日俱增,例

USB2.0的现状与未来

ChinaByte特稿:USB2.0作为市场的主流产品,已经得到普遍的认可与应用,从PC端到消费电子市场应用领域已得到更多的支持;其广阔的应用前景与高速的整合效应已成为新世代的产业趋势。扬智科技16年来一直致力于IC的设计与开发,并积累了多年的经验与完整IP。公司近期已经在USB2.0的应用领域形成了完整的产品体系:扬智科技睛2002年10月推出的USB2.0整合式连网控制芯片M5632,大大提升计算机系统的联机应用效率,加速可携式终端系统产品与桌上型计算机、或网络系统间的多媒体应传输分享的便利性今年年初,M5632成为全球独家首获U

USB2.0控制器CY7C68013特点与应用

摘要:介绍USB2.0协议以及Cypress公司推出的USB2.0控制器CY7C68013。USB2.0协议提供480Mb/s的传输速度,向下完全兼容流行的USB1.1协议。CY7C68013是USB2.0的完整解决方案。该芯片包括带8.5KB片上RAM的高速8051单片机、4KBFIFO存储器以及通用可编程接口(GPIF)、串行接口引擎(SIE)和USB2.0收发器,无需外加芯片即可完成高速USB传输,性价比较高。关键词:USB2.0高速模式端点本刊2002年到2、3期已对EZ-USB单片机的介绍。本文在此只重点介绍USB2.0的特殊之处以及芯片CY7C68013的主要特点。*1USB2.0

采用USB OTG控制与桥接芯片降低功耗和缩短产品上市时间

越来越多的非PC便携式设备需要扮演USB宿主与USB外设双重角色,为实现这种应用模式,必须将OTG宿主功能嵌入到这些设备中。要达到这个目标,可将USB宿主或OTGIP嵌入至宿主CPU中,或重新设计系统的PCB,并加入USBOTG芯片功能(USBOTG控制芯片或USBOTG桥接芯片)。如今的移动运算与通讯设备大都配备USB外设连接功能,可与USB宿主(通常为PC)进行通讯。但根据USB规范,两个外设无法直接相互通讯,这也意味着目前大多数USB系统必须配合PC才能使用。值得注意的是USB规范并没有强制性要求使用这种以PC为中心的模式。为突破上述限制,业界制定出USBOntheGo(OTG)规范,让