多点电容触摸屏
多点触摸, 不需要按下去, 电容屏不需要校准, 电容触摸屏需要一个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
实现
手指放在屏幕上的时候就会一直产生中断