西门子6ES7235-0KD22-0XA8产品规格
开发具有的移动手持设备是一项复杂的设计挑战,尤其是对于投射式触摸屏设计来说更是如此,它代表了当前多点触摸界面的主流技术。投射式电容触摸屏能够jingque定位手指轻触屏幕的位置,它通过测量电容的微小变化来判别手指位置。在此类触摸屏应用中,需要考虑的一个关键设计问题是电磁干扰(emi)对系统性能的影响。干扰引起的性能下降可能对触摸屏设计产生不利影响,本文将对这些干扰源进行探讨和分析。
投射式电容触摸屏结构
典型的投射式电容安装在玻璃或塑料盖板下方。图1所示为双层式传感器的简化边视图。发射(tx)和接收(rx)电极连接到透明的氧化铟锡(ito),形成交叉矩阵,每个tx-rx结点都有一个特征电容。tx ito位于rxito下方,由一层聚合物薄膜或光学胶(oca)隔开。如图所示,tx电极的方向从左至右,rx电极的方向从纸外指向纸内。
图1:传感器结构参考。
传感器工作原理
让我们暂不考虑干扰因素,来对触摸屏的工作进行分析:操作人员的手指标称处在地电势。rx通过触摸屏控制器电路被保持在地电势,而tx电压则可变。变化的tx电压使电流通过tx-rx电容。一个仔细平衡过的rx,隔离并测量进入rx的电荷,测量到的电荷代表连接tx和rx的“互电容”。
传感器状态:未触摸
图2显示了未触摸状态下的磁力线示意图。在没有手指触碰的情况下,tx-rx磁力线占据了盖板内相当大的空间。边缘磁力线投射到电极结构之外,术语“投射式电容”由之而来。
图2:未触摸状态下的磁力线。
传感器状态:触摸
当手指触摸盖板时,tx与手指之间形成磁力线,这些磁力线取代了大量的tx-rx边缘磁场,如图3所示。通过这种方式,手指触摸减少了tx-rx互电容。电荷测量电路识别出变化的电容(△c),从而检测到tx-rx结点上方的手指。通过对tx-rx矩阵的所有交叉点进行△c测量,便可得到整个面板的触摸分布图。
图3还显示出一个重要影响:手指和rx电极之间的电容耦合。通过这条路径,电干扰可能会耦合到rx。某些程度的手指-rx耦合是不可避免的。
图3:触摸状态下的磁力线。
专用术语
投射式电容触摸屏的干扰通过不易察觉的寄生路径耦合产生。术语“地”通常既可用于指直流电路的参考节点,又可用于指低阻抗连接到大地:二者并非相同术语。实际上,对于便携式触摸屏设备来说,这种差别正是引起触摸耦合干扰的根本原因。为了澄清和避免混淆,我们使用以下术语来评估触摸屏干扰。
earth(地):与大地相连,例如,通过3孔交流插座的地线连接到大地。
distributed earth(分布式地):物体到大地的电容连接。
dc ground(直流地):便携式设备的直流参考节点。
dc power(直流电源):便携式设备的电池电压。或者与便携式设备连接的充电器输出电压,例如usb接口充电器中的5vvbus。
dc vcc(直流vcc电源):为便携式设备器件(包括lcd和触摸屏控制器)供电的稳定电压。
neutral(零线):交流电源回路(标称处在地电势)。
hot(火线):交流电源电压,相对零线施加电能。
lcd vcom耦合到触摸屏接收线路
便携式设备触摸屏可以直接安装到lcd显示屏上。在典型的lcd架构中,液晶材料由透明的上下电极提供偏置。下方的多个电极决定了显示屏的多个单像素;上方的公共电极则是覆盖显示屏整个可视前端的连续平面,它偏置在电压vcom。在典型的低压便携式设备(例如手机)中,交流vcom电压为在直流地和3.3v之间来回震荡的方波。交流vcom电平通常每个显示行切换一次,所产生的交流vcom频率为显示帧刷新率与行数乘积的1/2。一个典型的便携式设备的交流vcom频率可能为15khz。图4为lcd vcom电压耦合到触摸屏的示意图。
图4:lcd vcom干扰耦合模型。
双层触摸屏由布满tx阵列和rx阵列的分离ito层组成,中间用电介质层隔开。tx线占据tx阵列间距的整个宽度,线与线之间仅以制造所需的小间距隔开。这种架构被称为自屏蔽式,因为tx阵列将rx阵列与lcd vcom屏蔽开。通过tx带间空隙,耦合仍然可能发生。
为降低架构成本并获得更好的透明度,单层触摸屏将tx和rx阵列安装在单个ito层上,并通过单独的桥依次跨接各个阵列。tx阵列不能在lcdvcom平面和传感器rx电极之间形成屏蔽层。这有可能发生严重的vcom干扰耦合情况。
充电器干扰
触摸屏干扰的另一个潜在来源是电源供电手机充电器的。干扰通过手指耦合到触摸屏上,如图5所示。小型手机充电器通常有交流电源火线和零线输入,但没有地线连接。充电器是安全隔离的,在电源输入和充电器次级线圈之间没有直流连接。这仍然会通过开关电源隔离变压器产生电容耦合。充电器干扰通过手指触摸屏幕而形成返回路径。
图5:充电器干扰耦合模型。
注意:在这种情况下,充电器干扰是指设备相对于地的外加电压。这种干扰可能会因其在直流电源和直流地上等值,而被描述成“共模”干扰。在充电器输出的直流电源和直流地之间产生的电源开关噪声,如果没有被充分滤除,则可能会影响触摸屏的正常运行。这种电源抑制比(psrr)问题是一个问题,本文不做讨论。
充电器耦合阻抗
充电器开关干扰通过变压器初级-次级绕组漏电容(大约20pf)耦合产生。这种容耦合作用可以被出现在充电器线缆和受电设备本身相对分布式地的寄生并联电容补偿。拿起设备时,并联电容将增加,这通常足以消除充电器开关干扰,避免干扰影响触摸操作。当便携式设备连接到充电器并放在桌面上,并且操作人员的手指仅与触摸屏接触时,将会出现充电器产生的一种坏情况的干扰。
充电器开关干扰分量
典型的手机充电器采用反激式(flyback)电路拓扑。这种充电器产生的干扰波形比较复杂,并且随充电器不同而差异很大,它取决于电路细节和输出电压控制策略。干扰振幅的变化也很大,这取决于制造商在开关变压器屏蔽上投入的设计努力和单位成本。典型参数包括:
波形:包括复杂的脉宽调制方波和lc振铃波形。频率:额定负载下40~150khz,负载很轻时,脉冲频率或跳周期操作下降到2khz以下。电压:可达电源峰值电压的一半=vrms/√2。
充电器电源干扰分量
在充电器前端,交流电源电压整流生成充电器高电压轨。这样,充电器的开关电压分量叠加在一个电源电压一半的正弦波上。与开关干扰相似,此电源电压也是通过开关隔离变压器形成耦合。在50hz或60hz时,该分量的频率远低于开关频率,其有效的耦合阻抗相应更高。电源电压干扰的严重程度取决于对地并联阻抗的特性,还取决于触摸屏控制器对低频的灵敏度。
图6:充电器波形实例。
电源干扰的特殊情况:不带接地的3孔插头
额定功率较高的电源适配器(例如笔记本交流适配器),可能会配置3孔交流电源插头。为了抑制输出端emi,充电器可能在内部把主电源的地引脚连接到输出的直流地。此类充电器通常在火线和零线与地之间连接y电容,从而抑制来自电源线上的传导emi。假设有意使地连接存在,这类适配器不会对供电pc和usb连接的便携式触摸屏设备造成干扰。图5中的虚线框说明了这种配置。
对于pc和其usb连接的便携式触摸屏设备来说,如果具有3孔电源输入的pc充电器插入了没有地连接的电源插座,充电器干扰的一种特殊情况将会产生。y电容将交流电源耦合到直流地输出。相对较大的y电容值能够非常有效地耦合电源电压,这使得较大的电源频率电压通过触摸屏上的手指以相对较低的阻抗进行耦合。
本文小结
当今广泛用于便携式设备的投射式电容触摸屏很容易受到电磁干扰,来自内部或外部的干扰电压会通过电容耦合到触摸屏设备。这些干扰电压会引起触摸屏内的电荷运动,这可能会对手指触摸屏幕时的电荷运动测量造成混淆。触摸屏系统的有效设计和优化取决于对干扰耦合路径的认识,以及对其尽可能地消减或是补偿。
干扰耦合路径涉及到寄生效应,例如:变压器绕组电容和手指-设备电容。对这些影响进行适当的建模,可以充分认识到干扰的来源和大小。
对于许多便携式设备来说,电池充电器构成触摸屏主要的干扰来源。当操作人员手指接触触摸屏时,所产生的电容使得充电器干扰耦合电路得以关闭。充电器内部屏蔽设计的质量和是否有适当的充电器接地设计,是影响充电器干扰耦合的关键因素
(human-computerinterface),又称用户界面、人机交互、人机接口等,是人与机器之间传递、交换信息的媒介.是用户使用计算机系统的综合操作环境。在商品竞争中,一个应用系统的成功与否在某种程度上也取决于用户使用界面的感受好坏,人机界面的设计在应用系统的设计中有着重要的作用。强调人机界面操作的实时性,简单化,强调在特定平台上特定应用的时间空间效率。在传统的小系统设计中。程序设计一般采用前后台工作方式。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,时间相关性很强的关键操作(crlticaloperation)是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理此信息这一步时才能得到处理.这种系统在处理信息的及时性上,比实际可以做到的要差。坏情况下的任务级响应时间取决于整个循环的执行时间。因为循环的执行时间不是常数,程序经过某一特定部分的准确时间也是不能确定的。如果程序修改了,循环的时序也会受到影响.
实时操作系统将应用分解成多任务,简化了应用系统软件的设计。良好的多任务设计,有助于提高系统的稳定性和可靠性,并使系统的实时性得到保证。很多实时操作系统提供了专用函数,简化了程序的测试。
1、系统设计
如图l所示,人机界面系统采用小键盘操作的文本菜单方式,使用在嵌入式数字视频录像dvr(digital videorecord)系统中。在msp430f149上移植μc/os—ⅱ来独立实现人机界面的功能,用户通过键盘输入指令,经过处理后发往主系统,把相应信息通过专用芯片的osd(0nscreen display)功能显示在监视器上;用户根据监视器上的信息进行菜单操作,形成人与机器的交互。
把人机界面部分从主系统中独立出来,用户所有输入的指令由单片机来处理,减少了主系统的工作量,使整个系统模块化,便于开发和调试,提高了可靠性和稳定性.这种人机界面设计具有通用性,便于移植到各种嵌入式系统中。本系统选用msp430nf149单片机,是基于以下三个方面的原因:
①osd功能需要经常刷新,并且要处理与主机部分的数据交换,要求单片机的计算速度足够高,并且要求嵌入式系统能够长时间正常运转,且芯片功耗低。
②实时操作系统本身要耗费一部分内存,0sd功能要求建立字库,要求内存空间足够大,否则要外接闪存,增加设计的复杂度及成本。
③要连接键盘电路,需较多i/o口。
msp430系列单片机是由ti公司开发的16位单片机。其突出特点是强调超低功耗,适合于各种功率要求低的应用;有较高的处理速度,在8mhz晶振的驱动下,指令周期为125ns;msp430f149具有60 kb的flash rom和2 kbram,可满足系统程序量和数据量大的要求,可以解决因为加载实时操作系统而增加的内存需求,具有2个串行通信接口,其中一个串口用于跟主系统通信,另一个可用于控制其他外围模块;具有48个可独立编程的i/o口,其中有2个具有中断功能的8位并行端口,在设计按键电路时,可方便地采用中断方式识别键值。
2、软件设计与实现
2.1 实时操作系统
μc/os—ii是一个源码开放,拥有抢占式内核,支持多任务的实时操作系统;任务被分为休眠态、就绪态、运行态、挂起态和被中断态五种状态,内核根据任务所处的状态对任务作相应的处理,已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务对cpu的使用权。系统大部分代码采用c语言编写,与硬件相关的部分很集中,并给出了规范的接口说明,移植相当方便,可应用于目前大多数型号的8位、16位、32位cpu。μc/os—ii提供的仅仅是一个操作系统内核,对硬件系统要求很低,很适合在低端cpu上开发小系统。
将μc/os—ii移植在msp430f149单片机上,对其进行裁减,只保留消息队列一种任务间通信方式,利用它的任务优先级抢占机制,使人机界面很好地满足嵌入式系统对实时性和可靠性的要求。下面详细介绍基于μc/0s—ii操作系统的程序设计。
2.2 软件设计
本系统的软件部分设计基于e-o模型的思想,划分事件和目标。以有限状态机的方式,在实时操作系统μc/os一ⅱ中,用状态机把目标和事件联系起来,实现oa(bbbbbb-bbbbbb)行为模式完成人机交互的过程,使以小键盘操作的文本菜单方式设计更清晰。
2.2.1 事件-目标驱动的用户界面模型
事件-目标驱动的用户界面模型,即e-o模型(e-vent-bbbbbb drive user interfacemodel),将人机交互活动归结为事件与目标的相互作用.事件是人机交互活动中传递的信息,目标是交互活动的对象;事件引发交互活动,目标是交互活动的承受者。e-o模型基于的基本行为模式是“目标-动作”(oa),以目标为核心,具有面向对象风格。
e-o模型由四个逻辑部件组成:①设备管理模块(device managementmodule),提供与各种交互设备的接口,实现设备无关特性;②事件管理子系统(event man-agementsubsystem),它读取输入设备的输入信息形成事件并进行统一管理,将反馈信息的事件解释为适当的输出指令并传送给输出设备;③目标管理子系统(bbbbbbman-agementsubsystem),创建、装载、保存用户界面中各类目标,并对目标进行管理,④事件-目标管理子系统(event-bbbbbbmanagementsubsystem),主要职责是实现事件与目标的整合,按适当策略控制事件在各目标结点之间流动,以形成和维持交互的过程,是整个用户界面系统的核心。
2.2.2 有限状态机的形式化描述
有限状态机fsm(finite statemachine)由状态、事件、转换和活动组成。每个状态有1个状态进入动作(entrybbbbbb)和1个状态退出动作(exitbbbbbb),每个转换有1个源状态和目标状态并且与1个事件相关联。当在源状态时,该事件发生且触发转换的监护条件为真,则顺序执行下列一些动作:①源状态的退出动作;②转换动作;③目标状态的进入动作。
fsm可以形式化表示为1个五元组:m=(0,i,λ,s,δ,s0)。
其中,s为有限状态集;
i为有穷的事件输入集;
0为有穷的输出集,
s0为初始状态集;
δ:s×i→s,进入下一个状态的过程;
λ:s×i→o,产生输出的过程。
t=δuλ。t中的每个元素又可以表示为1个五元组,t=(soure-state,target-state,bbbbb-event,con-straint,bbbbbb)。其中“source-state”和“target-state”分别表示t的初始状态和目标状态,“bbbbb-event”表示来自于i的输入事件或为空,“constramt”表示监护条件及输入事件参数等约束,bbbbbb表示转换执行的动作。
用软件实现有限状态机有两种方法:表格法和过程驱动法。表格驱动法利用一个二维数组。该数组中的短一行与一个状态相对应,每一列与一个输入事件相对应,每一项则与某一状态下对事件的处理相对应。表格驱动法适用于具有结构规则、操作简单的有限状态机。
过程驱动法为每一个状态都定义一个处理过程,处理过程实现在此状态时对事件的响应,包括输出处理及对当前状态值的转换。这个过程可以用case语句区分事件,并采用相应的处理。无论采用何种方法实现fsm,当fsm收到一条消息时必须知道当前的状态。为此,对应每一个状态机必须能够保存当前所处的状态。过程法适用于实现一个具有几种转换和复杂操作的有限状态机。
2.3 程序设计与实现
基于消息驱动的程序设计思想,为了保证系统的实时性,在中断中只负责发送消息到相应的任务的消息队列,由应用级的任务来处理,保证各个处理的时间是可确定的.主程序在消息循环中不断地判断各个任务的状态,执行进入就绪态的任务。这就允许采用异步方式处理各种中断及任务。
本系统程序中采用了两组有限状态机,运用消息驱动的方式来驱动状态的变更。一组是通信任务中以串口接收数据驱动为事件对象的有限状态机,另一组是以用户按键和命令码驱动为事件对象的有限状态机.在实时操作系统μc/os一ⅱ下,整个人机界面分为三个模块,即三个任务来实现,分别是键值处理模块、与主机通信模块和时钟模块。
(1)键值处理模块
ostaskcreate(keytaskstart,(void*)o,&taskkey-stk[],7);
先初始化所有的模块,在循环中接收并处理键盘的输入,key-process(charkeyvalue)根据相应的输入键值和系统所处的状态,对菜单进行相应的操作。
state_trans(charrxdata)根据键值输入事件负责调度系统的状态,并在相应的状态下,根据从主系统收到的信息显示菜单。
(2)主机通信模块
ostaskcreate(uarttaskskstart,(void *)o,& tasku-artstk[],6);
通过消息队列osqpend(os_event*pevent,intl6utimeout,int8u*err),接受串口中断发来的消息队列,对其中的数据进行处理。在人机交互的过程中,需要大量的与主系统的交互,单独用一个任务负责与主系统的通信,实现串口接收数据驱动的有限状态机。
(3)时钟模块
ostaskcreate(timctck,(void*)o,&timetickstk[],5);
时钟任务,使用单片机的时钟中断,可以设置各个任务需要的定时器,通过消息队列发给需要定时的任务。
2.3.1 串口接收数据驱动的有限状态机
为了保证通信的可靠,系统中采用停止等待协议。在发送数据前要对数据打包,接收到数据要先解包,单片机在接收主系统发过来数据包的后需要去掉通信协议字段,对有效数据进行正确的处理。为此,定义了一个frame-fsm类型的数据结构,用来对接收到的数据进行处理。
typedefstruct{
byte state; //当前所处的状态
byte sym_plas;//转义字符标志,若为1,表示需对当前
//数据转义
bytc datolenoth;//数据长度
byte cheeksum;//校验和
byte offset; //偏移地址,对应当前接收到的数据在
//该帧中的位置
byteframe_data;//帧内的有效数据
}frame_fsm;
利用主机发送过来的消息驱动有限状态机,串口接收数据驱动的有限状态机包括以下几种状态;
①任意状态。无论单片机原来处于何种状态,收到字符0xaa,都表明1帧新的数据即将开始发送。此时,如果单片机处于1帧正在接收的状态。就会丢弃原数据重新进入收到同步字符状态。
②任意状态(除了init_state之外)。无论单片机原来处于何种状态.收到字符0xfc,都表明系统中出现了转义字符。此时,将转义字符标志置1,丢弃当前接收的数据后返回;每一次进入重建帧处理函数后,系统会判断转义字符标志是否为l。若为l,则根据当前字符进行转义(当前字符为0x00,则转义为oxaa;当前字符为0x01,则转义为oxfc;如果为其他字符则丢弃),将转义字符标志重新清o。
③init_state,初始状态。在这个状态下,将重建帧的偏移地址和校验和清0,等待接收数据。收到起始宇符oxaa后,将状态转入aa_syn_state;收到其他字符都丢弃不理。
④aa_syn_state,收到同步字符状态。在这个状态下,mcu将重建帧的偏移地址和校验和清0,将状态置为接收源地址状态。
⑤src_addr_state,收到源地址状态。此时比较源地址是否是主机地址。若是,则转接收目的地址状态;否则,转初始状态。
⑥dest_addr_state,收到目的地址状态。此时比较目的地址是否是mcu地址。若是,则转接收数据长度状态;否则,转初始状态;
⑦data_len_state,接收数据长度状态。将数据长度备份,转入接收数据状态。
⑧data_state,接收正常数据状态。将接收的数据存入接收数组rebuf中,每接收到一个数据就将对应的偏移地址加l,接收数据长度减1,并且计算此时的校验和。当数据长度减为0时,表明l帧数据已经全部接收完毕,转入检验校验和状态。
⑨checksum_state,接收校验和状态。将接收的校验和与本地计算的校验和进行比较。如果两者相等,将状态转为init_state,对正确的数据帧进行处理,并给主系统发送一个确认帧;如果两者不等,丢弃该帧,状态转入init_state,等待接收新的数据帧。
对应的状态转换图(state transition diagram)如图2所示。
2.3.2 键值和命令码驱动的有限状态机
这组有限状态机主要依靠用户对菜单的操作进行状态转换,即把键值和命令码作为fsm的激励源,其中键盘消息是主要的激励源。应用层的fsm具有多种主状态,用户未按键或者是没有接收到新的数据帧时,状态处于idle_state;接收到消息后,转入对应的主状态。根据按键的不同或者是接收命令码的不同,转入对应的子状态进行处理。任务处理完毕,再将状态置为idle_state,按取消键,可回到上一级状态。
以用户控制云台上下左右转动为例,系统开始处于idle_state。若用户按云台镜头控制键,则进入云台镜头选择状态,并显示云台镜头控制菜单.选择云台控制选项后,进入云台方向设置状态;选择向上键,转入向上状态。在该状态执行向上命令操作后,状态重新转入idle_state,并伴随着输出菜单的相应变化,按取消键可回到上一级云境选择状态。对于其他按键,系统全部过滤掉不作响应,状态也不进行转换。云台控制的状态转换图如图3所示。
3、测 试
μc/os—iiv2.52较以前的版本,增加了两个系统任务一一cpu负荷监测任务与堆栈容量检查任务。这两个任务给程序的调试带来很大的方便。
将系统配置常数os_task_stat_en设为l,统计任务ostaskstat()就会建立。它每秒钟运行1次,计算出当前cpu的利用率,放在一个有符号的8位整数0scpuusage中,jingque度是l%。
μc/os-ⅱ内存是固定分配的,通过0staskstkchk()可确定每个任务实际需要的大堆栈空间,根据测得结果合理地分配内存空间。表l是用以上函数测出的系统参数。
与msp430单片机系统相应的调试工具bbbbbded workbench,可跟踪程序的运行。通过运行在pc机上bbbbbdedworkberlch能够追踪程序中各种参数的变化,查看单片机内存的使用情况。
结语
本系统使用μc/os—ii后,系统的总体性能有了很大提高。使用实时操作系统前。运用前后台的程序设计方式。在需要显示较多数据在屏幕上,又需要接收数据时,单片机处理不及时,可以通过调试工具workbench看到接收缓存接收的数据帧不完整,而不能正确地在屏幕上显示数据。移植操作系统之后,工作可靠,系统的反应速度,即实时性有了很大提高。文中介绍的人机界面与嵌入式主系统是独立的模块,可以灵活地在单片机上加载控制模块,适合应用于各种嵌入式系统中。