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++;   elseret = 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里面有这个图的话,可以让用户少走弯路。

嵌入式开发--XW09A触摸芯片的使用相关推荐

  1. 嵌入式开发平台Zynq芯片介绍

    Zynq发展历史 Zynq是由全球最大的可编程逻辑平台供应商,Xilinx,在2011年末发布的具有崭新架构的芯片.熟悉FPGA技术领域的朋友应该了解Xilinx在可编程逻辑界的地位.但是,从Zynq ...

  2. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701 相关资源下载 :  -- 三星 ARM Archit ...

  3. 嵌入式开发板硬件操作入门学习9——集成电路芯片手册术语词汇表(中英文对照)

    原创链接:集成电路芯片半导体中英文对照术语词汇表 英语 中文 1-9 10 gigabit 10 Gb 1st Nyquist zone 第一奈奎斯特区域 3D full‑wave electroma ...

  4. SPC58芯片的嵌入式开发准备工作-20201005

    SPC58芯片的嵌入式开发准备工作 因为工作的需要,重新捡起硬件和嵌入式开发的工作. 面对的是ST的SPC58NE芯片. 准备工作如下:

  5. 触摸芯片按键触摸应用开发笔记

    触摸按键应用原理 当有人体手指靠近触摸按键时,人体手指与大地构成的感应电容并联焊盘与大地构成的感应电容,会使总感应电容值增加.电容式触摸按键IC在检测到某个按键的感应电容值发生改变后,将输出某个按键被 ...

  6. 替代启攀微8按键触控八通道触摸芯片-GTC08L

    能完美替代启攀微8按键触控八通道电触摸芯片-GTC08L芯片是一款非常适用于音响上超稳定超抗干扰低功耗八通道电容式触摸IC:可通过触摸实现各种逻辑功能控制:操作简单.方便实用:电压范围宽,可在2.7V ...

  7. 嵌入式开发在过去20年中是如何演变的

    嵌入式开发在过去20年中是如何演变的 How embedded development has evolved over the past two decades 与任何开发领域一样,嵌入式系统开发就 ...

  8. 嵌入式开发中DSP与FPGA的关系

    嵌入式开发中DSP与FPGA的关系 常所说的单片机侧重于控制,不支持信号处理,属于低端嵌入式处理器,arm可以看做是低端单片机升级版,支持操作系统管理,更多接口如网卡,处理能力更强;fpga是可编程逻 ...

  9. 嵌入式开发输出调试信息的几种方法(常规法及非常规法)

    这篇文章对于研发查找问题和测试都有很大帮助,在这里保存记录一下. 论语>有云:"工欲善其事,必先利其器".输出调试信息是软件开发中必不可少的调试利器,在出现bug时如果没有调 ...

最新文章

  1. 更换YUM及升级包方法
  2. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
  3. ARM64的启动过程之(一):内核第一个脚印
  4. 【Linux部署】Spring Boot 项目部署在Linux环境下的Docker容器内举例【任务调度系统 xxl-job 任务调度中心】(手动版)
  5. python桌面翻译_Python实现桌面翻译工具【新手必学】
  6. Centos rpm包安装PHP所需包
  7. MFC工作笔记0002---MFC HelloWorld程序
  8. 中国开杯闪点测试仪行业市场供需与战略研究报告
  9. nacos 单机部署_nacos简介以及作为注册/配置中心与Eureka、apollo的选型比较
  10. Tab Space:超棒的Safari浏览器标签快速保存工具
  11. 大型网站技术架构思维导图
  12. matlab t分布 反函数,Excel 应用TINV函数计算学生的t分布的反函数
  13. dp协议学习----2、SST模式下的TU的计算
  14. 视频剪辑教程,视频批量分割,分割后的新视频怎么保存
  15. 关于归并排序时间复杂度 T(n) =2T(n/2)+O(n)
  16. 美团运筹优化实战——智能配送系统阅读笔记
  17. SSM框架练手项目【虎牙个人博客】手把手带你搭建自己的个人博客
  18. Js 跳转页面和打开新窗口的方法
  19. python图像清晰度_python 图像判断,清晰度(明暗),彩色与黑白实例
  20. Rook1.0部署+排错

热门文章

  1. python中运算符优先级_介绍python中运算符优先级
  2. 雅克比迭代法的例子matlab,MATLAB样例之雅克比迭代法
  3. 【uboot】imx6ull uboot移植LAN8720A网卡驱动
  4. 常见的几种HTTP状态码
  5. ShareSDK新浪微博登录时报错 (21322) error:redirect_uri_mismatch
  6. FoobarFubar
  7. 青少年如何使用 Python 开始游戏开发
  8. 2019款昂科威试驾:动力性能标杆,驾控体验更舒适
  9. VB.NET版机房收费系统---七仙女之系统登录
  10. TransparentBlt