1. 总体设计思路
通用串行总线接口是计算机与外部设备进行连接、通信的一种方式,其有USB1.1、USB2.0及USB3.0三种,当前主流是USB2.0。如今的计算机外部设备越来越趋向于用通用串行总线技术连接,并且有逐步取代其他计算机接口的趋势。飞利浦公司生产的一款通用串行总线接口芯片PDIUSBD12符合USB2.0的全速模式。本设计通过STC89S52微控制器辅助控制PDIUSBD12完成与计算机的数据交换,实现控制计算机光标的功能,并且增加无线收发模块,最终完成USB无线鼠标的制作。
首先理解USB协议的特点,拓扑结构,电气特性,线缆、插头、和插座的标准,插入检测机制,描述符及其之间的关系,设备的枚举过程包的结构及传输类型。具体是:USB主机检测到设备后,就对设备复位,并向设备发送设备描述符请求,此时设备的地址为0。主机向该地址的设备端点0发送获取设备描述符的标准请求。设备收到该请求后,会在数据过程中将设备描述符返回到主机里,在这里设备描述符需要根据USB协议实现定义,并且通过微控制器的输入到接口芯片的缓存中,再通过发送数据指令将设备描述符发送到主机,主机正确接收后,返回一个0长度的确认数据包。由于USB2.0设备采用NAK和NYET响应进行流控制,所以接下来进入设置新地址阶段,主机向接口芯片发送设置地址请求,接口芯片正确接收后,就发送应答包,主机接收应答包后,该阶段结束。从下一次请求开始设备启用新的地址,该地址是由主机随机分配的。接下来主机又一次复位,再次获取设备描述符,且用新分配到的地址。接着主机获取配置描述符,获取配置集合。最后获取报告描述符,在报告描述符中包含鼠标的的动作信息。主机获得报告描述符后就标志着鼠标动作信息被操作系统正确接收,光标就会产生相应的动作。进而实现鼠标的基本功能。
在按键模块上加装无线接收模块,按键信息可以通过无线发射模块确定并且发射,通过收发模块的地址匹配,可以实现按键的无线控制,从而实现无线鼠标的功能。
2. 系统总体框图
图1 总体框图
无线发射装置采用以PT2262芯片为核心的模块,其有四个按键,设置有两路地址,分别用来和接收模块的两个子模块匹配,记A、B分别为设置的匹配地址。因此四按键的发射模块可以发射出八位的控制信号。接收模块由两个子模块构成,每个子模块都有四个输出端,地址分别和发射模块的地址A、B匹配,在接收到信号后,对地址进行两次核对,正确后才使输出有效,所以其可以输出8位信息从而接收模块可以按照发射模块发射的信息,在相应的输出引脚上输出相应的电平。无线接收模块输出端8引脚与微控制器的P1口相连接,用于模拟鼠标的动作信息。LED用于指明按键的状态,按键按下,相应的LED点亮,其由程序控制,按键用于模拟有线鼠标的动作信息。USB模块的接口芯片是飞利浦公司的PDIUSBD12,其符合USB2.0协议的全速模式,无线发射模块的按键信息和有线按键信息都以报告的形式通过接口芯片串行传输给计算机,从而控制光标的移动及其他相应功能。总体框图如图1所示。
3. 硬件电路设计
本设计主要由:USB接口模块、无线收发模块、无线发射和按键及LED显示模块组成。USB接口芯片为飞利浦公司的通用USB接口PDIUSBD12,MUC为STC89S52。无线收发模块PT2262/2272芯片为核心,工作频率为315MH。
3.1 USB接口模块的工作原理
PDIUSBD12的端点适用于不同类型的设备,支持三个端点,其中主端点最多能保存128B,自动切换的双缓冲结构允许保存256B,允许USB与本地CPU之间进行并行操作,这既增加了吞吐量也导致了缓冲区操作的透明性。PDIUSBD12主端点可通过设置模式命令配置四种不同的模式。非同步模式、同步输出模式、同步输入模式、同步输入输出模式。PDIUSBD12与计算机相连接时,集成在片内的1.5 kΩ上拉,其有自己的指令集,用于管理USB总线事物,这些指令在位处理器的控制下分为初始化、数据流和通用命令。PDIUSBD12与单片机的接口有两种方式:多路地址/数据总线配置方式和单独地址/数据总线配置方式。当PDIUSBD12 接收到主机的有效信息时,会产生一个中断通知单片机进行处理。在USB接口电路的设计中,PDIUSBD12完成所有的USB 传输功能,与PDIUSBD12相连的是微处理器STC89S52,微处理器底层应用程序完成USB总线枚举过程、PDIUSBD12 的中断访问过程、电源管理功能和USB协议层的功能。PDIUSBD12对于微控制器而言,看起来就象一个带有8位数据总线和一个地址位的存储器件。PDIUSBD12支持多路复用和非复用的地址和数据总线。还支持主端点(端点2)和本地共享RAM之间直接读取的DMA 传输[2-4]。 通用串行总线及外设开发+电路图+流程图(2):http://www.751com.cn/tongxin/lunwen_1525.html