概述
Cap-Touch控制器(CTC)提供 4 个用于电容感应的通道,可实现广泛的电容检测范围。
每个通道的灵敏度和阈值都是可配置的。
对于不同的应用场景和环境,应当调整参数以达到最佳性能。
Cap-Touch控制器(CTC)提供 9 个用于电容感应的通道,可实现广泛的电容检测范围。
每个通道的灵敏度和阈值都是可配置的。
对于不同的应用场景和环境,应当调整参数以达到最佳性能。
Cap-Touch控制器(CTC)提供 9 个用于电容感应的通道,可实现广泛的电容检测范围。
每个通道的灵敏度和阈值都是可配置的。
对于不同的应用场景和环境,应当调整参数以达到最佳性能。
Cap-Touch控制器(CTC)提供 4 个用于电容感应的通道,可实现广泛的电容检测范围。
每个通道的灵敏度和阈值都是可配置的。
对于不同的应用场景和环境,应当调整参数以达到最佳性能。
用法
Cap Test工具
Cap Test 工具是瑞昱(Realtek)开发的官方Cap-Touch校准工具,它可以校准通用和特定通道的Cap-Touch配置。
我们建议直接使用Cap Test 工具自动进行CTC校准。当然,用户也可以参考 CTC 初始化 和 CTC 校准 两节的内容,手动调整配置参数以满足特殊要求。
CTC 初始化
CTC 初始化的实现步骤如下:
调用
CapTouch_StructInit()
函数来初始化Cap-Touch的配置参数,如 SampleCnt、 ScanInterval、 DiffThreshold 等。设置以下配置参数,包括触摸阈值、噪声阈值、偏置电流以及每个通道的启用控制,并使用这些参数更新 步骤 1 中的参数。
const CapTouch_CHInitTypeDef ctc_ch_config[4] = { /*DiffThreshold, MbiasCurrent, ETCNNoiseThr, ETCPNoiseThr, CHEnable*/ {80, 0x0C, 40, 40, ENABLE}, /* Channel 0 */ {80, 0x0C, 40, 40, DISABLE}, /* Channel 1 */ {80, 0x0C, 40, 40, DISABLE}, /* Channel 2 */ {80, 0x0C, 40, 40, DISABLE}, /* Channel 3 */ };
const CapTouch_CHInitTypeDef ctc_ch_config[9] = { /*DiffThreshold, MbiasCurrent, ETCNNoiseThr, ETCPNoiseThr, CHEnable*/ {800, 0x0C, 400, 400, ENABLE}, /* Channel 0 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 1 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 2 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 3 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 4 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 5 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 6 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 7 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 8 */ };
const CapTouch_CHInitTypeDef ctc_ch_config[9] = { /*DiffThreshold, MbiasCurrent, ETCNNoiseThr, ETCPNoiseThr, CHEnable*/ {800, 0x0C, 400, 400, ENABLE}, /* Channel 0 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 1 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 2 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 3 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 4 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 5 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 6 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 7 */ {800, 0x0C, 400, 400, DISABLE}, /* Channel 8 */ };
const CapTouch_CHInitTypeDef ctc_ch_config[9] = { /*DiffThreshold, MbiasCurrent, ETCNNoiseThr, ETCPNoiseThr, CHEnable*/ {400, 0x0C, 200, 200, ENABLE}, /* Channel 0 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 1 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 2 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 3 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 4 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 5 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 6 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 7 */ {400, 0x0C, 200, 200, DISABLE}, /* Channel 8 */ };
每个通道调整参数的方法,可参考 CTC 校准。
注意
配置参数可以从Cap Test工具中获取。
调用
CapTouch_Init()
函数来配置Cap-Touch功能。通过
CapTouch_Cmd()
函数启用Cap-Touch功能,并通过CapTouch_INTConfig()
函数启用中断。
之后,Cap-Touch将开始工作。
CTC 校准
为实现最佳性能(灵敏度、可靠性或响应时间),用户在开发过程中需要调整触摸阈值、噪声阈值和偏置电流。
偏置电流设置
偏置电流需在开发阶段重点考虑,因为不同的电路(如 PCB 布局)具有不同的寄生电容和灵敏度。
当电路设计确定后,用户可以使用Realtek提供的Cap Test工具对偏置电流进行初始化。
校准原则:调整偏置电流,使在无触摸情况下基线信号值(baseline)约为 3300 ~ 3600。
阈值调整
差分阈值:推荐设置为参考差分阈值( baseline − touch signal)的 80%。
噪声阈值:推荐设置为参考差分阈值的30% ~ 40%。
用户可增减阈值以满足信噪比要求(信噪比 > 5)。
备注
具体操作请参考Cap Test工具的应用说明。
偏置电流过大将导致充电电压超出满量程,可能会损坏电路。
为防止漏电,使用Cap-Touch功能时,Cap-Touch的引脚应配置为
shutdown
或no-pull
状态,同时禁用该引脚的输入/输出功能。
CTC 唤醒
当将CTC用作唤醒源时,需按以下步骤配置 CTC 和系统:
参考 CTC 初始化 章节,初始化 CTC 并启用相关中断。
在
sleep_wevent_config[]
中,将相关唤醒源WAKE_SRC_CTOUCH
设置为WAKEUP_KM4
或WAKEUP_KM0
(取决于想要唤醒的 CPU),并将中断注册在同一CPU 上。在系统进入睡眠模式之前,通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 CTC IP 时钟。通过释放 KM4 中的唤醒锁来进入睡眠模式(由于启动时默认获取了
PMU_OS
,因此需要释放它)。唤醒时清除 CTC 中断,并通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 LBUS 时钟。
当将CTC用作唤醒源时,需按以下步骤配置 CTC 和系统:
参考 CTC 初始化 章节,初始化 CTC 并启用相关中断。
在
sleep_wevent_config[]
中,将相关唤醒源WAKE_SRC_CTOUCH
设置为WAKEUP_KM4
或WAKEUP_KM0
(取决于想要唤醒的 CPU),并将中断注册在同一CPU 上。在系统进入睡眠模式之前,通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 CTC 131K 时钟。通过释放 KM4 中的唤醒锁来进入睡眠模式(由于启动时默认获取了
PMU_OS
,因此需要释放它)。唤醒时清除 CTC 中断,并通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 LBUS 时钟。
当将CTC用作唤醒源时,需按以下步骤配置 CTC 和系统:
参考 CTC 初始化 章节,初始化 CTC 并启用相关中断。
在
sleep_wevent_config[]
中,将相关唤醒源WAKE_SRC_CTOUCH
设置为WAKEUP_KM4
或WAKEUP_KM0
(取决于想要唤醒的 CPU),并将中断注册在同一CPU 上。在系统进入睡眠模式之前,通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 CTC 131K 时钟。通过释放 KM4 中的唤醒锁来进入睡眠模式(由于启动时默认获取了
PMU_OS
,因此需要释放它)。唤醒时清除 CTC 中断,并通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 LBUS 时钟。
当将CTC用作唤醒源时,需按以下步骤配置 CTC 和系统:
参考 CTC 初始化 章节,初始化 CTC 并启用相关中断。
在
sleep_wevent_config[]
中,将相关唤醒源WAKE_SRC_CTOUCH
设置为WAKEUP_AP
、WAKEUP_NP``或 ``WAKEUP_LP
(取决于想要唤醒的 CPU),并将中断注册在同一CPU 上。在系统进入睡眠模式之前,通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 CTC 131K 时钟。通过释放 CA32 中的唤醒锁来进入睡眠模式(由于启动时默认获取了
PMU_OS
,因此需要释放它)。唤醒时清除 CTC 中断,并通过调用
RCC_PeriphClockSource_CTC()
函数将 CTC的时钟源切换为 LS APB 时钟。