打印

PSoc5实现USB鼠标

[复制链接]
1044|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这是一个例程,分享下
沙发
peace555|  楼主 | 2015-6-29 17:02 | 只看该作者
目前,计算机上的RS232和PS2端口绝大多数都被USB
端口取代。而且,越来越多的USB设备出现在市场上。
对USB设备的建立、配置和使用步骤,是USB设备设计者
比较头疼的事情。但实际上USB设备是很容易配置和使
用的。人体接口设备(Human Interface Device, HID)
是一种和USB连接的简单接口,有很多令人感兴趣的应
用。

在日常生活中,经常见到HID的应用,典型的是和
计算机连接的键盘和鼠标。正如HID这个名字所描述的那
样,它是一个设备,用来在人和设备(计算机)之间创建
一个接口。由接口描述符实现将一个设备定义成HID。
描述符以结构化的形式提供了,连接到主机设备的相
关信息。
        当把一个USB设备插入计算机时,计算机(主机)通
过USB描述符表要求设备的相关信息。通过接口描述符,
计算机知道所连接的设备是HID。
       很多时候,主机要求一个设备所搜集数据的数据报告
。为了理解这些信息,一个报告描述符用来定义HID报告
内的数据格式,以及如何使用这些数据。
下面给出的一个鼠标的工程,在这个工程中,设备报
告按键和X/Y移动的信息。这个信息以主机能理解和使用
的格式传递给主机。
        在报告描述符中,声明了鼠标数据的结构和格式。
        主机周期性的轮询设备数据;如果设备没有准备好,
它不响应(NAK)主机。如果设备准备好,则它响应(
ACK)鼠标,并且通过一个中断类型的传输来传输信息。
基于前面报告描述符所发送的信息,当主机从设备接收到
数据,它理解数据的含义和如何使用数据。

使用特权

评论回复
板凳
peace555|  楼主 | 2015-6-29 17:07 | 只看该作者
这个过程类似于“老板”和“雇员”。“雇员”(设
备)告诉他的“老板”(主机),他将以特定格式的报告
,发布他所有的“发现”。这个报告也包含所有要求的信
息,这些信息用于解数据,并处理它。所以,在一个指定
的时间,比如每10ms,“老板”检查报告是否准备好。如
果报告准备好,则“雇员”响应(ACK)“老板”,并且
向“老板”发送一个报告,这个报告的格式是先前讨论的
格式。由于双方前期讨论了格式,“老板”准确的知道如
何处理数据。如果没有准备好报告,则“雇员”不响应“
老板”,老板转向下一个“雇员”。由于在报告描述符中
包含了很多的信息,下面将详细介绍这个报告描述符。

使用特权

评论回复
地板
peace555|  楼主 | 2015-6-29 17:09 | 只看该作者
HID报告描述符的一个重要的特性是,对于一个相同
的设备有几百种方法建立和组织报告。它能包含设备所支
持的各种特性的信息,指定了设备数据的组织结构,识别
数据是否有一个指数(比如10-3,103),或者指定数据所
跟的单位,比如:大小、时间、电流等。
        最后,报告描述符的目的是报告主机所希望接收和发
送的设备和数据信息。报告描述符可以复杂也可以非常简
单。在很多情况下,并不能区分出复杂描述符设备和简单
描述符设备的区别。虽然表面上看上去非常令人“恐惧”,但是“本质”是很容易理解的。一旦理解了报告描述
符,则很容易的创建描述符,并且开始设计自己的HID。

使用特权

评论回复
5
peace555|  楼主 | 2015-6-29 17:11 | 只看该作者
理解HID报告最容
易的方法是分开查看其
中的内容。
       本章给出的例子是
建立一个三按键的鼠标
。右图给出了三按键
鼠标的报告描述符。

图片11.png (11.2 KB )

图片11.png

使用特权

评论回复
6
peace555|  楼主 | 2015-6-29 17:14 | 只看该作者
这个报告看上去很复杂,但是非常直观。下面将这个
报告进行分解。当思考鼠标和它所读取得信息,你将思考
按键和光标移动。光标是由X和Y值组成。按键是由按下/
释放信息构成。这就是说描述符有一部分用于按键。另一
部分用于光标。
下图给出了
描述符的详细说明
。下面将看看描述
符表内的每一行的
目的。通过理解每
一行,来看每一行
属于按键还是光标
移动,以及它对数
据的影响。

图片12.png (16.48 KB )

图片12.png

使用特权

评论回复
7
peace555|  楼主 | 2015-6-29 17:14 | 只看该作者
在HID报告描述符中,这里有多个输入条目(Input)
。每个输入条目是一个数据位域,用于告诉逐句将要从鼠
标发送的数据。图11.8,11.9和11.10给出了输入条目的配
置和每个位域的设置。后面将详细讨论这些位域的设置。

使用特权

评论回复
8
peace555|  楼主 | 2015-6-29 17:16 | 只看该作者
图11.8给出了输入条目的设置,该设置用于鼠标按键的3位数据。

图片13.png (88.22 KB )

图片13.png

使用特权

评论回复
9
peace555|  楼主 | 2015-6-29 17:17 | 只看该作者
如图11.9所示,为了保留字节剩下的5位,在鼠标按键的高5位补零。由于不想改变数据,因此除了设置比特0位常数外,使用相同的输入条目设置作为按键的设置。

图片14.png (78.09 KB )

图片14.png

使用特权

评论回复
10
peace555|  楼主 | 2015-6-29 17:18 | 只看该作者
下面将更深入的分析报告描述符,一个报告描述符有
下面的三种条目类型:
主条目类型
全局条目类型
本地条目类型
      区分这些条目类型和一个条目是非常重要的。在前面
所给出的三种条目类型下,有很多不同的条目。因为条目
描述符可能非常复杂,在这里只讨论通用的条目。

使用特权

评论回复
11
peace555|  楼主 | 2015-6-29 17:18 | 只看该作者
   1.主条目
      主条目用于定义数据所包含的东西或者将数据分组。主条目中有5种不同的条目,包括:Input、Output、Feature、Collection和End Collection。Input、Output和Feature用于定义条目Collection和End Collection用于分组目的。

使用特权

评论回复
12
peace555|  楼主 | 2015-6-29 17:19 | 只看该作者
一个Input条目指设备发送到主机的数据(比如:点
击鼠标按键);
         一个Ouput条目指主机发送设备的数据(比如:键盘
上的Caps Lock LED灯)。
         一个Feature条目是一个信息,这个信息是主机可以发送到设备,并且可以从设备读回。Feature条目包含设备配置信息,修改这个信息将改变设备的行为。PC接口应用程序经常使用Feature报告,在GUI上点击按键将修改设备的操作。
       Collection用于将Input、Output和Feature条目分组。

在HID规范中,有三种不同类型预定义的集合(
Collection),包括:
物理(Physical) ;
应用(Application);
逻辑(Logic);

使用特权

评论回复
13
w_fly| | 2015-11-19 14:05 | 只看该作者
赞赞赞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

620

帖子

2

粉丝