单片机/MCU论坛
直播中

李立华

11年用户 39经验值
擅长:嵌入式技术
私信 关注
[资料]

如何快速调通华仕飞触摸按键驱动

本帖最后由 lihwar 于 2018-4-29 11:02 编辑

HTK_触摸按键板_STM32驱动.zip (13.31 KB)
(下载次数: 9, 2018-4-23 13:08 上传)


华仕飞HTK100规格说明书V1.1.1.pdf (598.78 KB)
(下载次数: 3, 2018-4-29 11:00 上传)



华仕飞的触摸按键采用的是专业的触摸驱动方案,具有高效的触摸按键算法处理和抗干扰算法处理,是行业内具有良好性价比的产品。HTK100硬件接口可以同时兼容I2C、UART、IR三种通讯接口,支持中断输出,但是,在软件上暂时只能任选其中一种通讯协议,也就是说,只能烧录其中任意一种协议的软件。市面上免费派送的的HTK100支持的是I2C协议。由于I2C协议的很多优点,可以满足绝大部分用户的需求。当然,如果用户需要其它的协议,也可以通过访问官网,联系他们烧录特殊功能的软件,或定制化软件。

针对HTK100,官方网站现在已经推出了基于I2C和UART通讯协议的驱动,该驱动基于华仕飞自身所推出基于STM32的演示评估板,在官方网站和网上其他很多地方都有下载。其中,I2C采用的是GPIO口模拟I2C,程序简单易懂,可移植性强。当然,某些第三方论坛,也可以找到完全的华仕飞评估板的软件包,感兴趣的朋友可以上网找找。

现在,以HTK100的I2C协议为例,简述一下HTK100驱动调试方法。

(1)从官方免费申请或从网上买1~2块HTK100触摸按键板。HTK100采用6PIN1.26mm的接线座。早期的HTK100没有配送对应的线材,后期的才有配送。如果没有配送,用户需要自己在网上购买对应的线,或者自己手动焊接其它对应的线。

2)接线:将HTK100接上用户自己的主板。主板需要至少有I2C总线接口。如果没有,可以通过GPIO口模拟I2C。为避免主MCU频繁读取HTK100所造成的资源浪费,应采用外部中断方式读取HTK100的按键,所以,INT接口也应接。另外,为防止出在极其特殊情况下HTK100工作不正常的情况,复位引脚RST最好也接上MCU以便可以根据需要对MCU进行复位。当然,在资源不够时,RST可以悬空,或者通过一个大的电阻(推荐100K以)进行上接。HTK100内部既有软件看门狗,也有硬件看门狗。当程序出现异常跑飞的情况时,内部是可以自动复位的。

(3)IO口配置:

对于INT脚,配置为上升沿触发模式或者上升沿和下降沿双触发模式即可。

对于RST脚,配置为输出模式即可,可以为OD模式,无须上拉或下拉电阻。如果上拉或下拉,应接一个比较大的电阻。

I2C口配置的总线时钟应为200KHz以下;如果采用的是,每字节数据采用的是MSB在前方式传输,即数据位传输顺序为从高位在前。

如果采用的是GPIO模拟I2C的方式,则SDA最好配置为OD模式,这样SDA总线就无段通过软件频繁进行输入输出切换。如果您对芯片的这一功能不太放心,或者您没有这方面的经验,也可以通过软件进行输入输出切换。

(4)I2C驱动程序的编写。由于GPIO口模拟I2C对硬件的依赖性比较低,软件简单可控,所以笔者推荐在条件许可的情况下,尽量使用GPIO口模拟I2C。

(5)HTK100驱动程序

由于HTK100主要是读取触摸按键值,故其驱动比较简单

以下为来自官方HTK100的全部驱动。由于HTK100事实上并没有手势功能,所以针对手势读取的那部分驱动事实上是无效的。

(6)驱动的挂载及系统联调

对于一般的单片机系统而言,通过中断方式读取HTK100键值及其它状态值即可。当然,考虑到中断需要一定的时间,而中断服务程序需要需要快速响应且尽快退出,可以考虑在中断服务程序中置个标志位,然后在中循环中再读取相庆的键值及其它状态值即可。

(7)有关复位:

一般情况下,只需要主控板在上电时,通过软件上拉时即可。如果为了增强软件的可靠性,以预防各种可能出现的异常情况,可以在程序的某些地方增加一部分代码,即通过调用_HTK_I2C_Read_optimal_touch_keyval()函数无法读取数据时,即可以调用复位函数启动HTK100的硬件复位功能。但该复位函数不应在INT中断服务程序中调用,因为如果HTK100没有正常工作,同时也不会出现中断信号。一种比较可靠的办法就是定时调用_HTK_I2C_Read_optimal_touch_keyval()检测HTK100是否正常工作。如果工作不正常,即启动复位程序。




更多回帖

发帖
×
20
完善资料,
赚取积分