第14章 电容感应模块
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在普通模式下,在600ns内驱动电容最大到100pF; 在高驱动模式下,在15us内驱动电容最大到30nF。
电容感应触摸模块的结构
2.低通滤波器 提供两个可调的低通滤波器(Low Pass Filter,LPF) 。每个LPF通过2:1复用开关选择输入。
在左侧,LPF输入是AMUXBUSL和AGL[0]; 在右侧,LPF输入是AMUXBUSR和AGR[0]。
2)到I/O引脚的DSI输出能用于来自UDB的 电容感应的时钟源。编程PRTx_BIE[y]用于输入(每端口 /每引脚),并且清除PRT[x]_CAPS_SEL[y]选择DSI输出 作为电容感应的时钟。
电容感应模块的结构
注意:静态连接外部的集成电容Cmod(没有切 换),使用PRT[x]_AMUX寄存器将其连接到AMUXBUS, 并且PRTx_CAPS_ SEL[y]=0,PRTx_BIE[y]=0。
接受其它参数默认设置; 点击“OK”按钮,关闭属性设置界面。
创建和配置工程
--添加并配置字符LCD
下面给出添加并配置字符的步骤,主要步骤包括: 1.拖动Character LCD并将其放置在原理图中( Component Catalog->Display-> Character LCD)。 2.双击LCD_Char_1元件。 3.设置参数如下:
电容感应触摸模块的结构
4.GPIO配置 右图给出了GPIO结构。端口模拟 全局复用寄存器(PRT[x]_AMUX)被 用来连接端口引脚到模拟复用总线。 设置CAPSx_CFG1寄存器的io_ctrl[1:0] 来使能上拉或下拉。 下图给出了在两种配置的感应电容 的切换,用来将电容转换成相对应的电 阻进行测量。
电容触摸感应实现
该设计实现电容感应的应用。开发板首先初始化液 晶屏和元件。在主循环中,它扫描两个按钮是否有激活 。并且在LCD上显示触摸感应的状态。
电容触摸感应实现
--创建和配置工程
1.在计算机上的桌面上,选择开始->所有程序>Cypress->PSoC Creator 2.0->PsoC Creator 2.0。打开PSoC Creator软件;
创建和配置工程
--添加并配置CapSeLeabharlann Baiduse
创建和配置工程
--添加并配置CapSense
选择Buttons条目,在按钮
上,连续点击两次,
添加两个触摸按键部件Button0和Button1;
选择Linear Sliders条目,在按钮 添加触摸滑块部件LinearSlider0;
上,点击一次,
电容感应触摸模块的结构
电容感应触摸模块的结构
1.参考驱动 这个驱动器用来快速的初始化网络到独立于供电电源 的一个电压。这个能力加速了电容扫描,并且改善了电源 抑制比。两个参考驱动独立运行;一个驱动到AMUXBUSL ,另一个驱动到AMUXBUSR。通过设置CAPSX_CFG0寄存 器的out_en位,将驱动器连接到AMUXBUS。 参考驱动支持普通和高驱动模式,通过设置 CAPSX_CFG0寄存器的boost位选择驱动模式。
LCD_DisplayState(); } }
/************************************************************************** ***** *函数名字: LCD_DisplayState *************************************************************************** ****/
创建和配置工程
电容感应算法
--电容感应Δ-Σ算法
下图给出了CSD算法的波形图。
电容感应算法
--电容感应Δ-Σ算法
电容感应Δ-Σ通过将积分电容的电压保持在目标门 限的附近,并且基于目前的比较器的输出状态对电容进行 充电和放电操作来实现的。
感应电容在Vdd和积分电容之间进行连续的切换,用 来在每个切换周期内驱动积分电压升高。
电容感应触摸模块的结构
3.模拟复用总线
除了SIO和USB引脚外,所有的GPIO引脚均支持电容 感应操作。用于电容感应基本模拟复用总线是AMUXBUS ,该总线有两个网络(AMUXBUSL和AMUXBUSR)用于两 个同步的感应操作。这些也能被短路生成单个网络,该网 络连接到所有的GPIO。
AMUXBUSL和AMUXBUSR网络连接到各自一半的 GPIO,支持电容感应方法的所有特征。电容感应使用 AMUXBUS网络、AMUXBUSR的模拟全局网络AGR[0]和 AMUXBUSL的模拟全局网络AGL[0],提供到参考源的反 馈。这个反馈通常是来自于外部电容连接的引脚,这个电 容用于积分或者调制电容。
2.在PSoC Creator 2.0软件的主界面下,选择File>New->Project...;
3.在New Project窗口,选择Empty PSoC5 Design模 板,并将工程命命名为CapSense_CSD _Design。选择工程
保存路径,点击“OK”按钮;
创建和配置工程
--添加并配置CapSense
Name: LCD LCD Custom Character Set: Horizontal Bargraph。 Include ASCII to Number Conversion Routines:选中 其它按照默认设置
4.点击“OK”,关闭属性设置界面。
创建和配置工程
--配置引脚
下面给出配置管脚的步骤,主要步骤包括:
使用LPF.CRO寄存器的swin[1:0]位选择LPF的输入。通 过开关将LPF的输出连接到abusl[0]和abusr[0]。可调的LPF 允许用户选择R值为200kΩ或者1000kΩ,C值为5pF或者为 10pF。
LPFx_CR0寄存器内的rsel和csel位用来选择电阻和电容 。LPF的控制寄存器为LPF0_CR0和LPF1_CR0。
电容感应触摸模块的结构
(a) 通过感应电阻对MUXBUS充电 (b) 通过感应电阻对MUXBUS放电
电容感应触摸模块的结构
用下式计算等效电阻:
其中:
RS
1 ( fsCs )
Cs=传感器电容 φ1,φ2=非重叠的时钟,可以用伪随机序列发生器产生 (pseudo random sequence, PRS)。 fs=时钟频率 Cmod=外部调制电容;
电容感应触摸系统提供了丰富和高效的手段来测量 电容量,比如触摸感应按键,滑动块,接近度检测。下 图给出了电容感应模块的结构图。
电容感应触摸系统使用系统资源配置,包括一些用于 电容感应触摸的硬件功能。该模块的主要特点有:
同时支持扫描两个电容传感器; 可配置的低通滤波器来消除开关噪声,用于精确测量; 用于更快速测量的带有高驱动模式的参考缓冲区。
电容感应的方法通过将GPIO引脚在高低电平之间 切换实现。硬件的剩余部分配置成合适的极性来匹配上
拉或下拉电阻。
电容感应模块的结构
电容感应时钟用于切换。可以使用两种方法来产生 CapSense时钟:
1)UDB产生两个全局时钟(caps_dsi_lft和 caps_dsi_rt),并且布线到各自一侧的I/O引脚的GPIO逻 辑。设置PRT[x]_CAPS_SEL[y]寄存器(基于每端口/每引 脚模式)来选择用于在测量期间切换传感器的全局时 钟;
GPIO引脚能作为屏蔽电极。屏蔽电极用于帮助在出 现水膜或水滴的情况下,提高操作的可靠性。测量这些影 响因素在屏蔽电极的影响,并且从电容感应按键中消除。 下面讨论的电容感应算法支持屏蔽电容。
电容感应Δ-Σ算法
下图给出了电容感应Δ-Σ(Capsense Delta Sigma, CSD) 的硬件配置。
下面给出添加并配置CapSense的步骤,主要步骤包括: 1.拖动并且放置CapSense到原理图内(Component
Catalog->CapSense-> CapSense_CSD)。 2.双击器件原理图内的CapSense_CSD符号,打开配
置窗口。如下图所示,在Widget(部件)配置窗口中按下 面步骤添加触摸按键和触摸滑块部件:
创建和配置工程
--编写程序
/* 初始化CapSense CSD ,并且启动传感器扫描循环*/ /*启动CapSense和基线*/ CapSense_CSD_Start();
/* I初始化基线 */ CapSense_CSD_InitializeAllBaselines();
/* 启动扫描所有使能的传感器*/ CapSense_CSD_ScanEnabledWidgets();
创建和配置工程
--配置引脚
创建和配置工程
--编写程序
#include <device.h>
/* Need for Bargraph */ extern uint8 const CYCODE LCD_customFonts[]; uint16 curPos, oldPos;
void main() { /* 使能全局中断*/ CyGlobalIntEnable; LCD_Start(); LCD_LoadCustomFonts(LCD_customFonts); LCD_Position(0u, 0u); LCD_PrintString("CSD01");
选择Button0,出现下图所示的界面,按下面参数设置触摸按 键的属性。
创建和配置工程
--添加并配置CapSense
选择Buutton1,按照Button0的属性来设置Button1的属性,即 两个触摸按键的属性一样。下图设置触摸滑块的属性。
选择LinearSlider0,出现下图所示的界面,按下面的参数设置 触摸滑块的属性。
电容感应算法 --电容感应Δ-Σ算法
PSoC也支持其它CSD算法: 1)基于比较器的输出,开关电容电阻用来对积分电 容进行充电,外部的泄漏电阻器用来对积分电容进行放 电。 2)基于比较器的输出,翻转极性,IDAC就能被用于 对积分电容进行充电,开关电容电阻将积分电容对地进 行放电(图7 .32(b))。
第14章 电容感应模块
何宾 2012.05
本章内容
本章主要是介绍PSoC5内的电容总线模块,电容感应 模块是PSoC芯片最重要,也是最有特点的功能单元,电容 感应触摸被广泛的应用在各种嵌入式应用中。
本章内容主要包括:
电容感应模块的结构; 电容感应Δ-Σ算法; 电容触摸感应的实现;
电容感应触摸模块的结构
电容感应算法
电容感应Δ-Σ算法
下面给出CSD算法的具体实现步骤:
1.当积分电压达到参考电压时,比较器将使电流 DAC对电容进行放电。
2.当电容放电电压低于参考电压时,禁止IDAC,以 允许电容连续的充电。
3.当积分电容电压在比较器门限附近波动的时候, 在一个间隔内对比较器的低输出进行计数,然后给出感 应电容的测量结果。
1.从Workspace Explore,双击CapSense_CSD_Design.cydwr文 件。
2.点击pin标签。 3.如下图所示,为Cmod_CH0、Button0_BTN0、 Button1_BTN、LinearSlider0_e0_LS~ LinearSlider0_e4_LS、和 \LCD:LCDPort\[6:0] 分配引脚。
while(1u) {
/* 更新所有的基线*/ CapSense_CSD_UpdateEnabledBaselines();
创建和配置工程
--编写程序
/* 启动扫描所有的传感器*/ CapSense_CSD_ScanEnabledWidgets();
/*显示CapSense状态*/ while(CapSense_CSD_IsBusy() != 0){}
电容感应算法 --电容感应Δ-Σ算法
4.触摸时感应电容增加,因此等效电阻减少。这样 就引起流经感应等效电阻的电流增加。
5.在触摸时,为了将Cmod的电压保持在VREF附近, IDAC的吸收电流用于长期补偿较大的感应电容。这样就 相应的改变计数值。
一个PRS时钟用来替换固定的时钟源来驱动预充电 开关。与固定时钟源相比较,PRS时钟降低了感应电容上 的辐射噪声,因此改善了EMI和干扰性能。
电容感应触摸模块的结构
2.低通滤波器 提供两个可调的低通滤波器(Low Pass Filter,LPF) 。每个LPF通过2:1复用开关选择输入。
在左侧,LPF输入是AMUXBUSL和AGL[0]; 在右侧,LPF输入是AMUXBUSR和AGR[0]。
2)到I/O引脚的DSI输出能用于来自UDB的 电容感应的时钟源。编程PRTx_BIE[y]用于输入(每端口 /每引脚),并且清除PRT[x]_CAPS_SEL[y]选择DSI输出 作为电容感应的时钟。
电容感应模块的结构
注意:静态连接外部的集成电容Cmod(没有切 换),使用PRT[x]_AMUX寄存器将其连接到AMUXBUS, 并且PRTx_CAPS_ SEL[y]=0,PRTx_BIE[y]=0。
接受其它参数默认设置; 点击“OK”按钮,关闭属性设置界面。
创建和配置工程
--添加并配置字符LCD
下面给出添加并配置字符的步骤,主要步骤包括: 1.拖动Character LCD并将其放置在原理图中( Component Catalog->Display-> Character LCD)。 2.双击LCD_Char_1元件。 3.设置参数如下:
电容感应触摸模块的结构
4.GPIO配置 右图给出了GPIO结构。端口模拟 全局复用寄存器(PRT[x]_AMUX)被 用来连接端口引脚到模拟复用总线。 设置CAPSx_CFG1寄存器的io_ctrl[1:0] 来使能上拉或下拉。 下图给出了在两种配置的感应电容 的切换,用来将电容转换成相对应的电 阻进行测量。
电容触摸感应实现
该设计实现电容感应的应用。开发板首先初始化液 晶屏和元件。在主循环中,它扫描两个按钮是否有激活 。并且在LCD上显示触摸感应的状态。
电容触摸感应实现
--创建和配置工程
1.在计算机上的桌面上,选择开始->所有程序>Cypress->PSoC Creator 2.0->PsoC Creator 2.0。打开PSoC Creator软件;
创建和配置工程
--添加并配置CapSeLeabharlann Baiduse
创建和配置工程
--添加并配置CapSense
选择Buttons条目,在按钮
上,连续点击两次,
添加两个触摸按键部件Button0和Button1;
选择Linear Sliders条目,在按钮 添加触摸滑块部件LinearSlider0;
上,点击一次,
电容感应触摸模块的结构
电容感应触摸模块的结构
1.参考驱动 这个驱动器用来快速的初始化网络到独立于供电电源 的一个电压。这个能力加速了电容扫描,并且改善了电源 抑制比。两个参考驱动独立运行;一个驱动到AMUXBUSL ,另一个驱动到AMUXBUSR。通过设置CAPSX_CFG0寄存 器的out_en位,将驱动器连接到AMUXBUS。 参考驱动支持普通和高驱动模式,通过设置 CAPSX_CFG0寄存器的boost位选择驱动模式。
LCD_DisplayState(); } }
/************************************************************************** ***** *函数名字: LCD_DisplayState *************************************************************************** ****/
创建和配置工程
电容感应算法
--电容感应Δ-Σ算法
下图给出了CSD算法的波形图。
电容感应算法
--电容感应Δ-Σ算法
电容感应Δ-Σ通过将积分电容的电压保持在目标门 限的附近,并且基于目前的比较器的输出状态对电容进行 充电和放电操作来实现的。
感应电容在Vdd和积分电容之间进行连续的切换,用 来在每个切换周期内驱动积分电压升高。
电容感应触摸模块的结构
3.模拟复用总线
除了SIO和USB引脚外,所有的GPIO引脚均支持电容 感应操作。用于电容感应基本模拟复用总线是AMUXBUS ,该总线有两个网络(AMUXBUSL和AMUXBUSR)用于两 个同步的感应操作。这些也能被短路生成单个网络,该网 络连接到所有的GPIO。
AMUXBUSL和AMUXBUSR网络连接到各自一半的 GPIO,支持电容感应方法的所有特征。电容感应使用 AMUXBUS网络、AMUXBUSR的模拟全局网络AGR[0]和 AMUXBUSL的模拟全局网络AGL[0],提供到参考源的反 馈。这个反馈通常是来自于外部电容连接的引脚,这个电 容用于积分或者调制电容。
2.在PSoC Creator 2.0软件的主界面下,选择File>New->Project...;
3.在New Project窗口,选择Empty PSoC5 Design模 板,并将工程命命名为CapSense_CSD _Design。选择工程
保存路径,点击“OK”按钮;
创建和配置工程
--添加并配置CapSense
Name: LCD LCD Custom Character Set: Horizontal Bargraph。 Include ASCII to Number Conversion Routines:选中 其它按照默认设置
4.点击“OK”,关闭属性设置界面。
创建和配置工程
--配置引脚
下面给出配置管脚的步骤,主要步骤包括:
使用LPF.CRO寄存器的swin[1:0]位选择LPF的输入。通 过开关将LPF的输出连接到abusl[0]和abusr[0]。可调的LPF 允许用户选择R值为200kΩ或者1000kΩ,C值为5pF或者为 10pF。
LPFx_CR0寄存器内的rsel和csel位用来选择电阻和电容 。LPF的控制寄存器为LPF0_CR0和LPF1_CR0。
电容感应触摸模块的结构
(a) 通过感应电阻对MUXBUS充电 (b) 通过感应电阻对MUXBUS放电
电容感应触摸模块的结构
用下式计算等效电阻:
其中:
RS
1 ( fsCs )
Cs=传感器电容 φ1,φ2=非重叠的时钟,可以用伪随机序列发生器产生 (pseudo random sequence, PRS)。 fs=时钟频率 Cmod=外部调制电容;
电容感应触摸系统提供了丰富和高效的手段来测量 电容量,比如触摸感应按键,滑动块,接近度检测。下 图给出了电容感应模块的结构图。
电容感应触摸系统使用系统资源配置,包括一些用于 电容感应触摸的硬件功能。该模块的主要特点有:
同时支持扫描两个电容传感器; 可配置的低通滤波器来消除开关噪声,用于精确测量; 用于更快速测量的带有高驱动模式的参考缓冲区。
电容感应的方法通过将GPIO引脚在高低电平之间 切换实现。硬件的剩余部分配置成合适的极性来匹配上
拉或下拉电阻。
电容感应模块的结构
电容感应时钟用于切换。可以使用两种方法来产生 CapSense时钟:
1)UDB产生两个全局时钟(caps_dsi_lft和 caps_dsi_rt),并且布线到各自一侧的I/O引脚的GPIO逻 辑。设置PRT[x]_CAPS_SEL[y]寄存器(基于每端口/每引 脚模式)来选择用于在测量期间切换传感器的全局时 钟;
GPIO引脚能作为屏蔽电极。屏蔽电极用于帮助在出 现水膜或水滴的情况下,提高操作的可靠性。测量这些影 响因素在屏蔽电极的影响,并且从电容感应按键中消除。 下面讨论的电容感应算法支持屏蔽电容。
电容感应Δ-Σ算法
下图给出了电容感应Δ-Σ(Capsense Delta Sigma, CSD) 的硬件配置。
下面给出添加并配置CapSense的步骤,主要步骤包括: 1.拖动并且放置CapSense到原理图内(Component
Catalog->CapSense-> CapSense_CSD)。 2.双击器件原理图内的CapSense_CSD符号,打开配
置窗口。如下图所示,在Widget(部件)配置窗口中按下 面步骤添加触摸按键和触摸滑块部件:
创建和配置工程
--编写程序
/* 初始化CapSense CSD ,并且启动传感器扫描循环*/ /*启动CapSense和基线*/ CapSense_CSD_Start();
/* I初始化基线 */ CapSense_CSD_InitializeAllBaselines();
/* 启动扫描所有使能的传感器*/ CapSense_CSD_ScanEnabledWidgets();
创建和配置工程
--配置引脚
创建和配置工程
--编写程序
#include <device.h>
/* Need for Bargraph */ extern uint8 const CYCODE LCD_customFonts[]; uint16 curPos, oldPos;
void main() { /* 使能全局中断*/ CyGlobalIntEnable; LCD_Start(); LCD_LoadCustomFonts(LCD_customFonts); LCD_Position(0u, 0u); LCD_PrintString("CSD01");
选择Button0,出现下图所示的界面,按下面参数设置触摸按 键的属性。
创建和配置工程
--添加并配置CapSense
选择Buutton1,按照Button0的属性来设置Button1的属性,即 两个触摸按键的属性一样。下图设置触摸滑块的属性。
选择LinearSlider0,出现下图所示的界面,按下面的参数设置 触摸滑块的属性。
电容感应算法 --电容感应Δ-Σ算法
PSoC也支持其它CSD算法: 1)基于比较器的输出,开关电容电阻用来对积分电 容进行充电,外部的泄漏电阻器用来对积分电容进行放 电。 2)基于比较器的输出,翻转极性,IDAC就能被用于 对积分电容进行充电,开关电容电阻将积分电容对地进 行放电(图7 .32(b))。
第14章 电容感应模块
何宾 2012.05
本章内容
本章主要是介绍PSoC5内的电容总线模块,电容感应 模块是PSoC芯片最重要,也是最有特点的功能单元,电容 感应触摸被广泛的应用在各种嵌入式应用中。
本章内容主要包括:
电容感应模块的结构; 电容感应Δ-Σ算法; 电容触摸感应的实现;
电容感应触摸模块的结构
电容感应算法
电容感应Δ-Σ算法
下面给出CSD算法的具体实现步骤:
1.当积分电压达到参考电压时,比较器将使电流 DAC对电容进行放电。
2.当电容放电电压低于参考电压时,禁止IDAC,以 允许电容连续的充电。
3.当积分电容电压在比较器门限附近波动的时候, 在一个间隔内对比较器的低输出进行计数,然后给出感 应电容的测量结果。
1.从Workspace Explore,双击CapSense_CSD_Design.cydwr文 件。
2.点击pin标签。 3.如下图所示,为Cmod_CH0、Button0_BTN0、 Button1_BTN、LinearSlider0_e0_LS~ LinearSlider0_e4_LS、和 \LCD:LCDPort\[6:0] 分配引脚。
while(1u) {
/* 更新所有的基线*/ CapSense_CSD_UpdateEnabledBaselines();
创建和配置工程
--编写程序
/* 启动扫描所有的传感器*/ CapSense_CSD_ScanEnabledWidgets();
/*显示CapSense状态*/ while(CapSense_CSD_IsBusy() != 0){}
电容感应算法 --电容感应Δ-Σ算法
4.触摸时感应电容增加,因此等效电阻减少。这样 就引起流经感应等效电阻的电流增加。
5.在触摸时,为了将Cmod的电压保持在VREF附近, IDAC的吸收电流用于长期补偿较大的感应电容。这样就 相应的改变计数值。
一个PRS时钟用来替换固定的时钟源来驱动预充电 开关。与固定时钟源相比较,PRS时钟降低了感应电容上 的辐射噪声,因此改善了EMI和干扰性能。