首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» 利用MC68HC908开发Pocket PC掌上电脑外设
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
利用MC68HC908开发Pocket PC掌上电脑外设
发短消息
加为好友
我是MT
当前离线
UID
1023166
帖子
6651
精华
0
积分
3328
阅读权限
90
来自
燕山大学
在线时间
230 小时
注册时间
2013-12-19
最后登录
2016-1-5
论坛元老
UID
1023166
性别
男
来自
燕山大学
1
#
打印
字体大小:
t
T
我是MT
发表于 2016-1-4 17:13
|
只看该作者
利用MC68HC908开发Pocket PC掌上电脑外设
Microsoft
,
Windows
,
可扩展性
,
掌上电脑
,
关键词
摘要:概述Pocket PC掌上电脑的软、硬件构架;以一个输入设备的开发应用为例,介绍如何利用Motorola MC68HC908单片机以及Microsoft Embedded Visual Tools编程工具,开发Pocket PC掌上电脑的外设及其驱动程序。 关键词:MC68HC908 Pocket PC Windows CE 外设 目前,Pocket PC掌上电脑正以其强大的多媒体性有和良好的可扩展性,逐步改变人们对于传统PDA的认识。 Pocket PC的应用领域迅速扩展,已经不再局限于日程、记事等简单功能。它能够胜伤从多媒体娱乐、文书处理,到诸如“交警事故的现场处理”等的各种应用。这些,为高效的移动办公、便携式的娱乐等开创了新的局面,同时也是新的市场。因为,每一个新的应用领域的出现,都伴随着相应的外设和应用程序的需求。 本文将以一个输入设备的开发为例,探讨如何利用Motorola MC68HC908单片机以及Microsoft Embedded Visual Tools编程工具,开发Pocket PC掌上电脑的外设及其驱动程序。
1 Pocket PC的软、硬件构架 Pocket PC的生产厂商包括COMPAQ、HP、Toshiba、联想、华硕等待,但其软、硬件构架是基本一致的。 1.1 Pocket PC的硬件构架 Pocket PC的硬件是以Intel StrongARM SA-1110通用处理器为核心来构建的。这是32位的RISC处理器,采用了ARM v4结构及指令系统,具有高性能(在206MHz条件下为2.1MIPS)、低功耗(在 206MHz条件下小于400mW)的优点。在该芯片中,除了CPU核心外,还集成了丰富的I/O和系统控制模块。使用SA-1110构建的Pocket PC系统框图如图1所示。 由图1可知:在Pocket PC的构架中,如要扩充外围的输入设备,可用的接口有IrDA、PCMCIA、UART串口,而USB为从接口,不适用。从使用的方便性来讲,以IrDA 最好;而从功能的强大性来讲,以PCMCIA最强。但综合考虑开发简便以及成本因素,则是普通串口最合适。
各厂商的Pocket PC产品均具备标准串口,但一般都是将串口与USB等其它接口集成起来,做在一个自定义的接插件标准中。 例如COMPAQ公司的iPAQ系列,就是采用自定义的14引脚插口,其引脚定义可以查阅网上资料iPAQ H3600 Hardware Design Specification。开发外设时,可以将其中与串口相应引脚引出做成RS232插口,也可以直接使用符合该标准的14引脚插头。 1.2 Pocket PC的软件系统 通常所说的“Pocket PC”以及“Pocket PC 2002”平台,就是Windows CE 3.0操作系统针对特定操作产品进行裁剪和开发后的定制化版本。 Windows CE是一种全新构建的
嵌入式
操作系统,但是它在界面外观以及编程接口上,与Windows NT操作系统极其相似。 基于这种相似性,Microsoft Embedded Visual Tools提供了开发Windows CE平台软件的最佳方案。它包括类似Visual Studio 6.0的C++/Basic开发环境、ARM交叉编译器和链接器、x86平台上的Pocket PC仿真器等等。
2 外设的开发 下面以一个输入设备的开发为例,介绍如何开发Pocket PC掌上电脑的外设及其驱动程序。这是一个简单的按键式输入设备,可以认为是键盘或者游戏手柄。主要是为了解决Pocket PC的手写输入方式,在输入大量方案和进行游戏娱乐时不够方便的问题。 该输入设备硬件部分用MC68HC908GP32型单片机设计实现,其固件程序负责完成扫描输入、编码、串行通信的功能。而Pocket PC上的接口驱动程序用Embedded Visual Tools开发,负责完成串行通信、解码、向系统发出输入消息的功能。此外,还可进一步实现组合按键、定制快捷输入等高级功能。 2.1 硬件开发 整个输入设备以MC68HC908GP32单片机为核心。该型号是Motorola HC08系列的通用型产品,片内资源丰富,功能强大。系统框图如图2所示。 按键的输入,可以使用普通的按键开关,也可以使用阵列的小键盘。按键输入产生的信号,送往GP32的通用I/O口PortA和PortB,其中PortA 是键盘模块的接口,可产生键盘中断。 单片机的串口通信,由其SCI异步串行模块外接MAX232实现。 2.2 单片机的固件开发 单片机的固件程序用汇编语言编写,使用P%26;amp;EWIN-IDE编译器进行编译。程序的流程如图3所示。 单片机的初始化,包括对基本配置、SCI串口和时钟TIM1等部分的初始化,如表1所列。 表1 固件程序的初始化 地 址寄存器值描 述 $001E CONFIG1 01 属性设置 $001F CONFIG2 3D $0036 PCTL 71 锁相环(产生2.4576MHz内部总线时钟) $0037 PBWC E0 $0038 PMSH 01 $0039 PMSL 2C $003A PMRS 80 $0013 SCCR1 40 SCI(9600bps双向传输速率) $0014 SCCR2 0C $0019 BAUD 02 $0023 T1MODH 1E TIM1时钟(溢出中断10次/s) $0024 T1MODL 00 $0020 T1SC 55 如流程图所示,固件程序在完成初始化后,就会尝试与Pocket PC建立连接。 在向Pocket PC发送设备标识字节,并且反馈回正确的驱动字节后,认为成功建立了连接。之后,程序置位中断允许位,开始进入空循环方式等待时钟中断。 每次时钟中断发生后,将读取端口状态,
然后进行判别、编码和送。输入的按键消息编码后用两个字节发送、并且附加上发送次序标识。 串口通信使用查询方式,通过反复查询SCI发送和接收器的状态,直到可以发送/接收数据为止。 *发送子程序 SENDATA:BRCLR7,SCS1,SENDATA STA SCDR RTS *接收子程序 GETDATA:BRCLR 5,SCS1,GETDATA LDA SCDR RTS 此外,Pocket PC的外设开发应该做便携、低功耗等方面的考虑。例如,在固件程序等待中断的空循环体,加入一句WAIT指令,即在每次中断调用返回后等待下次中断期间,系统进入WAIT低功耗方式。因为每两次中断的间隔为100ms,而每次调用的中断子程不超过几十条指令,系统绝大部分的时间是等待;所以,这样能够比较明显地降低功耗。 2.3 软件的开发 Pocket PC上的接口驱动软件的开发,包括完成从串口获取数据、解码、向操作系统插入虚拟按键消息以及对于虚拟按键消息的设定等功能。接口驱动程序流程如图4所示。 Windows CE操作系统在编程接口(API)上,保持了与Win32体系的高度兼容。同时,使用Embedded Visual Tools中的C++开发环境与使用VC++6.0具有很大的相似性。
在软件的开发中,使用到的技术主要有串口通信、多线程、发送虚拟按键消息、读写注册表等等。 这些功能都可以通过调用相应的API函数实现,如表2所列。Windows CE是一个全新架构的纯32位系统,它针对有限资源、高稳定度、模块化的需求,对于Win32 API函数作了大量的修改和简化。16位版本的API函数被舍弃,一些API函数对于Windows CE平台无意义的参数被定义为忽略,而且绝大部分API函数的内部实现已经不同于Win32平台了。但是,Windows CE版本的API函数在编程接口上与Win32平台还是保持了基于一致(见表2),因而,有VC++开发经验的人,能够比较快地转向Windows CE的程序设计。 表1 程序使用的API函数 API函数 功 能 注 释 CreateFil() 以文件名为“COM1:”打开串口,返回个文件句柄 ReadFile() 根据文件句柄,从串口读取字节 WriteFile() 根据文件句柄,向串口发送字节 PurgeComm() 清除串口之前的任务和数据 CreateThread() 创建新的线程,一个负责程序界面和主要功能,另一个负责串行通信 keybd_event() 向系统的消息队列中插入自定义的虚拟按键消息,第一个参数是要发送的虚拟按键键码 RegCreateKeyEx() 在注册表指定位置创建一个键,返回键的句柄 RegSetValueEx() 在指定的键内设定一个值 RegOpenKeyEx() 打开指定的键(获得键的句柄) RegQueryValueEx() 关闭已打开的键接口驱动程序(见图5)在确认设备连接后,从设备获取每次2字节的按键编码,然后将其在程序界面中即时显示出来,并且向Win CE的消息循环中插入相应的虚拟按键消息,供其它应用程序响应;而输入信号对应的按键可以自行定义,并保存在注册表中。 3 总结 在本文基础上,如果采用数/模转换、电机控制等模块作为输入/输出信号,或是采用MC68HC908系列其它型号的单片机,则可以针对不同的需求开发出各种Pocket PC外设,实现如数据采集、测控、通信等各种功能,形成各种新的Pocket PC便携式应用方案。 此外,如果采用μC/OS-II实时操作系统以及IrDA协议栈,还可以开发出基于IrDA接口的PocketPC外设,将更加方便易用。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议