基于USB的无线触摸鼠标板的设计方法
具,本次设计所采用的程序烧录器为TOP WIN2004,该烧录器自身提供有一个下载软件,使用也非常方便,安装按照软件目录下的README一步步操作即可。 本设计中的软件均是在单片机内实现,运行在MCU内的软件控制着整个设计所要实现的模块。 但是由于MCU与传统Pc有着巨大的差别,必须考虑存储空间、运行速度、外界干扰等因素。在实现此次设计的过程中,除了首先要保证硬件环境的设计正确和优质之外,软件方面的严谨设计也是必不可少的一个重要部分。 本设计的软件总体框架图可如图4所示,为了使两端达到速度及任务的均衡,一些软件处理将在手持端完成,然后以接收端可以识别的格式打包发送过去,由图4也可以看出两端的任务处理基本处于均衡状态。 图4软件总体框架图 3.2手持端软件的设计与实现 在本部分将介绍手持终端的软件设计过程,以及各个模块部分的具体实现。软件的运行流程图如图5所示。 图5手持端软件流程 对于事件发生的获取是采用中断模式,也就是在有鼠标触摸板事件发生的时候,将唤醒MCU进行数据的采集处理,然后将采集到的PS/2数据进行一定规则的转换,然后将其打包发送。若没有数据需要处理,则进入睡眠状态以节省功耗。 3.2.1芯片初始化 在芯片初始化阶段,主要是芯片的内部工作的时钟的设置、IO口的初始化设置、以及CC2420的初始化。 在芯片的初始化阶段需要注意对每个IO口的数据方向进行设置,并且要准确设置时钟以及串口的传输数率,否则在调试阶段无法获取数据。不用的IO口全部设置成输出端口,这样可减少端口不必要的干扰。 3.2.2鼠标触摸板事件的信息采集 首先要对触摸板进行初始化,其初始化序列请参照PS/2协议的命令序列。初始化成功后,该触摸板将正常工作,只要有触摸事件发生,将产生连续三帧的数据发送,而按键事件发生,则在按下产生三帧数据发送,弹起产生三帧数据发送。我们需要做的工作就是在触摸板发送数据的时候对其进行采集。采集过程也非常简单,在熟悉PS/2协议的基础上,中断产生后,按照时序对数据进行采集,一定要在读完一帧的基础上再读下一帧,读取完三帧数据后就马上进行数据转换和打包发送,然后再次等待中断事件发生。所选择的MCU在速度处理上完全可以满足一般键盘鼠标数据包发送的间隔时间,也就是说在读取完一个数据包后,就处理该数据包而不需要完全读取完一次事件产生的数据堆。 3.2.3 CC2420数据发送 在CC2420的数据发送阶段,MCU将数据发送命令传送给CC2420之后,可以通过SFD引脚来判断其发送过程。该引脚会有一个由低电平向高电平跳变的过程,其过程如图6所示。 图6发送过程示意图 控制器向CC2420发送了发送数据的命令之后,并不能马上把数据发送出去,而是要经过12个时钟周期之后发送器才启动,之后将数据添加了其实序列和帧头之后,才能开始数据发送进程。在数据发送完毕之前,SFD引脚将一直为高电平,这样在MCU就可以根据此引脚的变化来跟踪发送过程,发送过程具体的软件实现,可用图7表示。 图7 CC2420发送实现过程 在CC2420的数据发送阶段,发射校正和添加起始序列和帧头可以由硬件自动完成,但是帧的长度需要在软件中计算得到再写入帧中,并且需要将数据写入发送器的发送缓冲区之后向CC2420发送发送启动命令。 3.3接入端软件的设计与实现 接入设备部分的软件设计,主要是分为两部分:CC2420的接收和USB数据传输。CC2420由于是发送和接收集成在同一模块中,所以其初始化可采用发送端的设计。而在USB数据传输部分,则采用HID的协议与主机进行通信,这样在软件设计上可以减少复杂度。 3.3.1无线数据接收 无线数据接收的软件实现,使用RB5端口的电平中断触发接收进程。当CC2420发现有帧传输过来时其引脚会产生相应的变化,MCU通过检测这些引脚的变化可以得知CC2420所在的接收阶段与状态。在接收过程中,有3根引脚可以检测出CC2420的状态,其数据接收的变化示意图限于篇幅,在此略去。 当CC2420收到有符合其起始序列的时候,其自动接收帧头和帧的长度,并且SFD、FIFO、FIFOP这3根输出引脚分别输出上图所示电平。当接收到帧的目的地址时候,CC2420自动进行地址匹配,若地址匹配成功,则接收进程继续进行,如果地址匹配不成功,则马上停止接收过程,并把3根输出引脚都置为低电平。MCU在控制时可以通过检测这3根输出引脚的电平来判断接收过程的状态。 如果地址匹配成功且接收完整个帧,则可以启动数据读取进程。 在数据读取阶段,CC2420提供了帧的正确接收的初始判断,由此可以知道该帧是否被正确接收,以决定是读取该帧还是放弃该郑按照CC2420的规定,
USB 无线触摸鼠标板 PIC16FB77A 相关文章:
- Linux系统下USB摄像头驱动程序开发(04-25)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于LabVIEW的USB实时数据采集处理系统的实现(03-26)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)