目录
概述
本文主要是使用AT32F403A开发板,基于V2库实现驱动lcd屏的gt911触功能。
串口工具使用的Atlink-ez自带的串口功能.
工程建立、调试工具配置在前面章节有详细介绍。
硬件
硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。
如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):
如下为实物图:
本章是LCD屏的触摸功能,LCD的驱动芯片是ILI9488,尺寸为3.5寸,分辨率为320*480,触摸控制芯片为gt911并通过iic通信,相关原理图如下:
软件
点亮LCD屏的相关内容在上一章,本章是基于上一章中已经点亮了LCD 屏幕的基础上进行的。
本章使用的LCD模块的触摸IC是gt911,gt911支持5个点的触摸,并且通过iic来通信。
本文使用硬件iic1来驱动gt911触摸ic,硬件iic的使用比较简单,官方在i2c_application.c里面封装了常用的函数提供使用,我们要做的就是iic1底层的初始化,以及gt911的驱动。
Gt911驱动:
iic初始化:
使用的iic1,并且io重映射到pb8,pb9。
gt911设备地址:
gt911的iic设备地址,是通过拉复位脚和中断脚来设定的,这次测试使用PE3/4接到gt911的int和rst,同时设置gt911的iic设备地址为0x28/29,也就是0x28或者0x29都可以。
具体时序如下图。
代码如下:
gt911读/写寄存器:
这里我们需要注意的是gt911寄存器的地址是16bit的,所以iic去读写的时候,地址要设置为16宽度。
具体代码如下:
读取设备id
通过读取id寄存器,读出id。
代码如下:
检测固件版本
检查固件版本,如果版本低,则把新的配置参数设定到芯片闪存里面。
代码如下:
读取触摸数据
当有触摸后,芯片的INT脚会拉高,此时就可以去读取状态寄存器,来知道有多少个触控点,以及buf是否可以读取,都正常后就去读取触控点的数据寄存器,读取出x和y轴的数据,都是16bit,分为高8八位和低八位。
代码如下:
测试
测试代码
有触摸后读取触控的数据,并把数据通过LCD显示出来。
测试结果
在屏幕上触摸,或者滑动的时候,LCD显示的数据也对应的跟着变动,测试通过。
最后
有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。