基于PDIUSBD12的USB接口设计应用研究
2010-11-07刘彦黔南民族师范学院计算机科学系558000
刘彦 黔南民族师范学院计算机科学系 558000
基于PDIUSBD12的USB接口设计应用研究
刘彦 黔南民族师范学院计算机科学系 558000
USB设备的广泛使用,使得USB接口的设计与开发越来越重要,PHILIPS公司的USB接口控制芯片PDIUSBD12性价比高简单易用,是较为理想的USB接口设计开发芯片。文章主要从主机与PDIUSBD12之间的数据通信过程的层面来介绍USB设备的设计开发。
USB;PDIUSBD12;端点;描述符
1.引言
USB以其传输速度快、可靠性高、易于扩展、功耗低等优点已被广泛地应用在计算机外设中,已成为计算机与外设通信的主流接口。而PHILIPS公司的PDIUSBD12芯片以其价格便宜、接口方便、可靠性高等特点较为广泛的在USB设备接口系统中被选用。PDIUSBD12芯片是纯粹的USB接口芯片,仅负责处理USB的通信,设计时还必须要选用一个MCU来进行协议处理和数据交换。
2.USB设备的插入检测
USB主机轮流查询各个USB端口,当USB设备插入USB端口时由PDIUSBD12内部集成的上拉电阻使主机检测到D+与D-之间有电压差,就认为有新的USB设置接入。
3.USB设备的枚举
USB枚举指的是USB主机从USB设备读取USB的各种描述符信息,从而知道是什么设备,如何进行通信等,然后根据这些信息来加载合适的驱动程序。
3.1 获取部分设备描述符请求
主机检测到有新的USB设置接入等待100ms后向USB设备发出复位请求,USB设备接到复位请求后,设置其地址为0,并产生一个外部中断信号通知主机,新接入的USB可以地址0来进行通信,然后USB主机向地址为0的设备的端点0发送获取设备描述符请求,设备收到该请求后,按固定格式返回一个端点0所支持的最大数据包的设备描述符给主机。由于PDIUSBD12的端点0只有16个字节(在所获取的设备描述符的第8个字节处可看到PDIUSBD12端点0的最大包长),而标准的设备描述符为18字节,这一次的请求只能获取部分(16个字节)设备描述符。
3.2 设置USB设备地址
在第一次复位并获取部分设备描述符后,USB主机再对设备复位一次,并往地址0的端点0发出一个SET_ADDRESS设置地址的请求(见表1),该地址是由USB主机负责分配并且是唯一的。USB设备在收到该地址后,返回0长度的状态包,主机收到状态包,就会返回一个应答包ACK给设备。设备在收到这个ACK之后,就可以启用新的地址了。这样设备就分配到了一个唯一的设备地址,以后主机就可以通过它来进行访问该设备了。
表1 SET_ADDRESS请求的结构
3.3 获取完整设备描述符请求
在USB设备启用新地址后,USB主机重新向新地址发出获取设备描述符的请求,这一次主机将分两次从PDIUSBD12的端点0中获取完整的18个字节(16+2)的设备描述符,从而获知USB设备的基础属性,如支持的传输数据长度、所用USB协议版本、设备版本号、PID、VID等,设备描述符的结构见表2。
3.4 获取配置描述符请求
在获取完整的设备描述符之后,主机就会发送一个试探性的GET_CONFIGURATION获取配置描述符的请求,USB设备收到该请求后就返回9字节的配置描述符(其结构见表3)。
3.5 获取配置描述符集合请求
在第一次获取配置描述符后,就可以知道配置描述符集合的总长度,然后再发一次GET_CONFIGURATION请求,这时主机将分三次从PDIUSBD12的端点0中获取完整的34个字节(16+16+2)的配置描述符集合——9字节的配置描述符、9字节的接口描述符、9字节的HID描述符、7字节的端点描述符。
3.6 获取其它描述符
在获取了必须的设备描述符和配置描述符集合后,还可选择是否获取字符串描述符和报告描述符。字符串描述符可表述所要显示的设备信息的文字,报告描述符是USB HID设备用来传送数据的,这里不作详细介绍。
完成USB设备的枚举后,主机就能知道USB设备工作方式的各种特性,正式识别USB设备并能与之进行数据通信,就可以自己写测驱动或使用通用驱动与计算机进行通信了。
4.PDIUSBD12驱动程序设计
PDIUSBD12的驱动程序设计主要实现三个功能:(1)初始化PDIUSBD12和与之相连的MCU,包括PDIUSBD12的复位和初始化全局变量;(2)在枚举过程中为每一次的请求(如获取设备描述符请求)编写中断服务程序;(3)用户读/写端点的函数。
5.结束语
USB技术的日益成熟,越来越多的计算机外设使用USB接口,使得USB接口的设计开发显得尤为重要,而设计开发USB接口设备必须对数据的通信过程有深入认识,本文以PDIUSBD12作为USB设备的接口控制芯片详细深入地介绍了主机与USB接口间的数据通信过程,开发者可根据此过程编写相应的服务程序便可完成USB设备的开发。
表2 设备描述符的结构
表3 设备描述符的结构
[1]范晓青,袁中凡,欧协峰.PDIUSBD12的USB接口设计中的应用[J].仪器仪表用户.2009,2.
[2]张安生.PDIUSBD12在USB接口设计中的应用探析[J].现代教育设备.2008,2.
[3]刘荣.圈圈教你玩USB[M].北京航空航天大学出版社.2009.
10.3969/j.issn.1001-8972.2010.09.055
刘彦(1977-),男(仡佬族),贵州都匀,黔南民族师范学院计算机科学系讲师,研究方向为硬件技术。