TB054
简介USB描述符
与游戏端口为USB游戏手柄转换器示例
作者:
雷斯顿康迪特
微芯片技术公司
USB是一种主从协议。换句话说,在
主机(即PC)将所有的通信来往
的外围设备。外围设备不发送信息
在主机除非主机请求的信息。如何
没有外设告诉主机它是什么类型的设备
当它第一次连接到主机?答案就在于
在如下面所描述的利用“描述符”,
部分。
介绍
本技术简报演示的翻译
使用游戏端口游戏垫到USB游戏垫
PIC16C765 , Microchip的低速USB的PICmicro
微控制器(MCU ) 。本技术的目的
附图不仅显示出游戏垫的翻译
到USB接口,但也可以了解如何成功地开发
USB外设使用PIC16C765 。一种理解
站立的USB描述符是基础
成功的USB外设的开发。
注意:
本技术简介是第一个系列
五大技术简介。该系列产品是
意味着开发人员熟悉的USB 。
对于USB的最佳理解,阅读
为了内裤: TB054 , TB055 , TB056 ,
TB057和TB058 。
描述子
一般
USB描述符往往是最大的绊脚石
对于最近已经推出开发者
USB 。描述的目的是进行通信的
特定外围设备到主机的身份。为
例如,在本技术简报的游戏键盘通信
凯茨到主机,它是一个两轴,六键游戏
垫,其通过端点1所述的装置将数据发送到主机
不自愿此信息到主机,而
主机请求这个信息,检测到时
新装置已经连接到USB总线。如
之前所提到的,方法,其中所述主机
请求和接收设备的描述符被称为
“枚举”。
周边有多个描述符。每一个新的
描述符逐步提供主机详细信
息有关的外围设备或其他有关描述
遵循。描述符可以被认为是一个分层结构。
第一描述符,设备描述符,是非常gen-
ERAL和传送有关的最基本的信息
装置。下一个描述符是更具体的,等等,
直到主机终于获得所有需要的信息
与该设备有效地进行通信。
游戏手柄属于人机接口设备下
(HID)类。鼠标,键盘和LED显示器都
的落入HID类的其他设备的实例。
HID类的独特之处在于驱动支持被抑制
由Windows自动合股
( Windows 98第二
版及更新版本)和Macintosh
操作系
TEMS 。这些操作系统将自定义生成一个
每当他们发现一个新的HID外设的驱动程序。该
驱动器的构造的数据格式传送中
从该装置接收到的报告描述符。人员开发
HID类规范中展中是最简单的
的方式来学习如何USB工作,因为开发商
不必与写驱动器在关注
主持人结束。
USB基础知识
所有的USB通信采用帧的发送形式
通过USB总线。帧是1毫秒递增
ments ,其中宿主调度哪些设备最终
指出,将与沟通。在计划的时间,
主机和设备发送另一个请求,或
数据,在分组的形式,其长度受限
以8个字节为低速设备。所有的数据包
送,并通过端点接收到该设备。最终
点缓冲区,其中一个设备或者把数据
等待机会被发送到主机,或在数据
从主机接收被存储,直到该装置具有一个
机会来访问数据,并利用它。低速
设备具有可通过被配置在两个端点
该设备作为IN或OUT (相对于所述主机) 。
这些端点1和2端点0被保留
对于主机和设备之间的控制转移。这
是双向的途径,通过该主机和
设备共享管理数据。枚举是
方法,其中的外围描述的是什么类型的
设备是到主机,并通过端点0的出现。
2004年Microchip的科技公司
DS91054C第1页
TB054
游戏键盘的报告
该设备,配置,接口, HID和端点
描述符是相对简单的创建。为
这些描述符,所有需要的是创造
根据在USB或定义描述符
HID规范。报告描述符,但是,是
并不简单。有一个报告,没有固定的格式
描述符,因为它描述了数据格式
外围设备,它可以是从一个外设非常不同
ERAL到另一个地方。最好的方式来学习如何创建一个
报告描述符是穿行示例报告
已被证明的描述符一起工作。例1
显示了报告描述符的游戏键盘。
实施例1:
0x05, 0x01
0x09, 0x05
0xA1 ,为0x01
0x09, 0x01
0xA1 ,为0x00
0x09, 0x30
0x09, 0x31
0x15, 0x00
USB游戏键盘报告描述符
; USAGE_PAGE (通用桌面)
;用法(手柄)
; COLLECTION (应用程序)
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
用法(指针)
COLLECTION (物理)
用法( X)
用法( Y)
LOGICAL_MINIMUM (0)
LOGICAL_MAXIMUM (255)
REPORT_SIZE ( 8 )
REPORT_COUNT (2)
输入(数据,无功,ABS )
END_COLLECTION
USAGE_PAGE (按钮)
USAGE_MINIMUM (按钮1 )
USAGE_MAXIMUM (按钮6 )
LOGICAL_MINIMUM (0)
LOGICAL_MAXIMUM (1)
REPORT_SIZE (1)
REPORT_COUNT ( 6 )
输入(数据,无功,ABS )
REPORT_COUNT (2)
INPUT (恒定,无功,ABS )
0X26 ,为0xFF , 0×00
0x75, 0x08
0x95, 0x02
0x81, 0x02
0xC0
0x05, 0x09
0x19, 0x01
0x29, 0x06
0x15, 0x00
0x25, 0x01
0x75, 0x01
0x95, 0x06
0x81, 0x02
0x95, 0x02
0x81, 0x03
0xC5
; END_COLLECTION
2004年Microchip的科技公司
DS91054C第3页
TB054
思想着手开始制定
该描述符
以下是思维过程制定本
描述符。请参阅“ HID
用法表“
一
使用页面和用法的完整列表。 (见
“参考”
在这个技术简介的末尾) 。
要做的第一件事就是告诉主机,该设备是
游戏垫。要做到这一点,有必要申报
"USAGE (游戏手柄) "或"0x09 , 0x05"数值。不过,
这样,相应的页面, “游戏前
垫“上列出的使用必须被引用。还要寻
荷兰国际集团的游戏垫起来的HID用法表显示,
适当的用法页是通用桌面。一旦
这种用法页声明,使用游戏键盘
指定的。当主机收到此信息时,它知道
该设备添加到的游戏控制器类其
设备列表。其结果是,该游戏垫可以频率标
使用游戏控制器校准程序校准
提供与主机的操作系统。
所有的报告描述符必须有一个应用程序Collec-
化。该系列指定I / O的来源
装置和所述的I / O被报告给格式
主机。后面的应用中使用的项目协作
经文指定集合的一般功能。
在这种情况下,下面的用法是指针。指针
是通用桌面使用页面中的用法。这是
没有必要指定通用桌面使用
页面了。
注意:
用量信息页必须仅指定
下面的用法是不上
现有的用量信息页。
游戏键盘有六个按钮。物理集合
可以作出和所有的按钮列为用法
(即,使用{键1 } , {使用按钮2 }等)类似的
什么是与X和Y轴进行。然而,一个
更简单的方法来使按钮的列表是使用用法
按钮的最小和最大使用项目
使用页。每个按钮都占了一个逻辑位为
反映了:
逻辑最小,
逻辑最大值,
报告尺寸
报告计数是6 ,对应于该数
按钮。这6位然后被输入作为与所述数据
输入项目。发送到USB总线数据必须被发送,
全字节的块。这六个按钮报告位两种
位短字节。因此,两个一报告计数是
指定与这些位被输入作为与常量
输入项目。整个应用程序集被关闭
与最终集合项目。
履行
五金
本技术简报中使用的特定的游戏垫
在Dexxa
八按钮( 6实际所看到的
主机)游戏键盘。该游戏垫连接到标
在PC上准游戏端口。一台PC游戏端口有四个引脚
指定模拟输入和四个引脚为数字
输入。在D-垫的每个轴使用模拟引脚连接到
发送它的位置到主机。其余的模拟和
数字引脚由六个游戏键盘按键使用。
虽然两个按钮都连接到模拟
销其输入是数字的,或高或低。该
下面的线路图显示的PICmicro如何
有线的游戏端口和PC之间的转换。
对游戏垫的D-板控制两个轴X和Y.
因为每个轴具有相同的特性
数据报告格式条款,这些轴可以分组
成的集合。在X轴和Y轴是物理
参数;因此,集合类
物理。
后集合被初始化,用法X和Y为
声明。的D-板的各轴被连接到一
电位器上的游戏垫内。当D -垫是
按压时,电位变化的电压上的电线
连接的A至D于所述端口中的一个
PIC16C765 。因此, PICmicro单片机将看到一个数字
值由每个轴的范围来为0255 。
逻辑最小和逻辑最大corre-
有反应到该范围内。需要报告val-八位
在此范围内的UE ,报告大小反映了这一数字。
需要两个报告,一个用于在X轴和一个用于
Y轴。该报告数反映了这一数字。
这两个字节,则指定为数据输入到
主机与输入(数据,变量,绝对) 。最后,
集合是封闭端收集的项目。
DS91054C第4页
2004年Microchip的科技公司
TB054
图1:
USB游戏手柄电路图
(1)
R2
100
A
B
C
D
E
F
G
H
2
3
4
5
19
20
21
22
11,32
PIC16C765
RA0
RA1
RA2
RA3
RD0
RD1
RD2
RD3
V
DD
V
SS
D+
D-
R1
1.5 k
V
USB
R4 1千
C5
C6
C7
C13
C14
C15
C21
C22
V
SS
注1 :
2:
0.1
F
0.1
F
0.1
F
0.1
F
0.1
F
0.1
F
0.1
F
0.1
F
A
B
C
D
E
F
G
H
R5 51千欧
V
SS
V
DD
C3
200 nF的
V
SS
V
DD
C4
0.1
F
USB连接线
主办
XTAL
6 MHz的C2
(2)
C1
(2)
游戏垫
按钮F
按钮E
Y轴
X轴
按钮
按钮B
按钮C
按钮D.
Microchip的PICDEM USB板被用于开发USB游戏手柄。这款主板拥有所有的外围电路
必要的地方。
根据晶体负载电容选择C1和C2的值。
从图1中可以看出,模拟引脚具有
几个外部组件之间的博弈添加
垫和的PICmicro ,即两个电阻器和一个
电容器的每个引脚。这样做的原因电路茎
从路模拟引脚是由最初读
PC 。 PC机将清除绑到地电容的
结尾,然后时间过了多长时间的电容
充电。该电容会充电的速度亲
portional通过的一个轴而变化的电阻
操纵杆,例如。这是传统的技术,是
使用的PICmicro与模拟 - 在不需要时
数字转换器。其结果是,在前面提到的-
电路被放置到位,以获得干净的
从D-垫模拟输出。该电路不
所需要的按钮E和F ,因为它们是数字,但
已落实到位,使该图将支持其它
游戏手柄。
软件
Microchip的USB支持固件提供了一个基金会
重刑创建USB游戏键盘固件。该律师行
洁具提供了一个名为可链接的文件
ch9_usb.asm,
包括大多数的所描述的功能
USB规范的第9章, 1.1版。还包括
与此固件文件
hidclass.asm 。
此文件
实现了在“ HID描述的功能
设备
类定义“ 。
这两个文件没有被链接
任何更改到USB游戏垫项目。两
剩下的程序集文件包含在第9章
USB固件,
descript.asm
和
MAIN.ASM ,
为
改变来实现游戏手柄的转换。
该USB支持固件有一个光标示范
掺入到它。文件
descript.asm
包含
必要为示范的描述符
正确枚举。要将此文件转换为游戏
垫应用,光标示范描述符
除去并与游戏垫更换
描述符。
MAIN.ASM
被改写为遏制
主程序为游戏垫的转换。主
程序流程示于图2 。
2004年Microchip的科技公司
DS91054C第5页