基于stm32的usb简易鼠标正文大学学位论文.docx

上传人:b****2 文档编号:16966549 上传时间:2023-07-20 格式:DOCX 页数:66 大小:161.30KB
下载 相关 举报
基于stm32的usb简易鼠标正文大学学位论文.docx_第1页
第1页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第2页
第2页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第3页
第3页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第4页
第4页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第5页
第5页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第6页
第6页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第7页
第7页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第8页
第8页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第9页
第9页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第10页
第10页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第11页
第11页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第12页
第12页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第13页
第13页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第14页
第14页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第15页
第15页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第16页
第16页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第17页
第17页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第18页
第18页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第19页
第19页 / 共66页
基于stm32的usb简易鼠标正文大学学位论文.docx_第20页
第20页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于stm32的usb简易鼠标正文大学学位论文.docx

《基于stm32的usb简易鼠标正文大学学位论文.docx》由会员分享,可在线阅读,更多相关《基于stm32的usb简易鼠标正文大学学位论文.docx(66页珍藏版)》请在冰点文库上搜索。

基于stm32的usb简易鼠标正文大学学位论文.docx

基于stm32的usb简易鼠标正文大学学位论文

 

毕业设计[论文]

题目:

基于STM32的USB简易鼠标设计

学院:

电气与信息工程学院

专业:

电子信息工程

姓名:

学号:

指导老师:

完成时间:

2015年06月01日

摘要

随着设备的越来越智能化,嵌入式计算机大量应用到各种电子设备中,基于嵌入式系统的USB鼠标及键盘的应用也变得越来越广泛。

在本次设计中,研究的是一款基于STM32的USB鼠标,即插即用,免驱动自动识别,很好的解决了鼠标设备智能化和低延迟的设计要求。

由于是基于HID的USB设备,所以编程非常方便,贴近工程实践,应用前景广阔。

嵌入式系统HID,即人机接口设备,是HumanInterfaceDevice的缩写。

HID是计算机周边设备中非常常见的设备类型,是可以直接与进行人交互的USB设备,例如鼠标、摄像头、U盘等。

在种类繁多USB设备中,HID类设备的成本一般情况下是比较低的。

实际上,只要是符合HID标准的设备都是HID设备,不一定非要具有人机交互功能。

最早支持HID设备的计算机操作系统是Windows98系统。

HID设备的驱动程序内置在这些系统中,不需要单独开发与安装驱动,应用程序可以直接使用这些驱动程序来与设备通信。

近年来,受计算机性能提升和游戏软件等的影响,人们对鼠标的要求越来越高,特别是一些即时作战游戏,人们希望能达到“零”延迟,这就对原来的鼠标技术提出了挑战。

老式的圆孔鼠标早已不再适用,特别是笔记本电脑根本不再设计老式插孔。

随着USB2.0以及USB3.0的不断完善,再加上高速而价廉的单片机,一款基于STM32的USB简易鼠标正是本课题的研究内容。

本文主要研究基于STM32的USB简易鼠标系统的功能、设计思想和实现,以及基于STM32的USB简易鼠标的组成及工作原理,描述了研究该课题的意义和应用价值。

本设计的重点在于USB协议的HID部分,精通此协议并植入单片机才能实现计算机与鼠标的沟通。

关键词:

USB技术;HID协议;STM32单片机;鼠标

 

Abstract

Asmoreandmoreintelligentdevices,embeddedcomputersappliedtothelargevarietyofelectronicdevices,embeddedsystemsUSBmouseandkeyboardapplicationsarebecomingmoreandmorewidespread.Inthisdesign,thestudyisabasedontheSTM32USBmouse,plugandplay,driver-freeautomaticidentification,agoodsolutiontothemousedeviceintelligenceandlow-latencydesignrequirements.BecauseitisbasedonHIDUSBdevice,sotheprogrammingisveryconvenient,closetotheengineeringpractice,theapplicationprospects.

EmbeddedsystemsHID,namelyhumaninterfacedevices,isanabbreviationforHumanInterfaceDevice.HIDisacomputerperipheraldeviceinaverycommondevicetypes,peoplecaninteractdirectlywiththeconductofUSBdevices,suchasamouse,camera,Udiskandsoon.InawiderangeofUSBdevices,underHIDclassdevicesgenerallycostisrelativelylow.Infact,aslongasaHID-compliantdevicesareHIDdevicedoesnotnecessarilyhavetohaveinteractivefeatures.TheearliestHIDdevicessupportedcomputeroperatingsystemisWindows98system.HIDdevicedriversbuiltintothesesystems,theneedforseparatedevelopmentandinstallthedriver,anapplicationcanusethesedriverstocommunicatewiththedevice.

Inrecentyears,theimpactofcomputerandgamesoftwareperformanceby,peoplehavebecomeincreasinglydemandingofthemouse,especiallysomeinstantcombatgame,peoplewanttobeabletoachieve"zero"delay,whichtheoriginalmousetechnologypresentsachallenge.Old-fashionedmousetheholeisnolongerapplicable,especiallynotebookcomputersdesignedsimplynolongertheoldjack.WiththecontinuousimprovementUSB2.0andUSB3.0,coupledwithhighspeedandlowcostmicrocontroller,aresearchbasedontheSTM32USBsimplemousepreciselythistopic.ThisarticleismainlybasedontheSTM32USBsimplemousesystemsdesignandimplementation,aswellaseasyontheSTM32USBmouseandworkprinciple,itdescribesthesubjectofresearchandpracticalvalue.ThedesignfocusesonsomeUSBHIDprotocol,proficientinthisagreementandinordertoachievesingle-chipimplantedcommunicationcomputermouse.

Keywords:

USBtechnology;HIDprotocol;STM32microcontroller;mouse

 

目录

摘要I

AbstractII

目录III

第1章引言1

1.1课题背景1

1.2基于STM32的USB鼠标的设计研究方法及目标1

1.3USB鼠标国内外研究现状2

第2章USB协议概述3

2.1USB简介3

2.2USB的拓扑结构3

2.3USB的电气特性4

2.4USB描述符4

2.5USB的包结构5

2.5.1令牌包5

2.5.2数据包6

2.5.3握手包6

2.5.4特殊包6

2.6USB的传输类型7

第3章STM32及MDK简介8

3.1STM32简介8

3.2MDK的使用8

第4章USB鼠标的实现10

4.1USB简易鼠标的程序编写10

4.2USB鼠标的运行12

4.3硬件实现12

设计总结14

附录15

附录Amain.c15

附录Busb_desc.c19

附录Chw_config.c26

附录Dusb_prop.c38

参考文献51

致谢52

第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.3USB鼠标国内外研究现状

从原始鼠标、机械鼠标、光电鼠标(光学鼠标,激光鼠标)再到如今的触控鼠标,鼠标技术经历了漫漫征途终于修成正果。

与主流PC部件相比,鼠标的技术革新显得非常保守,从道格拉斯博士的原始鼠标,再到后来的纯机械鼠标、光电鼠标、光机鼠标,以及光学鼠标,鼠标技术只经历寥寥几次大变革,其中真正算得上成功的其实只有光机鼠标和光学鼠标,它们也是当前鼠标技术的主流形态。

其中,光机鼠标为过去的主流,我们一般也将它俗称作“机械鼠标”。

对于光学鼠标,则是现在鼠标技术的发展方向,它已经大面积取代过时的光机鼠标产品。

现在光学鼠标的技术相当完善,基本上每个人用的都是光学鼠标。

但不管是哪一种鼠标都少不了和USB打交道,特别是USB3.0出现以后,基于USB的设备已经是电子产品研发的主流。

 

第2章USB协议概述

2.1USB简介

USB是英文UniversalSerialBus(通用串行总线)的缩写,是一个外部总线的标准,用于规范电脑与外部设备的连接和通讯,是应用在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的结构是主从模式,设备与设备之间不能互连,主机与主机之间也不能互连,于是就产生了USBOTG。

USBOTG就是让同一个设备在不同场合下实现主机与从机之间的切换。

在传输速度上,USB1.0和USB1.1版本只支持1.5Mb/s的低速模式和12Mb/s的全速模式。

USB2.0中不仅支持这两种模式,还增添了速度更快的480Mb/s的高速模式。

现在USB3.0已经非常完善,最新发布的计算机产品都带有USB3.0接口,其最大传输速度更是达到恐怖的5.0Gbps。

2.2USB的拓扑结构

前面提到,USB是一种主从结构的系统。

主机在一般情况下都会具有一个或多个USB主控制器(hostcontroller)和根集线器(roothub)。

主控制器下虽然只有一个根集线器,但一般情况下根集线器上都有多个USB口。

USB集线器是一种特殊的USB设备,是在USB接口不够用时扩展USB口用的。

集线器虽然可以扩展出更多的USB口,但不能扩展出更多的带宽,带宽还是共享的。

所以最好不要把多个USB设备接到同一个USB端口上。

我们可以在电脑的设备管理器中是查看USB主控制器和USB根集线器的。

对于window7系统,右击“计算机”,在弹出的菜单中选择“管理”,在“计算机管理”选项卡中单击“设备管理器”,就可以查看计算机设备的属性了,在这里可以查看驱动程序信息、设备的PID和VID等。

在“设备管理器”中找到“通用串行总线控制器”并把它展开,就可以看到USB主控制器和根集线器了。

USB的拓扑结构为金字塔型,塔顶为主控制器和根集线器,下面是通过USB集线器拓展的多个USB口。

在Windows中,由各种USB功能驱动程序负责产生和管理USB功能设备(FOD),即我们最终所看到的设备。

2.3USB的电气特性

标准的USB连接线使用四芯电缆:

5V电源线、差分数据线负(D‐)、差分数据线正(D+)及地(GND)。

在USBOTG中又增加了一种MINIUSB接头,使用五条线,比标准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.4USB描述符

前面说道USB是一个总线,USB总线驱动程序也不知道设备的行为,那么主机怎么获知设备的功能呢,这就要通过描述符来实现了。

USB1.1协议定义了五种标准描述符:

设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。

还有一些特殊的描述符,如设计中要用的HID描述符等。

一个USB设备只有一个设备描述符。

在设备描述符中描述了该设备的各种配置,每种配置都有一个配置描述符,定义了设备有多少个接口,接口描述符又定义了接口有多少端点。

USB描述符之间的关系:

设备描述符包含配置描述符包含接口描述符包含端点描述符。

总的来说,由端点构成接口,接口构成配置,配置构成设备。

如果一个设备的各种描述符都成功的返回了,那么设计基本上算是成功了一大半。

2.5USB的包结构

在USB总线上,数据是以包为单位进行传输的。

一个包被分成不同的域,包的类型不同,所包含的域也不同。

所有的包都要以同步域开始,后接一个包标识符,最后以包结束符EOP结束。

同步域用以告诉USB串行接口数据要开始传输了,以便做好准备。

同步域还可以同步主机端和设备端的数据时钟。

同步域都是以一串0开始的,所以每个数据都会发生电平变化(0在USB总线上被编码为电平翻转),这样串行接口引擎很容易恢复采样时钟信号。

当串行接口引擎检测到电平没有翻转时,就会认为包标识符开始了。

包标识符PID用以表示一个包的类型,共8位,其中USB协议使用的只有PID0~PID3这四位,另外四位是这四位的取反,用来校验PID。

USB协议规定了四类包:

令牌包、数据包、握手包和特殊包。

每种包又分成几种具体的包。

协议中对最低两位的规定如图2.1。

包的类型

令牌包

数据包

握手包

特殊包

PID1~0

01

11

10

00

图2.1四种包的最低两位规定

2.5.1令牌包

用来启动一次USB传输。

因为USB的拓扑结构是主从结构,所有数据的传输都是由主机发起的,设备只负责接受,所以需要主机发送一个令牌来通知需要的设备进行相应的操作。

令牌包共四种:

输出、输入、建立和帧起始。

具体的功能还要参照USB协议。

每个令牌包最后都有一个CRC5的校验,用以校验PID之后的数据。

四种令牌包中,只有SOF令牌包之后不跟随数据传输,其他包都有数据传输。

输出、输入、建立令牌包的结构如图2.2。

它们的结构相同,而且数据在传输时,每个域的最低位LSB在前。

同步域

8位包标识符

7位地址

4位端点号

5位CRC5校验

EOP

图2.2IN、OUT、SETUP令牌包结构

2.5.2数据包

用来传输数据。

USB1.1协议只规定了两种数据包DATA0和DATA1包。

在USB2.0中新增了用在高速分裂事务和高速高带宽同步传输中DATA2和MDATA包。

不同类型的数据包是在当握手包出错时纠错用的。

不同类型的数据包是为了方便在握手包出错时纠错。

主机和设备都会维护自己的一个数据包类型切换机制,即当数据包成功发送或接收时,数据包类型切换。

当检测到对方使用的数据包类型不对时,USB系统认为这发生了一个错误,并试图从错误中恢复。

一般情况下,当握手包被损坏时,会发生数据包类型不匹配的情况。

如果一端成功接收数据并发送确认信号,确认信号在传输的时候丢失或损坏,另一端就无法知道数据已经被正确接。

此时它就会保持自己的数据包类型不变,如果对方下次发送的数据包类型和自己不同,说明对方已经成功接收数据。

收数据包结构如图2.3所示。

同步域

8位PID

字节0

字节1

···

字节N

16位校验

EOP

图2.3数据包结构

2.5.3握手包

用来查看一个数据是否被对方确认。

握手包四种类型:

ACK、NAK、STALL和NYET。

ACK表示数据已经被接收,空间容纳也足够。

NAK表示没有数据需要返回或已经正确接受但没有空间容纳。

STALL表示这个设备无法执行这个请求或者端点已经被挂起了,表示一种错误的状态。

NYET只在USB2.0的高速设备中使用,表示本次数据成功接受但没有空间接受下一次数据。

图2.4是握手包的结构。

同步域

包标志PID

EOP

图2.4握手包结构

2.5.4特殊包

只在一些特殊场合使用,分PRE、ERR、SPLIT和PING四种。

只有ERR是握手包,其他为令牌包。

除了PRE,其他三个都是USB2.0协议新增的,不在此次设计的研究范围。

PRE是通知集线器打开其低速端口的一种前导包。

PRE仅仅使用在全速模式中,与握手包的结构一样。

当传输模式由全速变低速时,主机会在全速模式下发送一个PRE令牌包,集线器收到此令牌包后,就会打开低速设备端口,但全速设备会忽略次令牌包。

2.6USB的传输类型

USB有四种传输类型:

批量传输、同步传输、中断传输和控制传输。

前面提到,USB数据的基本传输单位是包,但在具体传输数据时还必须把包组织成事务。

批量传输:

使用批量事务传输数据。

中断传输:

一种保证查询频率的传输。

中断传输一般用在我们所说的延迟要尽可能小的设备中。

现在使用的鼠标、键盘及其他HID都属于这样的设备。

同步传输:

有些设备如音频、视频设备对数据的延迟很敏感,而且需要对大量数据不停的传输,但对数据的正确与否要求不高,此时同步传输是最好的选择。

控制传输:

分为建立过程、数据过程(可选)和状态过程三个过程。

建立过程用来输出数据,使用建立事务。

建立过程使用只能使用DATA0的SETUP令牌包,而且握手包也只能只用ACK应答。

数据过程可选,如果有可以包含一笔或多比数据事务。

状态过程是一笔只使用DATA1包的批量事务。

其传输方向也就是控制读和控制写过程与前面批量事务相反。

 

 

第3章STM32及MDK简介

3.1STM32简介

2006年ARM公司推出Cortex系列微处理器,根据不同性能的要求,分成了以公司三个字母分别命名的三个系列。

本次设计使用的是M系列,因为这个系列成本较低,性能上也完全能够胜任。

在ARM公司和意法半导体ST公司合作后,2007年ST公司发布了基于Cortex-M3内核的STM32系列处理器。

STM32系列处理器分为标准型和增强型两个系列,主要产品有标准型的STM32F101工作在36MHz,增强型的STM32F103工作在72MHz并拥有更大的RAM和更丰富的外设。

因为STM32F103运算频率高,能实现更高端的运算,而且其自带的端口具有极好的连接能力,价格上也比较便宜,所以设计中采用这一款。

图3.1是STM32F103处理器的配置。

72MHzCPU

多达64K的RAM

2×12位ADC温度传感器

3×USART

2×SPI

多达512K的ROM

USB

通用I/O引脚

3×16位定时器

4~16MHz主振荡器

内嵌8MHz和32kHz的RC振荡器

实时时钟

2×看门狗

7通道DMA

CAN

PWM定时器

图3.1STM32F103处理器的配置

正是由于STM32F10x系列处理器配有众多的外设,所以它的用途非常广泛。

在工业方面,可以应用在PLC、报警系统、变频器,打印机等上面;在低功耗方面,应用的产品有电表、血糖测量仪、UPS等;数码家电方面,相应的产品有电脑外设、游戏机、数码相机等。

3.2MDK的使用

支持STM32微控制器的开发工具虽然很多,但结合中国的业内行情及收费情况,Keil公司的MDK是不二选择。

MDK集成

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2