基于WinCE操作系统的通用USB数控键盘设计

发布者:郑大大最新更新时间:2013-04-09 来源: dzsc关键字:WinCE  操作系统  USB数控键盘  S3C2410 手机看文章 扫描二维码
随时随地手机看文章

引言

      随着网络时代的到来,机械制造行业也面临着如何适应网络化制造的问题。于是将计算机技术、网络技术和传统的控制技术相结合,以嵌入式系统为主的数控系统正日益成为机械制造领域的热点。对于一个具体的数控系统,在通过键盘作为人机交互工具时,按键的数目与功能上与其他的数控系统是不同的,实时性和高速率是工业现场所重视的,USB数控键盘相对于传统的PS/2键盘具有高速率、支持热插拔、可灵活配置等特点,所以要为嵌入式数控设备研发出通用的数控键盘,来满足现代化数控系统的需求。具体设计方案如图1所示。

图1 系统框图

系统硬件电路设计

     系统(图1)有四个模块组成:键盘模块、USB接口模块、USB和MCU通信模块。USB数控键盘不需要显示模块,在实验中为了便于观察结果,采用了1602液晶显示器,来显示键值和通信的状态。AT89S55单片机和ZLG7290均采用上电复位电路,减少系统的不必要开支,整个电路的供电采用USB供电,有效的减少了电源干扰。

ZLG7290键盘模块

    ZLG7290键盘编码显示芯片具有I2C总线接口功能并可直接驱动8 位共阴式数码管(或64 只独立的LED),同时还可以扫描管理多达64 只按键,其中有8 只按键还可以作为功能键使用。ZLG7290 内部还设置有连击计数器,能够使键按下后不松手而连续有效。并提供键盘中断信号,方便与处理器接口;可检测每个按键的连击次数,并具有键盘去抖动处理、双键互锁处理等功能。  
  
   在设计的过程中可以连接64个按键,但是在试验的过程中,选取了具有代表性的4个按键,其中有一个功能键F1,如图2所示。电路中晶振是4MHz,能够稳定地工作。MCU的地线一定要与ZLG7290的地线相连接,避免I2C通信故障,使得I2C通信顺畅。

图2 键盘电路设计简图

     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通信模块

    SBD12是Philips(编者注:现独立为NXP)公司的一款特点突出的USB接口芯片,它支持多路复用、非多路复用和DMA并行传输。PDIUSBD12需要外接MCU来进行协议处理和数据交换。

    PDIUSBD12完全遵从USB1.1协议,它内部集成有串行接口引擎(SIE)、FIFO存储器、收发器以及电压调整器。还有SoftConnectTM、PLL锁相环、可编程的时钟输出、低频晶振、终止寄存器和GoodLinkTM,以及并行和DMA传输。[page]

   由T89S55 和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通信电路

    GL_N通过一个电阻和红色LED串联到VCC。当USB设备枚举成功后,该LED常亮,当PC机与D12有数据通信时,该LED闪烁。因为没有用到D12的DMA功能,所以DMACK_N 和EOT_N 必须接上拉电阻,INT_N也要通过电阻上拉到VCC,因为这个引脚是开漏的。

系统软件

    软件设计包括ZLG7290控制程序、I2C通信程序、USB固件程序、在WinCE下USB Host驱动程序和应用程序。各部分采用模块化程序设计,便于升级和维护。WinCE下USB数控键盘的驱动程序与硬件平台关联很少,USB数控键盘在WinCE操作系统下具有通用性,并且该键盘的按键数目根据用户的要求可以剪裁,功能也可以在程序设计中定制,可以满足不同数控系统的需求。

I2C通信程序

    在程序设计时要注意:数据线SDA 的电平状态必须在时钟线SCL 处于高电平期间保持稳定不变,SDA 的电平状态只有在SCL 处于低电平期间才允许改变。但是在I2C总线的起始和结束时例外。

    I2C总线总是以字节为单位收发数据。每次传输的字节数量没有严格限制。首先传输的是数据的最高位(MSB,第7位),最后传输的是最低位(LSB,第0位)。另外,每个字节之后还要跟一个响应位,称为应答。

ZLG7290控制程序

    该程序的主要功能是完成ZLG7290的控制及键盘的管理,读出键值并判断出是否为功能键,在系统中功能键是配合普通键完成对数控系统的操作。主要流程就是先初始化、判断是否有键按下,若有键按下,判断是普通键还是功能键, 若为功能键, 则进行功能键处理, 若为普通键, 则转化为十进制的值,将键值显示在1602液晶显示器上。

PDIUSBD12固件程序

    固件设计的目标就是使PDIUSBD12在USB上达到最大的传输速率。PDIUSBD12的固件设计成完全的中断驱动。当CPU处理前台任务时,USB的传输可以在后台进行。这就确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。

   后台ISR(中断服务程序)和前台主程序之间的数据交换可以通过事件标志和数据缓冲区来实现,其原理图如图4所示。在ISR中,固件将数据包从PDIUSBD12内部缓冲区移到循环数据缓冲区,并在随后清零PDIUSBD12的内部缓冲区,以便接受新的数据包。CPU可以继续当前的前台任务直到完成。

图4 前后台工作原理

     对于这种结构,主循环不关心数据是否来自USB、串口还是并口,其只检查循环缓冲区内需要处理的新数据。主循环程序专注于数据的处理,而ISR 能够以最大可能的速度进行数据的传输,相似的控制端点在数据包处理时采用了同样的概念,ISR 接收和保存数据缓冲区中的控制传输并设置相应的标志寄存器,主循环向协议处理程序发出请求,由于所有的标准器件级别和厂商请求都是在协议处理程序中进行处理,ISR 得以保持它的效率而且一旦增加新的请求只需要在协议层进行修改。

USB在WinCE下驱动程序和应用程序

   系统采用的是ARM9微处理器作为主机,并且选用ARM9中的S3C2410作为系统的核心控制器。S3C2410内部集成了USB设备控制器,完全兼容USB1.1协议并且集成了USB收发器。WinCE操作系统下有自带的一些驱动程序,但是这些驱动程序不能满足本系统的设计需求,所以需要编写USB Host驱动程序。

   应用程序是系统与用户的接口, 它通过通用驱动程序完成对外设的控制和通信。主机用户程序的编写使用EVC++ 编译环境下的API 函数实现。程序中主要用到两个API 函数: CreateFile( )和DeviceIoControl( )。首先查找设备, 打开设备的句柄: 调用Win32 函数CreatFile( )得到设备驱动程序的句柄。然后进行读写和控制操作: 调用Win32 函数DeviceIoControl(),通过得到的句柄把IoControlCode 和相关的输入输出缓冲区提交给驱动程序。最后关闭设备句柄: 当退出应用程序时, 用CloseHandle ( )关闭设备。

结语

   本文提出的嵌入式数控键盘已经设计完成,在项目组测试中达到了预期的效果。用USB键盘输入时,在WinCE操作系统下使用记事本的方式在LCD上显示键值,并且在应用程序中可以根据用户需求定制按键的具体功能,满足数控系统的需要。

参考文献:

[1]. ZLG7290 datasheet http://www.dzsc.com/datasheet/ZLG7290_734333.html.
[2]. PDIUSBD12 datasheet http://www.dzsc.com/datasheet/PDIUSBD12_52.html.

关键字:WinCE  操作系统  USB数控键盘  S3C2410 引用地址:基于WinCE操作系统的通用USB数控键盘设计

上一篇:嵌入式系统在机器人视觉中的应用
下一篇:基于FPGA的DS/CDMA解扩解调模块设计与实现

推荐阅读最新更新时间:2024-03-16 13:21

基于WinCE的CAN适配卡驱动程序的设计与实现
1 引言   WinCE是一种为多种嵌入式系统和产品设计的紧凑、高效、可升级的操作系统,WinCE 采用标准模式,其最主要的特征:为有限的硬件资源提供了多线程、多任务和完全优先级的计算环境。   WinCE操作系统支持两种类型的驱动程序:本地驱动程序(Build-In),是把设备驱动程序作为独立任务实现,直接在顶层任务中实现硬件操作,完成特有专用的驱动程序;流接口驱动程序,WinCE的I/O系统将设备程序作为内核过程实现,这种方式便于实现I/O子系统的层次模型,便于文件系统一起把设备作为特殊文件处理,提供统一的管理、统一的界面和统一的使用方法,并把设备、文件及网络通信组织成为一致的更高层次的抽象,为用户提供统一的系统服务和用户接口
[嵌入式]
Linux操作系统决定在所有AMD fTPM上禁用RNG
上个月,Linus Torvalds 发表了一篇文章,对 AMD fTPM 随机数生成器在更新固件/BIOS 后仍给用户带来问题表示失望。AMD Linux 工程师马里奥-利蒙切罗编写了一个补丁,今天合并后,所有 AMD fTPM 都禁用了 RNG。 马里奥在该提交中总结道: tpm: 禁用所有 AMD fTPM 的 RNG 当 CPU 已支持 RDRAND 指令时,TPM RNG 功能对于熵而言并非必要。TPM RNG 功能之前已在部分 AMD fTPM 系列上禁用,但仍有报告显示某些系统存在因 TPM RNG 功能而导致卡顿的问题。现已扩大禁用所有 AMD fTPM 的 TPM RNG 使用,无论其版本是否声称已修复。
[嵌入式]
面对不断升级的内核如何学习linux设备驱动
  面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的特性、搭建新环境是一项非常繁琐的事情。本文想从以下3个方面探讨一下“面对不断升级的内核,如何学习linux设备驱动”。   内核发展的现状及其对技术人员的影响   Linux目前主要维护2.4和2.6两个内核版本。在http://www.kernel.org/ 网站上已经可 以下载到最新的2.6内核linux-2.6.31,及最新的2.4内核linux-2.4.37。稳定版本号基本上是1~3月更新一次,如:
[单片机]
基于STM32从零写操作系统系列---bootloader
本章主要使用汇编语言编写STM32F103(以下称为“该芯片”)的启动代码。具体结构如图: 启动模式 该芯片可以通过设置BOOT0和BOOT1两个引脚,选择不同的启动方式,正常情况下BOOT0=0,BOOT1=0(0为低电平)。即,芯片将从Flash中加载代码启动。 当芯片上电/复位后,芯片首先从地址0x0000_0000处获取栈地址,然后将地址0x0000_0004处的值赋值给PC寄存器。按照PC寄存器的值,取第一条指令,执行......具体如图: 地址0x0800_0205处的具体代码如图: 简单来说,地址0x0000_0004处存放的是复位处理函数的地址。当上电/复位时,芯片硬件会自动将
[单片机]
基于STM32从零写<font color='red'>操作系统</font>系列---bootloader
基于S3C2410A微控制器的嵌入式数字示波器的应用设计方案
1 引言 嵌入式数字示波器是近年发展起来的一种实现数据及波形实时显示的智能终端设备。目前通用的数字示波器多采用DSP、内嵌微处理器型FPGA或DSP+FPGA结构。嵌入式数字示波器可看成是一种低成本、功能相对较少、可作为一个模块使用的嵌入式智能终端。虽然DSP数据处理能力强大,运行速度较高,FPGA灵活性强,可以充分地进行设计开发和验证,便于系统升级。但是,DSP和内嵌微处理器型FPGA一般价格较高。不适合在低成本的嵌入式数字示波器开发中使用。 ARM是面向低价位市场设计的一种RISC微处理器,其优势是性价比高,适合嵌入式数字示波器的需求。当前采用ARM芯片设计的嵌入式数字示波器主要基于ARM7内核的微控制器S3C44BOX。
[单片机]
基于<font color='red'>S3C2410</font>A微控制器的嵌入式数字示波器的应用设计方案
扶植国产操作系统 助力网络空间安全
    ——专访中国工程院倪光南院士   CNII网讯(记者郭思岐) 2015移动智能终端峰会即将于12月23至24日在北京召开,本次会议由工业和信息化部指导,中国信息通信研究院主办,将在智能家居、终端安全、移动办公等若干领域展开深入交流。终端安全的讨论是本次大会的一大重点,为此,本次大会的合作媒体CNII在会前对中国科学技术研究所研究员,中国工程院院士倪光南进行了专访,就中国智能终端操作系统的问题请倪院士进行了解读。     中国需要构建自主操作系统 截至2015年6月,中国网民规模达6.68亿,互联网普及率为48.8%,中国早已成为名副其实的“网络大国”。但从“网络大国”到“网络强国”,中国要走的路还很远。倪
[手机便携]
s3c2410内核的起始地址
在linux-2.6.24.4/arch/arm/kernel/head.S中有这样的一段话。 * swapper_pg_dir is the virtual address of the initial page table. * We place the page tables 16K below KERNEL_RAM_VADDR. Therefore, we must * make sure that KERNEL_RAM_VADDR is correctly set. Currently, we expect * the least significant 16 bits to be 0x8000, but we c
[单片机]
实时操作系统μC/OS-II在MCF5272上的移植
摘要:介绍了实时操作系统μC/OS-II的特点和内核结构,并首次实现μC/OS-II在Motorola嵌入式处理器MCF5272上的移值。 关键词:μC/OS-II MCF5272 移植 GNU工具链 作为一个实时内核,μC/OS从1992年开始为人们熟悉,到现在已经发展为μC/OS-II。ΜC/OS-II最多支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore(信号量)、Mailbox(邮箱)、Message Queue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,μC/OS-II公开所有的源代码,并可以免费获得,对商业应用收取少量License费用。一般商用操作系
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved