河南城建学院本科毕业设计(论文) 引言
第1章 引言
1.1 课题背景
USB 接口是串行总线通信端口,支持即插即用,在计算机领域应用非常广泛。HID设备是一种可以进行人机交互操作的设备,在USB设备中占有重要地位,可以辅助计算机进行各种操作,如常用的电脑摄像头、手写板等设备。一般USB设备的研发非常困难,不但要严格遵守USB协议,还要编写驱动程序。但HID设备使用的是操作系统自带的HID 驱动程序,免去了驱动程序的编写,加快了开发效率,因此一些简单的USB 设备,都喜欢枚举成HID 设备。USB接口不但具有热插拔功能而且还是即插即用的,非常方便。USB接口在理论上最多可以同时连接127个外设,如游戏手柄、手写板、键盘等。USB协议最早在1996年提出,经过多年的发展USB版本到现在已经发展为3.0版本。
从1975年第一个单片机产生后经过四代的发展,目前单片机具有生命周期长、接口内容丰富、运算速度快、低电压低功耗、价格便宜等优点。本次设计中使用的STM32是一款基于Cotex-M3内核的32位处理器。这款处理器具有低成本、高性能的有点,非常适合USB鼠标的设计。
鼠标自从1968年美国科学家研制出来后,基于其方便快捷操作简单等优点很快成为家喻户晓的产品,是现在每台电脑都必须配备的电子产品。从有线到无线,从滚球到光电,鼠标经过一代代的发展可以说是品种繁多,价格也是十几元到几千元的都有。在选购鼠标时,我们一般会挑选外观漂亮延迟小的产品,无论什么样的鼠标,目的只有一个,那就是舒适好用。。所以不管计算机发展到什么程度,只要有人用鼠标,鼠标的研制与开发都是必须的。
1.2 基于STM32的USB鼠标的设计研究方法及目标
想让计算机把一个HID 设备识别为鼠标设备,要完成的主要工作是修改HID 设备的标准描述符。HID 设备的描述符主要包括5 个USB 的标准描述符和3 个HID 设备类特定描述符。通过修改描述符可以将HID 设备枚举为鼠标。本次设计使用C语言进行程序的编写。
本文所讲述的USB鼠标是采用STM32来实现的。它自身带的USB模块符合USB2.0规范和OTG1.3规范,支持全速12Mbps和低速1.2Mbps两种模式。而且STM32官方封装了很多库函数,对于编写USB驱动节省了很多时间。本次设计通过把符合HID协议的程序烧录到STM32开发板中,由开发板的四个按键控制window窗口
1
河南城建学院本科毕业设计(论文) 引言
光标的移动。
1.3 USB鼠标国内外研究现状
从原始鼠标、机械鼠标、光电鼠标(光学鼠标,激光鼠标)再到如今的触控鼠标,鼠标技术经历了漫漫征途终于修成正果。与主流PC部件相比,鼠标的技术革新显得非常保守,从道格拉斯博士的原始鼠标,再到后来的纯机械鼠标、光电鼠标、光机鼠标,以及光学鼠标,鼠标技术只经历寥寥几次大变革,其中真正算得上成功的其实只有光机鼠标和光学鼠标,它们也是当前鼠标技术的主流形态。其中,光机鼠标为过去的主流,我们一般也将它俗称作“机械鼠标”。对于光学鼠标,则是现在鼠标技术的发展方向,它已经大面积取代过时的光机鼠标产品。现在光学鼠标的技术相当完善,基本上每个人用的都是光学鼠标。但不管是哪一种鼠标都少不了和USB打交道,特别是USB3.0出现以后,基于USB的设备已经是电子产品研发的主流。
2
河南城建学院本科毕业设计(论文) 第2章 USB协议概述
第2章 USB协议概述
2.1 USB简介
USB是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线的标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术。USB传输速度极快,使用很方便,它可以连接非常多的外设,比如:手写板、游戏手柄、U盘等。
现在USB设备已进入千家万户,应用之所以如此广泛,优点主要有以下几点: 1、支持热插拔,也就是即插即用。这让用户在使用外接设备时不需要进行关机再开机就可以完成硬件的安装,分分钟就可以使用,省时省力。
2、标准统一。常见的是IDE接口的硬盘,串口的鼠标键盘,并口的打印机扫描仪,可以有了USB之后,这些应用外设统统可以用USB接口与PC连接,这时就有了USB硬盘、USB鼠标、USB网卡等一系列设备。
3、可以连接多个设备。USB在PC上往往具有多个接口,可以同时连接多个外设,最高可连接127个设备。
USB协议出现过的版本有USB1.0、USB1.1、USB2.0以及现在最新的USB3.0。USB的结构是主从模式,设备与设备之间不能互连,主机与主机之间也不能互连,于是就产生了USB OTG。USB OTG就是让同一个设备在不同场合下实现主机与从机之间的切换。在传输速度上,USB1.0和USB1.1版本只支持1.5Mb/s的低速模式和12Mb/s的全速模式。USB2.0中不仅支持这两种模式,还增添了速度更快的480Mb/s的高速模式。现在USB3.0已经非常完善,最新发布的计算机产品都带有USB3.0接口,其最大传输速度更是达到恐怖的5.0Gbps。
2.2 USB的拓扑结构
前面提到,USB是一种主从结构的系统。主机在一般情况下都会具有一个或多个USB主控制器(host controller)和根集线器(root hub)。主控制器下虽然只有一个根集线器,但一般情况下根集线器上都有多个USB口。USB集线器是一种特殊的USB设备,是在USB接口不够用时扩展USB口用的。集线器虽然可以扩展出更多的USB口,但不能扩展出更多的带宽,带宽还是共享的。所以最好不要把多个USB设备接到同一个USB端口上。
我们可以在电脑的设备管理器中是查看USB主控制器和USB根集线器的。对于window7系统,右击“计算机”,在弹出的菜单中选择“管理”,在“计算机
3
河南城建学院本科毕业设计(论文) 第2章 USB协议概述
管理”选项卡中单击“设备管理器”,就可以查看计算机设备的属性了,在这里可以查看驱动程序信息、设备的PID和VID等。在“设备管理器”中找到“通用串行总线控制器”并把它展开,就可以看到USB主控制器和根集线器了。USB的拓扑结构为金字塔型,塔顶为主控制器和根集线器,下面是通过USB集线器拓展的多个USB口。在Windows中,由各种USB功能驱动程序负责产生和管理USB功能设备(FOD),即我们最终所看到的设备。
2.3 USB的电气特性
标准的USB连接线使用四芯电缆:5V电源线、差分数据线负(D‐)、差分数据线正(D+)及地(GND)。在USB OTG中又增加了一种MINI USB接头,使用五条线,比标准USB多一条身份识别线。USB使用的是NRZI编码方式,即数据为0时电平翻转,数据为1不翻转。因为电平长时间不发生变化会不利于时钟信号的提取,所以要在经过位填充处理后发送数据(当遇到连续六个1时强制插入一个数据0)。USB协议规定,USB低速电缆长度不得超过3米,而全速电缆不得超过5米。USB标准还规定了信号线的颜色,其中5V电源线为红色,D‐为白色,D+为绿色,GND为黑色。
插入检测机制就是检测到设备插入到主机的过程。在USB集线器的每个端口的D+和D‐上,分别接了一个15kΩ的下拉电阻到地,无设备插入时输入端被下拉电阻拉到了低电平。在USB设备端D+或D‐上接1.5kΩ的上拉电阻到3.3V电源。上拉电阻接正还是负由设备速度决定,全速和高速设备接正,低速设备接负。当设备插入USB插座时,接上拉电阻的数据线的电压由上拉电阻和下拉电阻分压决定,大概在3V左右。当集线器检测到这个高电平信号时,它把信号发送到USB主控制器,就可以检测到设备插入了。此时,还可以根据被拉高的数据线是D+还是D‐来判断设备的速度类型。
2.4 USB描述符
前面说道USB是一个总线,USB总线驱动程序也不知道设备的行为,那么主机怎么获知设备的功能呢,这就要通过描述符来实现了。USB1.1协议定义了五种标准描述符:设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。还有一些特殊的描述符,如设计中要用的HID描述符等。一个USB设备只有一个设备描述符。在设备描述符中描述了该设备的各种配置,每种配置都有一个配置描述符,定义了设备有多少个接口,接口描述符又定义了接口有多少端点。。 USB描述符之间的关系:设备描述符包含配置描述符包含接口描述符包含端点
4
河南城建学院本科毕业设计(论文) 第2章 USB协议概述
描述符。总的来说,由端点构成接口,接口构成配置,配置构成设备。如果一个设备的各种描述符都成功的返回了,那么设计基本上算是成功了一大半。
2.5 USB的包结构
在USB总线上,数据是以包为单位进行传输的。一个包被分成不同的域,包的类型不同,所包含的域也不同。所有的包都要以同步域开始,后接一个包标识符,最后以包结束符EOP结束。
同步域用以告诉USB串行接口数据要开始传输了,以便做好准备。同步域还可以同步主机端和设备端的数据时钟。同步域都是以一串0开始的,所以每个数据都会发生电平变化(0在USB总线上被编码为电平翻转),这样串行接口引擎很容易恢复采样时钟信号。当串行接口引擎检测到电平没有翻转时,就会认为包标识符开始了。
包标识符PID用以表示一个包的类型,共8位,其中USB协议使用的只有PID0~PID3这四位,另外四位是这四位的取反,用来校验PID。USB协议规定了四类包:令牌包、数据包、握手包和特殊包。每种包又分成几种具体的包。协议中对最低两位的规定如图2.1。
包的类型 PID1~0 令牌包 01 数据包 11 图2.1 四种包的最低两位规定
握手包 10 特殊包 00 2.5.1令牌包
用来启动一次USB传输。因为USB的拓扑结构是主从结构,所有数据的传输都是由主机发起的,设备只负责接受,所以需要主机发送一个令牌来通知需要的设备进行相应的操作。令牌包共四种:输出、输入、建立和帧起始。具体的功能还要参照USB协议。每个令牌包最后都有一个CRC5的校验,用以校验PID之后的数据。四种令牌包中,只有SOF令牌包之后不跟随数据传输,其他包都有数据传输。输出、输入、建立令牌包的结构如图2.2。它们的结构相同,而且数据在传输时,每个域的最低位LSB在前。
同步域
5
8位包标识符 7位地址 4位端点号 5位CRC5校验 EOP 图2.2 IN、OUT、SETUP令牌包结构