ESP-Tuning Tool 简介
ESP-Tuning Tool 概述
软件界面介绍
使用说明
系统要求
使用调试步骤
相关程序介绍
FAQs
在 Touchpad 传感器设计过程中,您需要监控 Touchpad 传感器数据(如原始计数值、基线值和计数差值),评估触摸产品的性能(灵敏度,信噪比,通道干扰),以进行调校和调试。
此文档帮助您选择正确的工具以查看 Touchpad 传感器数据。ESP-Tuning Tool 是用于调试 Touchpad 传感器性能的专用工具。阅读此文档之前,您应已熟悉 Touchpad 传感器相关技术。如果您需要了解有关 Touchpad 传感器常规理论和操作的更多信息,请参见 Touchpad 传感器入门。
ESP32 支持 UART 接口,用于监控 Touchpad 传感器数据。ESP32 中的数据通过 UART 接口被读取,并再通过 USB 接口发送到 PC,如图 1 所示,ESP-Tuning Tool 通过 ESP-Prog 从 ESP32 中收集 Touchpad 传感器数据并绘制成图表。
本文的例子使用下面的工具测试:
图 2 为 ESP-Tuning Tool 首页,分为四个部分:
标题栏
标题栏中可以选择显示 ESP-Tuning Tool 首页或者灵敏度测试页面。
通讯栏
通讯栏包含:
ESP32 管脚映射(ESP32 Pin Mapping)
ESP32 管脚映射界面显示当前设备所使用的 pad。
Touchpad 组合结构
显示当前设备的 Touchpad 组合结构,点击某个组合之后会跳转到该组合的详细数据查看界面(如图 5 所示)。
图 4 为 ESP-Tuning Tool 灵敏度测试页面。通过此界面用户可以测试触摸产品的灵敏度,信噪比,通道干扰情况。触摸性能达到产品要求后,设置通道变化率到触摸程序中。界面分为五个部分:
标题栏
标题栏中可以选择显示 ESP-Tuning Tool 首页或者灵敏度测试页面。
分析栏
分析栏中包含通道号、对应 ESP-Tuning Tool 分析的数据,例如:信噪比 (SNR),灵敏度 (Sensitivity)。
原始值条形图
显示当前设备所用 Touchpad 通道的原始值条形图。条形图显示触摸通道的实时脉冲计数值。记录下各通道无触摸和触摸时的读数值,计算出触摸变化率((非触摸值-触摸值)/ 非触摸值 * 100%)。触摸算法需要通道变化率来计算触摸阈值。触摸产品若具有较稳定的触摸体验,触摸变化率应大于 3%。
原始值折线图
显示当前设备所用 Touchpad 通道的原始值折线图。折线图可以显示触摸通道的历史数据。信噪比和通道干扰是评估触摸性能的重要参数。记录无触摸状态时读数的噪声幅值和触摸时读数变化量,计算得出通道的信噪比(SNR = 变化量/噪声幅值),如图 3 所示。要求信噪比应大于 5:1。因为通道走线存在耦合现象,触摸某通道时会导致相邻通道读数值发生变化,这种现象是通道干扰。折线图也能评估通道干扰的问题。
图 5 为 ESP-Tuning Tool 详细数据页面。检测触摸算法中的基线数据,触摸变化量,触摸阈值,触摸状态值等,评估触摸产品的各触摸参数是否正常运行。界面分为四个部分:
操作按钮栏
包含放大、恢复、开始、暂停、数据预览五个按钮
原始值折线图
Touchpad 组合状态/位置折线图
矩阵按键或由多个独立按键构成的按键组合时,此图表显示按键状态。0 为无按压,1 为按键被按下。滑条按键时,此图表显示滑条滑动轨迹,并记录上次滑条最后停在的位置。
Touchpad 组合所用通道
显示当前 Touchpad 组合所用的通道,并可以在复选框中勾选折线图中想要显示的 Touchpad 通道。
步骤 1:Touchpad 设备准备
IoT Solution settings > IoT Components Management > General functions > Touch Sensor
步骤 2:下载 ESP-Tuning Tool
步骤 3:连接 Touchpad 设备
步骤 4:打开 ESP-Tuning Tool 读取 Touchpad 传感器数据
通讯栏 | Touchpad 组合结构 |
步骤 5:根据 Touchpad 传感器数据修改 Touchpad 传感器相关参数
步骤 6:评估触摸性能
Touchpad 传感器相关参数如下:
/*
* Spring button threshold settings.
* Store the max change rate of the reading value when a touch event occurs.
* Decreasing this threshold appropriately gives higher sensitivity.
* If the value is less than 0.1 (10%), leave at least 4 decimal places.
* Calculation formula: (non-trigger value - trigger value) / non-trigger value.
* */
#if COVER_THICK_SPRING_BUTTON <= 1 /*!< Plastic cover thickness is 0 ~ 1 mm */
#define SPRING_BUTTON_MAX_CHANGE_RATE_0 0.1129 // (1196-1061) / 1196 = 0.1129
#define SPRING_BUTTON_MAX_CHANGE_RATE_1 0.1029 // (1215-1090) / 1215 = 0.1029
#define SPRING_BUTTON_MAX_CHANGE_RATE_2 0.0950 // (1053-953 ) / 1053 = 0.0950
#define SPRING_BUTTON_MAX_CHANGE_RATE_3 0.0856 // (1110-1015) / 1110 = 0.0856
#define SPRING_BUTTON_MAX_CHANGE_RATE_4 0.0883 // (1132-1032) / 1132 = 0.0883
#define SPRING_BUTTON_MAX_CHANGE_RATE_5 0.0862 // (986 -901 ) / 986 = 0.0862
void uart_init()
{
uart_config_t uart_config = {
.baud_rate = UART_BAUD_RATE,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
uart_param_config(UART_PORT_NUM, &uart_config);
uart_set_pin(UART_PORT_NUM, UART_TXD_PIN, UART_RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
uart_driver_install(UART_PORT_NUM, 2 * 100, 2 * 100, 0, NULL, 0);
}
tune_tool_set_device_info()
函数的作用是设置 ESP-Tuning Tool 中的设备信息 - 设备 ID、版本号、MAC 地址tune_dev_info_t
结构体中包含需要设置的设备信息typedef struct {
tune_dev_cid_t dev_cid;
tune_dev_ver_t dev_ver;
uint8_t dev_mac[6];
} tune_dev_info_t;
esp_err_t tune_tool_set_device_info(tune_dev_info_t *dev_info);
tune_tool_set_device_parameter()
函数的作用是设置 Touchpad 参数 - 滤波器阈值、消抖动延时、基线值等tune_dev_parameter_t
结构体中包含需要设置的 Touchpad 参数typedef struct {
uint16_t filter_period; //TOUCHPAD_FILTER_IDLE_PERIOD
uint8_t debounce_ms; //TOUCHPAD_STATE_SWITCH_DEBOUNCE
uint8_t base_reset_cnt; //TOUCHPAD_BASELINE_RESET_COUNT_THRESHOLD
uint16_t base_update_cnt; //TOUCHPAD_BASELINE_UPDATE_COUNT_THRESHOLD
uint8_t touch_th; //TOUCHPAD_TOUCH_THRESHOLD_PERCENT
uint8_t noise_th; //TOUCHPAD_NOISE_THRESHOLD_PERCENT
uint8_t hys_th; //TOUCHPAD_HYSTERESIS_THRESHOLD_PERCENT
uint8_t base_reset_th; //TOUCHPAD_BASELINE_RESET_THRESHOLD_PERCENT
uint8_t base_slider_th; //TOUCHPAD_SLIDER_TRIGGER_THRESHOLD_PERCENT
} tune_dev_parameter_t;
esp_err_t tune_tool_set_device_parameter(tune_dev_parameter_t *dev_para);
tune_tool_add_device_setting()
函数添加想要监视的 Touchpad 组合tune_dev_comb_t
结构体中包含 Touchpad 组合信息 - 组合类型、使用的 Touchpad 通道等tune_dev_setting_t
结构体中包含需要监视的所有 Touchpad 组合信息 - Touchpad 组合、这些组合使用的 Touchpad 通道typedef struct {
tune_dev_char_t dev_comb;
uint8_t ch_num_h;
uint8_t ch_num_l;
uint8_t ch[25];
} tune_dev_comb_t;
typedef struct {
uint32_t ch_bits;
tune_dev_comb_t dev_comb[10];
} tune_dev_setting_t;
esp_err_t tune_tool_add_device_setting(tune_dev_comb_t *ch_comb);
tune_tool_set_device_data()
函数的作用是更新将要发送到 ESP-Tuning Tool 的数据tune_dev_data_t
结构体中包含发送到 ESP-Tuning Tool 的 Touchpad 数据typedef struct {
uint8_t ch;
uint16_t raw;
uint16_t baseline;
uint16_t diff;
uint16_t status; //if the button is slide, the value of status if the position of slide.
//else the value of status is the state of button.
} tune_dev_data_t;
esp_err_t tune_tool_set_device_data(tune_dev_data_t *dev_data);
touch_tune_tool_task_create()
函数的作用是创建 ESP-Tuning Tool 数据接收任务和数据发送任务void touch_tune_tool_task_create()
{
xTaskCreate(&touch_tune_tool_read_task, "touch_tune_tool_read_task", 2048, NULL, 5, NULL);
xTaskCreate(&touch_tune_tool_write_task, "touch_tune_tool_write_task", 2048, NULL, 5, NULL);
}