Touch Key ============ 概述 ----------- Touch key 检测电路利用人体导电性,当人体接触电极后引发电容变化,通过检测电容变化感应人体接触。 例如 WQ7036 有六个输入通道,即 6 个 touch pad 可选。通过外接被测量的电容,感应外界触摸电容的变化,判断是否是触摸行为。 .. image:: ../../../_static/Touch_key.png :align: center 功能特性 ---------- - Touch Key: 每个 phase 可指定外部 pad;备用 phase 可以作为休眠 phase。 - 接口:标准 device 接口(init/deinit/open/close/read/start_dump/stop_dump)。 - 工作模式:支持中断模式。 - Touch key 具有防抖功能,防止误触发。 资源依赖 --------------- - touch key - OS timer - share task 工作模式 ----------- Touch 功能和入耳功能分别采用不同的工作模式: - Touch:相对阈值模式。当阈值的变化量达到设定值就会触发抬手/触摸中断。 - 入耳:绝对阈值模式。由于要确保耳机在耳内运动时不会触发入/出耳中断,绝对阈值模式更合适。在绝对阈值模式下,当外部环境发生变化导致设定的绝对阈值不能使用时,上层必须实时校准阈值。 Touch dump 设计说明 ---------------------- Touch dump 驱动内部设计了 ping-pong buffer,长度默认 32 个字节,开启 dump 后不停挂包;dump callback 回调的 buffer 携带 pad id 和 cdc 值。 open/close 接口可开启单一 pad,也可以 group 形式 open/close pad。 建议 open/close 一次性就打开/关闭需要的 pad。 start dump 开启某个 pad 的 dump ,需要一个个 pad 进行传参,如果是滑动功能,则支持以group形式传参开启 dump。 start dump 后不会自行停止,内部 dma ping-pong buffer 会自行挂包 dump,满足设置的 buffer 长度后自动 callback 给上层,直到调用 stop dump,释放该 pad dump 内存,停止 该 pad 数据的dump。 stop dump 可以停止对应 pad 的 dump ,直到停止所有 pad 的 dump后回收 ping-pong buffer ,至此 dma dump 完全停止。如果是滑动功能,则支持以 group 形式传参关闭 dump。 close 接口支持在 dma dump 进行时关闭 pad。 deinit 回收锁、dma channel、清零状态位、彻底关停 touch 模块等操作。 打开 TouchKey 宏控 TOUCH_KEY_DUMP_RAW_CDC ,可 dump 原始 raw cdc 点 ;建议 dump raw cdc 长度 大于 256,否则中断太多,share task 会来不及处理。 参考示例 ----------- :: /examples/touch_demo/ API 介绍 ------------- .. doxygenfile:: wq_touch_key.h