嵌入式开发--XW09A触摸芯片的使用

news2024/9/21 10:35:10

XW09A触摸芯片

XW09A是厦门市芯网电子科技有限公司出品的一颗触摸芯片,支持9键多点触摸,I2C接口,带中断引脚。
以下摘抄自芯片手册
极高的灵敏度,可穿透13mm 的玻璃,感应到手指的触摸
超强的抗干扰和ESD 能力,不加任何器件即可通过人体8000v 实验
外围电路简单,最少只需一个4.7nf 电容,芯片即可正常工作
外围寄生电容自动校正
工作电压范围:2.5 ~ 5.5 V
SOP16 环保封装

电路图

在这里插入图片描述
外围电路很简单,就是几个电容,连接到触摸键时需要通过1K电阻,SDA,SCL,INT需要上拉,电源输入最好经过RC滤波,实测无RC滤波也不影响。

通讯时序

在这里插入图片描述
按上图写软件就可以,说明一下:
1 主机发送起始信号
2 主机发送7位地址和1位读,对于本芯片来说,就是发送0x81
3 等待芯片响应的ACK位
4 连续读取16位按键数据,其中起始3位是高电平,抛弃,然后连续读的9位是按键状态,最后4位抛弃
5 NACK信号
6 主机发送STOP
通信结束。

软件编写

因为其I2C的通讯协议与标准I2C通讯协议不兼容,故没有采用硬件I2C,而是用的软件I2C,当INT进中断后置标志位,在主程序中查询标志位,并调用以下这个函数即可。

u8 I2C_Read_XW09A(void)//i2c读XW09A,返回值是是当前的键值,从1开始计数,为0表示未按下
{
	u16 i,receive=0;
  u8 ret=0;
  
	I2C_SDA_OUT();//SDA设置为输出
  
  //主机发送开始信号
  I2C_Start();
  
  //发送8位地址
  I2C_Send_Byte(0x81);    //xw09a高7位表示地址,其值为0x4,左移1位为i2c地址,再加上最低位的1(表示读取),组合后地址为0x81
  
  //等待从机应答
  if(I2C_Wait_Ack() != 0)
    return 0;
  
  //接收16位数据
  I2C_SDA_IN();//SDA设置为输入
  for(i=0;i<16;i++ )
	{
    I2C_SCL(0); 
    delay_us(1);
		I2C_SCL(1);
    receive<<=1;
    if(I2C_SDA_READ())
      receive++;   
    else
      ret = i-2;
		delay_us(1); 
  }
  
  //主机发送无应答信号
  I2C_NAck();//发送nACK
  
  //主机发送停止信号
  I2C_Stop();

  //SDA设置为输入
	I2C_SDA_IN();//SDA设置为输入
    
  return ret;
}

问题和解决

任何时刻均可以读取芯片数据,但只能在INT为低电平期间才会有正确的触摸状态的数据
这一点我开始没有注意到,我是设定的上升沿进中断,读取的状态如下图
在这里插入图片描述
SDA始终是高电平。
后来找厂家咨询,索要时序图,但未能提供,最后是把板子寄到厂家搞定,最后总结问题,才发现我的时序是上升沿进中断,改为下降沿进中断,然后读取i2c,一切正常,时序如下图:
在这里插入图片描述
在解决问题期间,厂家的客服和技术支持表现出了极其负责的态度,在这里为他们点赞,也祝愿芯网公司产品大卖。
同时希望厂家能把PDF文档做得完善些,将INT,SDA,SCL的时序图放进去,如果PDF里面有这个图的话,可以让用户少走弯路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-迪米特法则

代码世界中类间的耦合关系会直接影响代码可复用性、可读性、可扩展性等。这种耦合关系就如同人之间朋友关系一样&#xff0c;志不同道不合不应相于谋&#xff0c;否则最终只会落得个互相伤害的下场。代码组织时也应如此&#xff0c;应按照一定的原则处理好类之间的关系&#xf…

C++常用库函数 3.数据转换函数

函数名&#xff1a;abs 函数原型&#xff1a;int abs(int n)&#xff1b; 参数&#xff1a;n 整数值。 所需头文件&#xff1a;<cstdlib> 功能&#xff1a;求绝对值。 返回值&#xff1a;返回 n 的绝对值。函数名&#xff1a;atof&#xff0c;atoi&#xff0c;atol …

第42节:cesium 火焰效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><!-- :shouldAnimate="true" 添加动画 --><vc-viewer @ready

linux 命令之find

find 命令 1. 作用 命令用于在指定目录下以及其子母路查找文件和目录。 2. 语法 find [path] [expression] 不指定path的默认为当前路径 2.1 常见的参数 -name pattern&#xff1a;按文件名查找&#xff0c;支持使用通配符 * 和 ?。 -type type&#xff1a;按文件类型查…

NVIC的中断挂起寄存器和EXTI的中断挂起寄存器的区别

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;仅个人拙见&#xff0c;若有错误&#xff0c;欢迎大家指正&#xff0…

Spring MVC 程序开发

什么是 Spring MVC&#xff1f; 官⽅对于 Spring MVC 的描述是这样的&#xff1a; Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,”…

数据特征降维 | 核主元分析KPCA数据降维

文章目录 效果一览文章概述部分源码部分源码参考资料效果一览 文章概述 数据特征降维 | 核主元分析KPCA,主要用于数据降维。 部分源码 部分源码 %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear …

SpringBoot(六)SpringBoot项目部署到腾讯云服务器

这篇文章&#xff0c;可以说是干货满满。关注我的同学应该直到&#xff0c;之前我有几篇SpringBoot的文章&#xff0c;介绍了如何搭建本地服务器&#xff08;没看过的同学可以系统地看下我的SpringBoot专栏&#xff0c;保证你会有很多的收获&#xff09;。但我们那都是在本地玩…

CSDN1周年的创作纪念日【个人总结】

机缘 2022年的7月&#xff0c;第一次了解到这个平台。 得知这个平台可以实现以下功能&#xff1a; 例如&#xff1a; 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流… 收获 其实出发点是我自己整合笔记&#xff0c;顺带佛系分享给大家看&#xff0c;但是好…

在原有J-IM基础上改造,开发记录方便日后学习,主要区别加入mysql持久化,但是不完善、仅供参考

在原有J-IM基础上改造&#xff0c;开发记录方便日后学习&#xff0c;主要区别加入mysql持久化&#xff0c;但是不完善、仅供参考 原站地址 https://gitee.com/xchao/j-im 改造后的地址 https://gitee.com/lbx_1397372495/jim-chat 本地启动测试 1&#xff0c;修改mysql 数…

Windows 安装 RabbitMq 和 Erlang

1.安装Erlang 音乐RabbitMq是基于Erlang开发的&#xff0c;所以先要安装这个环境 下载地址&#xff1a;32位 64位 其他版本自己找 官网 下载完之后无脑安装直接一直下一步 2.配置Erlang环境变量 2.1 新建ERLANG_HOME 把自己的安装的根目录填进去 比如&#xff1a;C:\Progra…

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之小型且简单的一级缓存(二)

缓存是一种高速的存储器&#xff0c;用于存放处理器经常访问的数据和指令。缓存的组织方式有多种&#xff0c;其中一种是按照不同的关联度(associativity)来划分。关联度表示一个缓存块(block)可以放在缓存中的位置数。关联度越高&#xff0c;缓存中可以容纳的不同块的数量越多…

动态规划之62 不同路径(第4道)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

网络的构成要素【图解TCP/IP(笔记七)】

文章目录 网络的构成要素通信媒介与数据链路网卡中继器网桥/2层交换机路由器/3层交换机4&#xff5e;7层交换机网关各种设备及其对应网络分层概览 网络的构成要素 通信媒介与数据链路 计算机之间通过电缆相互连接。电缆可以分为很多种&#xff0c;包括双绞线电缆、光纤电缆、同…

Vue3.3 编译宏

Vue 3.3新增了一些语法糖和宏&#xff0c;包括泛型组件、defineSlots、defineEmits、defineOptions defineProps 父子组件传参 <template><div><Child name"xiaoman"></Child></div> </template><script langts setup>…

简要介绍 | 两阶段点云目标检测:理论与实践

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对两阶段点云目标检测进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 两阶段点云目标检测&#xff1a;理论与实践 在这篇博客中&#xff0c;我们将探索两阶段点云目标检测的理论基础和实际应用…

【朱颜不曾改,芳菲万户香。AIGC人物图片创作---InsCode Stable Diffusion 美图活动一期】

【朱颜不曾改&#xff0c;芳菲万户香。AIGC人物图片创作 ---InsCode Stable Diffusion 美图活动一期】 本文目录&#xff1a; 一、 Stable Diffusion 模型在线使用 1.1、模板运行环境配置 1.2、运行InsCode平台的Stable Diffusion模板 二、Stable Diffusion主界面功能 2.…

【5G PHY】5G控制资源集CORESET介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

OpenCV 的安装与配置指南(Windows环境,Python语言)

OpenCV 的安装与配置指南&#xff08;Windows环境&#xff0c;Python语言&#xff09; 导语一、安装 Python 二、安装 OpenCV 库三、配置 OpenCV 环境变量四、验证 OpenCV 安装总结 导语 OpenCV 是一个功能强大的计算机视觉库&#xff0c;广泛应用于图像处理和计算机视觉领域。…

解决IDEA/WebStorm的Ctrl+Shift+F冲突失效

IDEA 的 CtrlShiftF 是全文或全项目搜索搜索快捷键&#xff0c;非常好用。 当这个快捷键偶而会失效时&#xff0c;基本可以确定是快捷键冲突了。 检查所有运行的软件的快捷键&#xff0c;若有设置为CtrlShiftF的则改掉。特别是输入法会占用较多的快捷键。 例如我这里的搜过输…