XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


多点电容触摸屏

目录

多点电容触摸屏

多点触摸, 不需要按下去, 电容屏不需要校准, 电容触摸屏需要一个IC控制, 一般是I2C通讯协议, 读寄存器就可以的, 最终就是一个外设的驱动

电容触摸屏芯片

FT5206和FT5426, 有4个IO用于连接主控制器:SCL、SDA、RST和INT,SCL和SDA是I2C引脚,RST是复位引脚,INT是中断引脚。一般通过INT引脚来通知主控制器有触摸点按下,然后在INT中断服务函数中读取触摸数据。也可以不使用中断功能,采用轮询的方式不断查询是否有触摸点按下

引脚

CT INT=>GPIO1_IO09上中断引脚

I2C2 SCL=> UART5 TXD

I2C2 SDA=>UART5 RXD

CT RST=>SNVS_TAMPER9引脚 复位引脚, 默认上拉

输出的触摸点坐标信息

输出的信息是和屏幕的显示器像素点相互对应的

实际上在Linux上需要校准

正点原子的地址为0x38地址

寄存器

一个寄存器八位

需要用到的到的寄存器

DEVICE_MODE 0x00 设置模式, 设置为0, 工作在正常模式

ID_G_LIB_VERSION_H和ID_G_LIB_VERSION_L 0xa1, 0xa2 固件版本号

ID_G_MODE 0xa4 描述中断状态, 设置中断触发设置为1, 采用中断上报触摸的信息

TD_STATUS 0x02 当前的触摸点个数 1-5

一个触摸点六个寄存器, 使用前四个

0x03-04 第一个触摸点, 03的bit6-7事件标志, bit0-3是x坐标高四位, 04 低八位

事件: 0按下, 1抬起, 2接触, 3保留

0x05-06 第一个触摸点, 05的bit6-7触摸点ID, bit0-3是y坐标高四位, 06 低八位

一直到0x20

一个触摸点坐标信息为12bit

实现

手指放在屏幕上的时候就会一直产生中断