MPR121使用总结
MPR121使用总结
信息爆炸的时代,写驱动一般通过网络摘抄精炼便可移植成功.一般芯片厂商的寄存器或通信指令也不超过百条,即使复杂的芯片也能在官方获取到较完善的资料说明和驱动案例.但有些芯片功能复杂,官方说明不充分,但特性明显,就已经停产后还是吸引了硬件工程师的目光.原本就复杂的芯片,官方案例不充分,网络资源少之甚少,再加上没有技术支持,是的硬件驱动开发的难度大大提高.本人就为补充一下网络资源,特别写本文,仅供参考.
本文阅读说明:寄存器都以十六进制表示(0x),数据以十进制表示,寄存器位以二进制表示(B),注释说明(#)
接着就来看看神烦芯片MPR121. (补充一点:MPR缩写”没骗人”)
MPR121芯片功能强大可用作触摸,电容检测,驱动LED等等.最重要的特性可能是超低功耗,在芯片低速扫描下可以将功耗降低到8μA.但也不能说是它的缺点,它的寄存器地址就有0x00~0x80.可配能力和数量令人感叹,那么小芯片功能可以爆表了.也就在有技术支持的一部分开发人员来说,这个芯片可以非常顺利的完成多种功能.
因本人需要触摸功能和低功耗功能,所以只对这部分进行配置说明
这里我先引用官网资源
http://www.nxp.com/products/no-longer-manufactured/proximity-capacitive-touch-sensor-controller:MPR121?tab=Documentation_Tab
触摸驱动的应用手册有:
AN3944 #一般高速扫描驱动使用该配置足够
AN4600 #触摸板应用实例
有以上两篇手册已经足够编写一般触摸的应用了.
但有需要注意的问题:启动后的响应时间和低功耗偶尔跳出键值!这个问题将在原理分析后的配置进行说明
触摸功能原理
1电极充电=>2取得电极AD(简称Data)=>3基线(简称BL)- Data取Delta=>4Delta与阈值比较=>5根据滤波参数调整BL
触摸按下:Delta大于阈值(AN3892)
启动后响应时间问题解决方法:
1. 配置(0x5D),ESI为B000,到高速扫描,BL会根据Data进行高速变化以适应最终环境
2. 配置(0x5E),CL为B11,初始化BL且以第一次扫描结果为BL值
其他参数可以根据AN3944/AN4600或者百度上的其他资料
补充:0x7D~0x7F根据自身硬件进行配置,作用为Data的范围
为了解决偶尔跳出键值的问题(此问题在低速低功耗情况下特别明显)
官方对低速运行配置没有进行详细说明,所以只能依赖运行原理进行配置
需要手册AN3891,描述滤波系统参数和AN3892键值触发条件,可以推测触发原因
触发原因:由于扫描间隔变长,一点点的环境变化导致Data值变化将剧烈导致Delta变大,当Delta值大于阈值则跳出键值
Data变化:环境的潮湿度,干燥Data升高,潮湿Data降低
要解决此问题,就需要对原理的3和5部分的相关寄存器进行针对性配置
基本配置原则:BL值减慢上升,加快下降
因为硬件环境不同,以下为配置的基本流程,仅供参考(寄存器以电极0为例)
1. 取出正常按键下的Delta值,取寄存器值即Reg0x1E-Reg0x05<<8|Reg0x04
#触摸板厚度变化和电极面板大小,Delta可能差别很大
#本人测试,触摸裸板时Delta有500,但加上前面板后只有16
2. 配置0x41,阈值略小于Delta
3. 配置0x2B,为1,此寄存器为BL缓慢变化的上升值
#减慢BL上升速度
4. 配置0x2F,为3,此寄存器为BL缓慢变化的下降值
#加快BL下降速度
5. 配置0x2C,为1,此寄存器为BL噪声变化的上升值
#减慢BL上升速度
6. 配置0x30,为3,此寄存器为BL噪声变化的下降值
7. 配置0x2D,为30,此寄存器为上升噪声触发个数
#Data大于0x2B将被计数,当个数大于此限制时,BL增加0x2C的数值
#减慢BL上升速度
8. 配置0x31,为1, 此寄存器为下降噪声触发个数
#加快BL下降速度
9. 配置0x2E,为3,此寄存器为上升数值均值采样个数
#减慢BL上升速度
10. 配置0x32,为0, 此寄存器为下降数值均值采样个数
#加快BL下降速度
11. 此外还可以配置0x33~0x35,触摸判断
12. 除了以上触发原理外还有一级过滤,二级过滤,回弹检测,等等等等过滤配置
附上:MHD,NCL,NHD,FDL说明图
(MHD,可以使Data缓慢变化时,BL跟随变化)
(NCL计数个数,NHD影响BL变化值)
(明显的看出,FDL减慢了BL的变化趋势)
闲话:
本人虽然经常使用网络信息资源,但不常发表文章, 就是因为神烦后才编写发表的,这也是本人第一篇博客,提供给MPR121的使用者参考
关于这个触摸芯片
1. 高速扫描下配置极其简单,但低速时芯片易受干扰只有原理的参考,飞思卡尔就将非常多的过滤选项交给了开发人员
2. 芯片手册包含了过多不同功能的寄存器,内容杂乱,使得使用者上手慢
以上可以得到,想完全发挥这芯片能力,开发人员也要有相当高的能力,而拥有该能力的开发人员不多且又得不到支持的情况下所以这款芯片现在也是濒临灭绝了
欢迎高人指出不足
MPR121使用总结相关推荐
- STM32F103硬件IIC对MPR121的初始化
关于MPR121,论坛可用的资料太少,大量的都是要花C币下载的资源.作为菜鸟,搞来搞去主要就是初始化配置棘手,主要就是可配置的寄存器实在太多了.根据官方MPR技术文档及网页搜索一些信息得出以下初始化函 ...
- 触摸控制芯片MPR121驱动移植(STM32)
本文记录将arduino下的mpr121触摸板驱动程序移植到stam32f1 1.触摸板简介 之前买了块mpr121做主控的触摸控制板(如下图),卖家给的驱动是arduino的,最近做项目需要移植到s ...
- python微控制器编程从零开始-Python微控制器编程从零开始 使用MicroPython
目 录 第1章 概述 1 1.1 MicroPython简介 1 1.2 设计思想 2 1.3 MicroPython探究 2 1.4 面向对象编程和一些Python基础 4 1.4.1 面向对象的概 ...
- python微控制器编程从零开始下载_Python微控制器编程从零开始(使用MicroPython)...
目 录 第1章 概述 1 1.1 MicroPython简介 1 1.2 设计思想 2 1.3 MicroPython探究 2 1.4 面向对象编程和一些Python基础 4 1.4.1 面向对象的概 ...
- TWR_MPC8309调试日志
版权声明:本文为博主原创文章,未经博主允许不得转载. TWR_MPC8309调试日志 --------By Moresung Chan , At 12:00 ,Sep 16,2012 一.软硬件: P ...
- Linux内核配置(9)
ISDN(综合数码网络服务,在法国称为RNIS) 一种特殊的数码电话服务类型.它用于将你的电脑连接到你的Internet服务供应商(用SLIP或者PPP).连接的速度快于通常的modem电话连接,在下 ...
- python微控制器编程从零开始 开发板_Python微控制器编程从零开始 使用MicroPython 文轩网正版图书...
章概述1 1.1MicroPython简介1 1.2设计思想2 1.3MicroPython探究2 1.4面向对象编程和一些Python基础4 1.4.1面向对象的概念4 1.4.2建模一个机器人7 ...
- python微控制器编程从零开始下载_Python微控制器编程从零开始 使用MicroPython
目 录 第1章 概述 1 1.1 MicroPython简介 1 1.2 设计思想 2 1.3 MicroPython探究 2 1.4 面向对象编程和一些Python基础 4 1.4.1 面向对象的概 ...
- c# .net iot树莓派/香橙派用到物联网包Iot.Device.bindings 支持设备说明文档
c# .net iot树莓派(进口,贵)/香橙派(国产,功能相同,性价比高)用到物联网包Iot.Device.bindings 支持设备说明文档 我们c# .net iot开发树莓派/香橙派都需要用到 ...
最新文章
- php猴子找大王算法,php 正常的猴子选大王算法
- 爱摸鱼的Dillonh
- mate40pro什么时候用鸿蒙,mate40Pro什么时候可以用鸿蒙
- Git添加多个SSH key公钥
- sql server oracle特点,SQL Server 和 Oracle 以及 MySQL 有哪些区别
- 安装KETTLE教程,并配置执行定时任务
- Linux下的离线词典,Linux下星际译王离线词库
- Class 类文件结构解析
- win7计算机打开显卡设置在哪,[win7显卡设置在哪里]WIN7显卡优化设置在哪
- 品牌公寓+电子合同,开拓年轻人租房市场
- 开放原子训练营(第一季)铜锁探密:基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性
- 医学自然语言处理(NLP)相关论文汇总之 NAACL 2021
- python 面试题
- 如何围绕某一轴(不是xyz)旋转——transform.RotateAround
- ubuntu 3D桌面搞定了
- 主流手持设备以及芯片
- 【spark】RDD容错机制Checkpoint
- MVC 图片上传 带进度条(转)
- hadoop权威指南第三版 发布说明
- Maven学习笔记 (颜群老师讲解)