主动笔自适应屏信号周期
主动笔自适应屏信号周期
前言:
不同的屏或不同的屏厂生产的屏,其屏信号周期会有一些偏差或不同。当屏与笔的周期不同步时,可能会导致通讯异常最终在书写体验上表现为断线甚至无法书写。本篇文章致力于讨论解决屏笔周期同步的问题。
1 周期同步的重要性
和大多数通讯方式相同,主动笔和屏的无线通讯也有主从的区分。主机发送Beacon(信标),从机找到Beacon的位置和识别其周期。目前主动笔的通讯协议有主机是笔和主机是屏两种。当屏作为通讯的主机时(Beacon的发送方),笔需要找到Beacon的位置和周期,只有笔和屏的处理周期同步(误差非常小)的情况下才能保证通讯稳定,功能正常。
本篇文章介绍在屏作为主机的情况下,笔自适应屏信号周期的方法。不同的屏打出的信号周期并不完全相同,会存在一定的周期差,在一些协议中会要求周期误差小于0.4us,当误差大于此时若笔端无法自适应调整这个误差,那么在这样的屏上使用会出现功能异常。一些协议规定屏的周期是固定值,但是不同屏厂设计出的这个“固定值”各不相同(屏厂有自己的设计考虑),如果笔无法自适应不同屏厂屏信号的周期差异,将使得设计出的笔只能在与其周期匹配的特定屏上使用。
2 自适应周期
自适应周期可以分为以下几步。
- 启动计时:在信号第一个上升沿处启动计时;
- 信号检查:检查接收的信号是否为屏信号;
- 停止计时:在信号第一个下降沿处停止计时;
- 信号检查:检查接收的信号是否为屏信号;
- 周期适应:计算屏信号周期和调整主动笔周期;
2.1 启动计时
笔和屏之间是无线通讯,通常通过“打码”传递数据(也有通过蓝牙的笔),屏打出的“码”信号先经过硬件电路的放大滤波后接入单片机ADC或比较器输入Pin。单片机捕获信号上升沿可以通过ADC或比较器形式,捕获到信号上升沿后需要立刻启动定时器计时,要使单片机响应时间最小需要使用事件触发的形式,不需CPU干预,外设直接触发外设。一些单片机还可配置ADC和CMP的滤波,这会导致对接收信号的滞后响应,硬件上的放大滤波也会导致接收信号比实际滞后,但由于前后两次接收(启动计时和停止计时)具有相同的时间时候,因此滞后时间被抵消。
如果误打开启动计时需要清零计时并重新打开。误打开是指在非屏信号的其他信号或噪声处打开,如果屏信号接收不完整也属于误打开,因为已经丢失了一段时间。
2.2 信号检查
主动笔只有在接收到一定量的信号后才能解析判断该信号是否为符合协议的屏信号,如果是其他无关信号则将其忽略并重新准备接收。但要准确测量信号的周期及出现位置,就需要找到信号的第一个上升沿,但仅靠一个上升沿无法判定后续是否是屏信号,因此信号检查步骤在启动计时之后。
信号的检查需要进行两次,分别在信号启动计时和信号停止计时之后。这个过程是确保计时的启动和停止都是在正确的屏信号第一个上升沿处操作,两个屏信号第一个上升沿之间的间隔时间即为屏信号的周期时间。
在屏信号第一个上升沿成功启动计时后,应该将接收关闭一段时间,因为屏信号是周期性出现的,应该忽略中间的无关信号,将接收关闭防止误触发计时停止。关闭的时间取决于屏信号最早可能出现的时间,应该略“早于”该时间。
2.3 停止计时
停止计时发生在第二次打开接收后,捕获到第一个上升沿,为了更低的操作延迟也应该使用事件触发的形式,硬件滤波放大与软件滤波产生的接收信号延迟与启动计时时产生的信号延迟相互抵消。
同样的,如果误打开启动计时需要清零计时并重新打开。如果打开一段时间后迟迟没有接收到任何上升沿信号(比如笔已经离开屏信号范围),此时应该认为测量失败,需要重新执行测量过程。这里所谓的“一段时间”的时长取决于屏信号的最晚出现时间,应该略“晚于”该时间。
2.4 周期适应
在前三步操作都正常的情况下就完成了对屏信号的周期测量,此时主动笔应该调整自己的通讯周期使得与屏周期保持一致,在有一些协议中周期的变化还会影响到主动笔打码信号的时序变化,这种情况打码时序也需要相应修改。
3 开启自适应功能的时机
由于不同的屏周期存在一致性问题,不同的屏厂设计的屏信号周期也可能不同,因此当主动笔从未对状态进入配对状态前应该先完成与屏信号的周期同步(自适应),在完成周期自适应前主动笔不应该发送Tx信号,因为在周期不同步的情况下发送信号可能会被屏误识别,导致出现功能异常(比如漏水)。当主动笔丢失屏信号后应该重置周期自适应功能,方便下一次配对前重新适应屏,因为丢失屏信号后可能立刻与另一块周期不同的屏配对书写。
4 流程图
1 | {% mermaid %} |