梁启权
(深圳市汇顶科技股份有限公司,广东深圳 518048)
主动笔书写时,屏检测主动笔在屏中的坐标,同时接收来自主动笔的笔尖压力信息,智能终端结合主动笔的坐标信息和压力信息输出笔迹,实现主动笔在屏中划线或书写。蓝牙传输压力会有延时,如图1为传输延时的示意图,笔触屏时,笔检测的实际压力从无到有,再逐渐增大;当第n周期笔检测到压力时,通过无线方式将当前的压力信息传输给屏,由于传输延时,屏在第(n+m)周期才收到笔在第n帧检测的压力信息,即延时了m帧。此压力传输延时,会导致主动笔书写下笔的首笔漏输出和抬笔拖尾现象,影响书写体验。苹果的Apple pencil和华为的M-Pencil也是通过蓝牙通信传输压力,同样存在蓝牙传输压力延时的问题。为了解决此问题,其通过判断触摸屏接收主动笔下行打码信号的幅值进行提前出压力,即当触摸屏检测到主动笔下行信号幅值大于阈值,则提前出压力。但屏幕检测笔信号存在不均匀问题,如屏幕远端检测到笔的信号较近端较小;同时主动笔由于结构原因,笔竖直和倾斜时,其在触摸屏同一位置的幅值也不一致。此不一致导致选取正确的下行幅值阈值存在困难,阈值太大,可能导致部分屏区域划线断线,阈值太小,则出现快写时因笔尖离屏太近而连笔。本文提出的通过增加指示是否有压力编码位的方案很好的解决上述问题。
如图2,电容笔由以下几部分组成:
笔尖:其将高压打码信号输出给屏,用于触摸屏检测笔尖坐标位置,同时笔尖直接和压力传感器接触,将主动笔书写过程中笔尖感应到的压力传导給压力传感器。
压力检测电路:其包含压力传感器及压感信号放大电路,用于检测笔尖压力信息。
主处理器:对压力进行采样和处理,根据主动笔协议产生电容笔低压打码逻辑信号,响应gsensor、按键等外部事件,并对整笔的低功耗进行管理。
图1 蓝牙传输延时示意图
低功耗蓝牙:接收来自主机的命令,并将主动笔的压力等信息传给主机。
升压电路:根据主动笔协议的要求,将主处理的低压打码逻辑进行升压,一般升压电压在16V~40V之间。
如图3所示,触摸屏感应层包含了驱动通道Y和感应通道X。当触摸屏检测主动笔的坐标时,由笔尖电极发出信号,主动笔与驱动通道与感应通道之间都会有存在耦合电容,信号经过耦合电容耦合到通道上,再由触摸控制器的感应电路来检测信号量,此时触摸屏的驱动通道与感应通道都会连接到触摸控制器的感应电路上。在此检测过程中,触摸控制器只接收信号,不发出驱动信号。触摸屏检测到的笔端信号,可以实现坐标定位。主动笔发送信号可以为方波、正弦波或三角波等,实际使用的频率可以为几十KHz到几百KHz之间[1]。
图2 电容笔的硬件组成
图3 触摸屏检测原理图
触摸屏检测到主动笔的坐标可以实现笔尖定位,当主动笔传给触摸屏的压力为非0时,则在屏上出现笔迹,即出现笔迹的条件是触摸屏检测到笔的坐标且笔尖有压力[2]。
图4为主动笔数据流的示意图,触摸屏对主动笔笔尖高压打码信号进行检测得到主动笔坐标,坐标经触摸屏驱动、系统后由主动笔APP获取。主动笔对压力数据进行处理得到压力等级,主动笔通过蓝牙将压力数据发送给屛端蓝牙,经屏蓝牙驱动、系统后由主动笔APP获取。
主动笔书写时,屏在笔靠近一定距离即可检测到坐标,当主动笔压力为非零,则输出笔迹。蓝牙传输压力过程中,屛端蓝牙芯片解析压力数据、驱动上报压力数据和系统处理压力数据都有延时,导致主动笔APP获取的压力信息较笔尖实际感应的压力有延时。当压力传输延时大于坐标传输延时,会有首笔漏输出和尾笔拖尾问题。
图5为屏笔时序图,屏在笔打码的beacon时序上进行TX和RX两个方向的坐标采样,得到屏的二维坐标。屏在Ink的时序上进行采样,主动笔在笔尖无压力时不对Ink段打码,此时屏检测到的Ink信号较小;主动笔在笔尖有压力时进行Ink段打码,此时屏检测到的Ink信号较大。
图4 主动笔数据流
图5 屏笔时序
当Ink信号大于阈值时,表示笔尖有压力,此时触摸屏在给系统上报坐标额的同时上报Ink事件,告知系统当前笔尖有压力。同时主动笔实时的通过蓝牙将笔尖的压力等级传给屏。
图6 压力显示逻辑
图7 首笔压力状态图
如图6压力显示的逻辑,当蓝牙传输的实际压力等级为0,而有Ink事件,表示笔尖从无压力到有压力状态变化,此时由于蓝牙传输延时而有首笔漏输出问题,系统在此时显示一个较小的模拟压力进行修改,避免首笔漏输出;当蓝牙传输的实际压力等级为非0,而无Ink事件,表示笔尖从有压力到到压力状态变化,此时由于蓝牙传输延时而有抬笔拖尾的现象,系统在此时按无压力显示,解决抬笔拖尾的问题。
采用压力标记标示提前显示下笔压力和提前结束抬笔压力显示,会造成笔迹不连贯和笔锋效果差的问题。故需在主动笔APP端对首笔和尾笔进行笔迹修正,以达到很好的笔锋效果。
(1)首笔修正:如图7,第n周期笔尖触屏,主动笔即检测到有压力,其在第n+1周期开始的打码中输出Ink打码段,此时屏可以检测到Ink段的幅值大于阈值,并报Ink事件给系统。一旦收到Ink事件,APP即可显示修正压力;由于蓝牙传输延时,第n+m周期时,系统才收到主动笔在第n周期输出的有压力数据,此时系统开始显示实际压力。
首笔修正压力按式(1)进行取值:
其中:i为Ink事件开始的周期序号,Pm为Ink事件后系统收到的第一个蓝牙压力值,n为压力修正周期数。
(2)尾笔修正:为了对尾笔笔迹进行修正,需APP通过先进先出的方式存储待修正的坐标和压力值。假设压力传输较坐标传输有60ms的延时,同时主动笔的坐标和压力上报周期为15ms,则APP至少存储最新的4个周期坐标和压力值用于笔迹修正。
如图8,笔正在划线,此时笔打码信号含Ink脉冲段,同时APP收到蓝牙发送的压力值为非零值;在第n+m周期笔尖离屏,并在打码中不输出Ink脉冲段,屏检测到Ink段的幅值小于阈值,并报无Ink事件给系统。此时将存储的压力值,进行修正之后再输出。
尾笔修正压力按式(2)进行取值:
其中:i为无Ink事件向有Ink事件方向的周期序号,Pm为抬笔时蓝牙收到的实际压力,n为压力修正周期数,P1(i)为蓝牙发送的实际压力。
图8 尾笔压力状态图
本文介绍了电容笔的硬件结构,分析了主动笔坐标和压力在系统中的数据流向,进而分析蓝牙传输压力的延时原因和原理。为了解决蓝牙传输压力延时导致的首笔漏输出和尾笔拖尾问题,提出了采用在主动笔下行打码中增加指示压力编码位的方案,并给出首笔和尾笔笔迹修正的思路。实际体验表明,该方案可以有效解决首笔漏输出和尾笔拖尾的问题,同时通过笔迹修正,可以保证书写过程中首尾笔的笔锋效果。