前言:经常写一些触摸按键相关的代码,整理如下。方便查阅。
1. 操作说明
1.1 时序(Data&Clock)
TC04B 配备有一个串行接口,允许与外部设备进行简单的通讯。当触摸芯片侦测到触摸键被按,会在Data 脚输出低电位,可唤醒主机,主机在接收到低电位后,由 Clock 脚输出时钟信号,并从 Data 脚回读按键值。
当在 Clock 脚输入低电位时,触摸芯片准备数据,Clock 脚送出高电位后,主机从Data 线读取数据。每次读取数据以 8 个时钟信号一组。也可用轮询的方式直接读取键值,不必等待 Start 位。当数据读取错误时,需等 6ms 左右 , 才能再重新读取一次。
1.2 键值
当 Clock 引脚接收到时钟信号,触摸芯片将会产生一个 8 位的数据字节,并从 Data引脚移出。其中 Bit6 ~ Bit4 产生校验和,用来表示被触摸按键的总数。例如校验和为“010”,这意味着有两个键被触摸。至于是哪个按键被触摸,可以查看 Bit3 ~ Bit0 位状态。Bit3 ~ Bit0 用于指示相应的触摸按键Key4 ~ Key1 是否被触摸。若为零则表明相应的按键被触摸,若为 1,则表明相应按键未被触摸。
bit | 描述 |
---|---|
Start bit | 当按键状态改变时, 由 Data 脚送出低电位,唤醒主机,主机读取键值 |
Bit0 | Key1 状态 (0= 按键,1= 松键 ) |
Bit1 | Key2 状态 (0= 按键,1= 松键 ) |
Bit2 | Key3 状态 (0= 按键,1= 松键 ) |
Bit3 | Key4 状态 (0= 按键,1= 松键 ) |
Bit6~4 | 核对总数:“0”的总数,即被触摸按键的总数。 |
Bit7 | 停止位,永远为 “1”( 高状态 ) |
代码说明
- 获取一个字节需要的Clock周期数为8,并且每个Clock周期的高低电平分别占用半个周期,所以在获取一个按键字节时整个Clock引脚改变次数为