基于WinCE操作系统的通用USB数控键盘设计
2009-02-13 来源:电子产品世界
引言
随着网络时代的到来,机械制造行业也面临着如何适应网络化制造的问题。于是将计算机技术、网络技术和传统的控制技术相结合,以嵌入式系统为主的数控系统正日益成为机械制造领域的热点。对于一个具体的数控系统,在通过键盘作为人机交互工具时,按键的数目与功能上与其他的数控系统是不同的,实时性和高速率是工业现场所重视的,USB数控键盘相对于传统的PS/2键盘具有高速率、支持热插拔、可灵活配置等特点,所以要为嵌入式数控设备研发出通用的数控键盘,来满足现代化数控系统的需求。具体设计方案如图1所示。
图1 系统框图
系统硬件电路设计
系统(图1)有四个模块组成:键盘模块、USB接口模块、USB和MCU通信模块。USB数控键盘不需要显示模块,在实验中为了便于观察结果,采用了1602液晶显示器,来显示键值和通信的状态。AT89S55单片机和ZLG7290均采用上电复位电路,减少系统的不必要开支,整个电路的供电采用USB供电,有效的减少了电源干扰。
ZLG7290键盘模块
I2C 总线的器件SDA 和SCL 引脚都是漏极开路(或集电极开路)输出结构。因此实际使用时,它们都必须要加上拉电阻。上拉电阻一般取值3~10kW。
USB接口模块
USB 通过4线电缆接入主机, 这4 条线分别为: VCC(总线电源)、GND(地线)、D+和D-(数据线)。D12DM和D12DP分别连接到PDIUSBD12芯片的 D- 和 D+引脚。D+和D- 线上必须串接18W+1%的精密电阻,D+和D- 线必须分别用1MW的上拉电阻(3.3V)和下拉电阻,USB接口的VBUS为来自PC机的+5V电源,用于供给ZLG7290、MCU和PDIUSBD12的电源,VCC和GND分别接2个电感,起到电源的滤波作用。
PDIUSBD12和MCU通信模块
PDIUSBD12是Philips(编者注:现独立为NXP)公司的一款特点突出的USB接口芯片,它支持多路复用、非多路复用和DMA并行传输。PDIUSBD12需要外接MCU来进行协议处理和数据交换。
PDIUSBD12完全遵从USB1.1协议,它内部集成有串行接口引擎(SIE)、FIFO存储器、收发器以及电压调整器。还有SoftConnectTM、PLL锁相环、可编程的时钟输出、低频晶振、终止寄存器和GoodLinkTM,以及并行和DMA传输。
由AT89S55 和PDIUSBD12 构成的接口电路如图3所示,在此AT89S55没有画出,但是D12与MCU的连接都已标出。 PDIUSBD12 的8 位并行数据接入AT89S55的P0口,设计电路中只有D12一个外部总线扩展电路,那么D12 的A0引脚可通过10kW电阻到地。D12 的ALE引脚与MCU的ALE引脚相连。振荡电路采用6MHz,经过D12内部倍频电路以后,实际D12内部时钟为24MHz。注意两个电容值的大小是不一样的,采用22pF和68pF的。
图3 PDIUSBD12与MCU通信电路
系统软件
I2C通信程序
在程序设计时要注意:数据线SDA 的电平状态必须在时钟线SCL 处于高电平期间保持稳定不变,SDA 的电平状态只有在SCL 处于低电平期间才允许改变。但是在I2C总线的起始和结束时例外。
ZLG7290控制程序
PDIUSBD12固件程序
后台ISR(中断服务程序)和前台主程序之间的数据交换可以通过事件标志和数据缓冲区来实现,其原理图如图4所示。在ISR中,固件将数据包从PDIUSBD12内部缓冲区移到循环数据缓冲区,并在随后清零PDIUSBD12的内部缓冲区,以便接受新的数据包。CPU可以继续当前的前台任务直到完成。
图4 前后台工作原理
USB在WinCE下驱动程序和应用程序
结语
本文提出的嵌入式数控键盘已经设计完成,在项目组测试中达到了预期的效果。用USB键盘输入时,在WinCE操作系统下使用记事本的方式在LCD上显示键值,并且在应用程序中可以根据用户需求定制按键的具体功能,满足数控系统的需要。