707N 触摸功能
📎 原始文档:https://www.kdocs.cn/l/cqy6MUYFzWst 707N 触摸功能
- 开启触摸 在sdk中打开触摸功能: 如截图在 SDK\apps\watch\board\br35\board_ac707n_demo\board_ac707n_demo_cfg.h 中打开总开关和配置触摸通道, 仅支持通道对应的 IO配置为触摸功能。
在SensorHub中打开触摸功能: 如截图在 SensorHub\apps\bsp\cpu\br35\config\sdk_config.h 打开低功耗触摸
- SDK获取触摸值
/**************************************************************************
* SDK 函数接口
**************************************************************************/
u32 lpctmu_get_cur_ch_res(u32 cur_ch);
/**************************************************************************
* SDK 测试函数
**************************************************************************/
void lpctmu_res_deal(void *priv)
{
u32 res = lpctmu_get_cur_ch_res(1);
printf("res = %d\n", res);
}
void lpctmu_test(void)
{
sys_timer_add(NULL, lpctmu_res_deal, 20);
}
- 配置触摸定时器(可选) 触摸sensor在小核中定时器运行,定时器默认20ms,如需要更改该定时器时间,请修改M2P_CTMU_SCAN_TIME的赋值:
注意:最高位是 时间单位: 0: 1ms, 1: 50ms , 低7位,是时间值
示例: M2P_CTMU_SCAN_TIME=0x94 // 1秒扫描一次
- 低功耗触摸(可选) 如果需要在SDK进低功耗后触摸功能依然有效,需要在小核中处理触摸信号,请在小核代码中添加函数(添加后底层库会调用该函数):
void lpctmu_res_deal(u32 ch, u32 res)
{
//判断触摸后可使用p2m_post_msg 接口发送消息给大核,大核将被唤醒
}
根据res判断是否触摸,有两种方法:
- 测试未触摸和触摸时的res值,取中间值作为阈值,比如未触摸res=5000 ,触摸res=3000, 取阈值为thr=(5000+3000)/2 =4000, 小于thr判断为触摸,高于thr判断为未触摸
- 测试未触摸和触摸时的res值,取0.7倍差值作为阈值,比如未触摸res=5000 ,触摸res=3000, 取阈值为thr=(5000 - 3000)*0.7 =1400,计算res前后的差值,差值小于-thr判断为:触摸-->未触摸,差值大于thr判断为:未触摸 --->触摸; 参考逻辑

- 补丁(可选) 进低功耗后,触摸sensor的定时器会不准(默认不唤醒sensorhub,节省功耗),如果您发现进低功耗后触摸不灵敏影响到您的使用,您就需要更换以下cpu.a文件(替换 SensorHub\apps\bsp\cpu\br35\liba\cpu.a)
更新a文件后需要rebuild
patch_0401_p11_code_fix_lpctm_keep_active_202507151642_cpu