psoc4的capsense算是个比较实用的东西,触摸按键,显得有点高大上,呵呵。今天试用了一下,对照着数据手册,现在总结一下。

1,先说原理,官方做文档的时候应该把原理讲一下,不要上来就讲怎么用,怎么配置,如果不知道原理的话那只能照葫芦画瓢了,大致原理就是传感器获得外部电容值的大小然后减去内部基准得到一个差值,这个差值与设定的阈值比较,如果大于阈值就认为有手指按动,否则判断为没有按动,就这么简单。内部基准psoc起了个名字叫基线。基线是通过一定的算法得到的。

2,模块用的是capsense_csd2.1,关于模块的配置因为用的是便宜的cy8ckit-049-42xx套件,没有所谓的slider,但是片子的io都通过引线引出来了,板子边上都是过孔,这就够了。但是需要注意的是需要调节的灵敏一点,否则检测不到。

3,下面是一些细节性的东西。

1),基线官方给了如下定义

基线值的计算是在噪声阈值下计算的,举个例子,假如我设置的噪声阈值是10,而现在环境中有噪声,这些噪声造成了即使在没有点击按键的情况下传感器的读数也不是0,而是大于0小于10的值,假设是5,那么此时基线就会变成5,但是如果噪声阈值仍然是10,但是噪声较大,是20,那么此时基线值是不会改变的,依然是0,而此时就会判断为有按动按键。

2)迟滞

迟滞其实就是当外部电容增大的时候减去基线的差值自然也是增大的,增大到设定的阈值的时候并不会立即认为有触摸,而是需要大于阈值加迟滞值。而当外部电容减小到阈值下的时候也不会立即认为没有触摸,而是需要小于阈值减去迟滞值,才会认为没有触摸。

3)官方推荐的各个值设置

我的设置

手指阈值是10,噪声阈值是5,迟滞是2,防抖动是1,也就是不防抖了,采用8位计数。

4)对于capsense的具体硬件部分的工作原理就不是很清楚了,只知道用到了idac,和一个外部电容cmod,至于是怎么工作的,找不到资料。

5)软件部分用到几个函数,但是需要先了解一些数据结构。

用到的几个函数

关于capsense_checkiswidgetactive()其实比较的两个对象分别是阈值和capsence_sensorsignal[];而非官方说的capsense_signal[].官方的说法让人不知所云,专门找了英文文档也是这么写的,看来不是翻译的问题。

那么整个软件的流程其实就可以用数据的变化来总结,先是是获取原始数据,获取基线值,之后就是差值获取,然后差值与阈值比较得到结果,所以每次要想获得结果需要三个函数1,updateenabledbaselines()会获得baseline的值,并且用sensorraw的值减去baseline的值获得sensorsignal的值。2,scanenabledwidgets()获得sensorraw的值。3,checkiswidgetactive 将sensorsignal的值与阈值比较得到结果。

psoc4的capsense总结的更多相关文章

  1. psoc4的中断笔记

    psoc可以自定义中断服务函数.

  2. 蓝牙BLE实用教程

    蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Re ...

  3. 蓝牙BLE实用教程(转载)

    欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关 ...

  4. 用了这么多年的MCU,你知道哪些MCU原厂最牛?

    单片机诞生于1971年,经历了SCM.MCU.SoC三大阶段.单片机由以前的1位.4位.8位.16位,发展到现在的32位甚至64位. 90年代后随着消费电子产品大发展,单片机技术得到了巨大提高,相继诞 ...

  5. psoc做dds

    今天用psoc做了dds,现在总结一下. 1dds用到的相位累加器是用verilog写的,本来准备用一下datapath,这是和fpga不一样的一点,用了类似alu的结构,但是看手册后发现,虽然可以执 ...

  6. 2018.5.28 PSOC第一枪:基于cypress的蓝牙开发

    Cypress-BLE 开发套件可以快速开发 物联网电子产品. PSOC编程特点: A 拖放各PSoC 组件到工作区中,以设计原理图B 完成各组件之间的布线,并配置GPIOC 使用所包含的组件API ...

  7. (转)I2C 上拉大小

    中断,GPIO,I2C等一般都是OC或者OD门,芯片内部无上拉电阻时,则外部必须加上拉电阻才能输出高电平.一般I/O端的驱动能力在2-4mA量级,OC或者OD门的导通电压为0.4V左右,手机中加在上拉 ...

  8. 触摸板PCB制作-TM12

    1.布局: 使 PSoC 与Sensor之间的距离保持最小化是一个不错的做法. 通常将 PSoC 与其他组件一起贴装到底层,而将 CapSense Sensor置于顶层上.  Sensor和栅格地层位 ...

  9. 上拉电阻大小对i2c总线的影响

    漏极开路上拉电阻取值为何不能很大或很小? 如果上拉电阻值过小,Vcc灌入端口的电流(Ic)将较大,这样会导致MOS管V2(三极管)不完全导通(Ib*β<Ic),有饱和状态变成放大状态,这样端口输 ...

随机推荐

  1. js的一些编码问题

    1 eval()的使用; 未声明变量的使用: 遗漏的分号; 不恰当的换行; 错误的逗号使用; 语句周围遗漏的括号; switch分支语名中遗漏的break; 重复声明的变量; with的使用; 错误使 ...

  2. SQL 2008R2还原对于服务器失败 备份集中的数据库与现有数据库 3154错误

    以前用sql server 2005的时候就遇到过类似的问题,数据库在别的服务器上备份后,在本机无法还原,这次终于找到了解决方案,网上的没有找到类似的,希望能帮到大家! 原因分析:在SQL Serve ...

  3. Spring Boot配置ContextPath【从零开始学Spring Boot】

    Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为http://ip:port/path/ 访问的话,那么需要在Application ...

  4. scrapy 6023 telnet查看爬虫引擎相关状态

    Telnet终端(Telnet Console) Scrapy提供了内置的telnet终端,以供检查,控制Scrapy运行的进程. telnet仅仅是一个运行在Scrapy进程中的普通python终端 ...

  5. bzoj4945

    题解: 一眼看过去还以为是3-sat 其实d只有8 那么我们可以枚举每一个x选择哪一个 然后再用2-sat处理 代码: #include<bits/stdc++.h> using name ...

  6. 使用LeakCanary进行内存泄漏追踪

    LeakCanary使用 1.在build.gradle 中 dependencies {     //添加     debugCompile 'com.squareup.leakcanary:lea ...

  7. C与C++基础知识补遗

    本随笔用来记载项目开发中遇到的以前没掌握的C/C++基础知识 void * buffer; 无类型指针,可以指向任何类型数据.ANSI标准规定无类型指针不能进行算法,而GNU规定无类型指针算法操作与c ...

  8. SpringInAction--Bean的作用域

    Spring定义了多种作用域,我们在使用的时候可以根据使用的需求来选择对应的作用域,这些作用域,包括(第二个括号中为更安全的注解方法,具体更多参数可查看接口代码) 单例(Singleton)(Conf ...

  9. 海康威视 嵌入到web页面相关问题

    因项目上面需求,接触到了海康威视的设备,要把他嵌入到web页面中,所以就开始了爬坑之路 刚开始不知道如何把设备的页面嵌入到项目的web页面中,直到我遇见了他——“WEB3.0控件开发包V1.0.9_C ...

  10. node 垃圾回收

    一些思考 回收 nodejs垃圾回收 跟浏览器js不同,  以下代码会找出内存泄露 var theThing = null var replaceThing = function () { var o ...