这是最新(主)开发分支的文档。如果您正在查找以前版本的文档,使用左侧的下拉菜单选择所需的版本。

触摸传感器

简介

触摸传感器系统由保护覆盖层、触摸电极、绝缘基板和走线组成,保护覆盖层位于最上层,绝缘基板上设有电极及走线。触摸覆盖层将引起电容变化,根据电容变化,可以判断此次触摸是否为有效触摸行为。

W801 不支持触摸传感器。

功能列表

  1. 初始化——初始化触摸传感器驱动。

  2. 设置阈值——设置触摸传感器的阈值。

  3. 获取阈值——获取触摸传感器的阈值。

  4. 读取计数——读取触摸传感器的计数值。

  5. 启动传感器——启动触摸传感器。

  6. 停止传感器——停止触摸传感器。

  7. 注册回调——注册触摸传感器回调函数。

功能概述

触摸传感器电路设计参考如下表

触摸传感器可以以矩阵或滑条等方式组合使用,从而覆盖更大触感区域及更多触感点。

主要功能

初始化触摸传感器

使用触摸传感器前需要调用 wm_drv_touch_sensor_init() 函数初始化驱动。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

设置阈值

设置触摸传感器的阈值,可以调用 wm_drv_touch_sensor_set_threshold() 函数。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

wm_drv_touch_sensor_set_threshold(touch_dev, WM_TOUCH_SENSOR_NUM_1, 100);

获取阈值

获取触摸传感器的阈值,可以调用 wm_drv_touch_sensor_get_threshold() 函数。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

uint32_t threshold;
wm_drv_touch_sensor_get_threshold(touch_dev, WM_TOUCH_SENSOR_NUM_1, &threshold);

读取计数

读取触摸传感器的计数值,可以调用 wm_drv_touch_sensor_read_countnum() 函数。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

uint32_t countnum;
wm_drv_touch_sensor_read_countnum(touch_dev, 0, &countnum);

启动传感器

启动触摸传感器,可以调用 wm_drv_touch_sensor_start() 函数。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

wm_drv_touch_sensor_start(touch_dev, WM_TOUCH_SENSOR_NUM_1);

停止传感器

停止触摸传感器,可以调用 wm_drv_touch_sensor_stop() 函数。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

wm_drv_touch_sensor_stop(touch_dev, WM_TOUCH_SENSOR_NUM_1);

注册回调

注册触摸传感器的回调函数,可以调用 wm_drv_touch_sensor_register_callback() 函数。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

void touch_callback(wm_touch_sensor_num_t touch_num, void *priv)
{
}

wm_drv_touch_sensor_register_callback(touch_dev, WM_TOUCH_SENSOR_NUM_1, touch_callback, NULL);

去初始化触摸传感器

不再需要使用触摸传感器时,可以调用 wm_drv_touch_sensor_deinit() 函数反初始化驱动,释放资源。示例:

wm_device_t *touch_dev;
touch_dev = wm_drv_touch_sensor_init("touch_sensor");

wm_drv_touch_sensor_deinit(touch_dev);

应用实例

使用 touch sensor 基本示例请参考: examples/peripheral/touch_sensor

API 参考

  • 触摸按键 touch button

  • 触摸滑条(暂未实现)

  • 触摸矩阵按键(暂未实现)