单片机实现数字化B超键盘设计
4.3 初始化及命令查询处理
初始化过程是设计过程中需要注意的。计算机启动过程跟主板有关,因为主机在总线上有优先权,通信过程发生异常,将禁用设备,而且目前找不到介绍计算机启动过程中对键盘操作细节的描述,所以本部分的设计是难点。
经过试验发现,上电后,键盘完成白检即发送代码0AAH给计算机,计算机在启动过程中可以进行复位、读ID、停止键扫、使能键扫、控制LED状态等操作,而且有时计算机会拉低时钟信号——抑制通讯,在整个过程中,只要主机认为设备异常,将抑制通讯导致键盘无法使用而且不能进入操作系统。
每个由计算机发送到键盘的数据都能从键盘获得一个0FAH应答的回应,唯一例外的是键盘对Resend和Echo命令的回应。在发送下一个字节给键盘之前,主机要等待应答。键盘作为从设备,无法预先知道什么时候主机会发送控制命令,一旦主机发送命令给设备,设备没有回应,主机即将该设备挂起,除非重新开机。
针对命令集,设计了专门的应答子程序,根据设备收到的命令,作出相应的回答和处理。
经逻辑分析仪测试、分析和反复验证,发现在主程序中插入命令查询处理程序,既能满足初始化的要求,还可以保证键盘及时接收和处理来自主机的信息,维持键盘设备正常工作,命令查询处理程序流程如图4所示。这部分概括起来就是空出360μs的等待时间(15μsx20),作查询,如果在这段时间内,数据线和时钟线同时变为低电平,表示键盘有命令需发送,设备产生时钟以接收命令,并根据收到的命令做相应的处理。本文引用地址://m.amcfsurvey.com/article/172890.htm
4. 4 TGC数据处理
TGC数据发送实质上是一个扫描码的序列,如第一个TGC增益数据为80,依次向计算机发送0x14 0x16 0x3E0x45 0xF0 0x14,对应键“L Ctrl”按下、键“1”按下、键“8”按下、键“0”按下、键“L Ctrl”释放的动作,超声系统软件实现解析。实践证明,发送每个序列数据过程中两个数据间至少应延时1.06 ms。
上述组合不会引起计算机异常,此前尝试过其他组合,在没进入超声软件时调节TGC易引起误操作。
特别要注意的是:
1)开机时ADC采样使能标志清0,禁止采集TGC;
2)键盘上电完成初始化后开启定时器1,联合应用定时器和计数器,定时5 s,时间到则ADC采样使能标志置1,可以采集TGC数据,TGC数据有变化则发送给计算机;
3)设立转换通道标志码,实时状态每次键扫时根据标志码只进行相对应的一个电位器的模数转换,转换后将转换标志码指向下一通道。
采用上述措施旨在解决因开机过程中键盘发送TGC数据和正常工作时TGC数据频繁发送导致键盘死机问题,频繁发送数据以至主机认为键盘异常而禁用键盘。
4.5 状态同步处理
标准键盘上有Num Lock,Caps Lock和Scroll Lock3个LED指示灯,为了实现主机与键盘的状态同步,采用了如下解决方案:键盘只发送Num Lock、Caps Lock、Scroll Lock按下或者释放的代码;根据按键情况,主机发送专门用于指示键盘上Num Lock、Caps Lock和ScrollLo-ck3个LED状态的指令;键盘处理器收到指令后刷新指示灯。
设计中冻结键使用Scroll Lock以保持状态同步。
Depth、Zoom、Focus、I.P、A-Pwr与功能调节编码器组合使用,5个按键中每次只有1个激活,激活时led指示灯亮,按键状态则由键盘MCU寄存和切换控制,不同功能激活时调节编码器产生不同的键码,如:Depth激活时编码器左旋产生“KP-”按下的代码,右旋则产生“KP +”按下代码;Zoom激活时编码器左旋产生“Page Up”按下的代码,右旋则产生“Page Down”按下代码。该方法成功解决了状态同步问题。
5 结论
对基于W78E052D单片机设计的PS2键盘方案、硬件和软件设计做了详细阐述,命令查询、TGC和状态同步处理对自行设计非标PS2键盘有借鉴意义,在整个设计过程中,通过不断改进硬件和调试软件,得到了预期的效果。相对于采用多片MCU分别处理几个模块最终通过USB集线器同PC主机通讯的方案,接口更简单,成本更低,而且不需要专门开发键盘驱动程序。在需要3个以上编码器的应用中,编码器处理方案有待于进一步改进。
评论