3.26 触控USB鼠标实验
STM32F103系列芯片都自带了USB,不过STM32F103的USB都只能用来做设备,而不能用作主机。既便如此,对于一般应用来说已经足够了。本节,我们将向大家介绍如何在ALIENTEK
MiniSTM32开发板上虚拟一个USB鼠标。本节分为如下几个部分:
3.26.1 USB简介
3.26.2 硬件设计
3.26.3 软件设计
3.26.4 下载与测试
3.26.1 USB简介
USB ,是英文Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
USB发展到现在已经有USB1.0/1.1/2.0/3.0等多个版本。目前用的最多的就是USB1.1和USB2.0,USB3.0已经开发出来了相信不久就可以在我们的电脑上见到。STM32F103自带的USB符合USB2.0规范。
标准USB共四根线组成,除VCC/GND外,另外为D+,D-; 这两根数据线采用的是差分电压的方式进行数据传输的。在USB主机上,D-和D+都是接了15K的电阻到低的,所以在没有设备接入的时候,D+、D-均是低电平。而在USB设备中,如果是高速设备,则会在D+上接一个1.5K的电阻到VCC,而如果是低速设备,则会在D-上接一个1.5K的电阻到VCC。这样当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。
主机在检测到设备接入后,会执行设备识别,这个过程比较麻烦,它的枚举过程包含了设备的一些相关信息与通信方式。
对于USB,作者本人也不熟,关于USB的系统介绍,建议大家可以去电脑圈圈的博客上看看,他还出过这方面的书,相信能帮到大家。等有空的时候,我也要好好学一下USB,等我学会了,到时候再给大家讲讲USB。
USB部分,ST也提供了几个例程,这些例程对于我们了解STM32F103的USB会有不少帮助,尤其在你不懂的时候,看看ST的例程,会有意想不到的收获。本实验的USB部分就是移植ST的JoyStickMouse例程相关部分而来,再加上我们的触摸屏,做成一个触控鼠标。ST提供的USB例程在X:\Keil3.80\ARM\Examples\ST\STM32F10xUSBLib\Demos文件夹下(X是你的安装盘)。
3.26.2 硬件设计
本节实验功能简介:开机的时候先检测触摸屏是否校准过,如果没有,则校准。如果校准过了,则开始触摸屏画图,然后将我们的坐标数据上传到电脑(假定USB已经配置成功了,DS1亮),这样就可以用触摸屏来控制电脑的鼠标了。在控制鼠标的同时,如果按键0被按下,则强制进入校准程序。同样我们也是用DS0来指示程序正在运行。
所要用到的硬件资源如下:
1)STM32F103RBT6。
2)DS0、DS1(外部LED0/LED1)。
3)TFTLCD液晶模块。
4)KEY0。
5)USB接口。
前面4部分,在之前的实例中都介绍过了,我们在此就不介绍了。接下来看看我们电脑USB与STM32的USB连接口。ALIENTEK
MiniSTM32采用的是5PIN的miniUSB接头,用来和STM32的USB相连接,连接电路如下图所示:
图3.26.2.1
MiniUSB与STM32的连接电路图
3.26.3 软件设计
详细教程和源码见附件
|