【STM32F723E-DISCO开发板试用体验】07-BSP例程解析之触摸屏

  • cztqwan
  • LV5工程师
  • |      2017-09-18 21:07:08
  • 浏览量 1449
  • 回复:0
【STM32F723E-DISCO开发板试用体验】07-BSP例程解析之触摸屏一、简介 本贴接着分析STM32F723E-DISCO官方提供的BSP例程中的TS Demo(触摸屏例子)。为了直观,还是把BSP例程的工程结构图放上来: 和TS相关的文件有以下几个: ft6x06.c:TS驱动芯片的驱动程序; stm32f723e_discovery.c:实现STM32 IIC接口的初始化和底层功能函数的封装; stm32f723e_discovery_ts.c:TS功能函数的封装; ts_calibration.c:和TS校准相关的函数; touchscreen.c:TS的Demo演示程序。 二、硬件电路分析 电容触摸屏一般都需要一个驱动IC来检测电容触摸,在STM32F723E-DISCO中采用了型号为FT6206的驱动IC,通过 IIC 接口和STM32相连,STM32可以通过IIC接口获取触摸数据。 三、程序分析 在BSP例程中,一共有三个和触摸屏相关的Demo: 在主函数中没有对触摸屏进行初始化,接下来首先看一下Touchscreen_demo1(),这个例子主要是测试触摸屏校准以及轮询模式下的单点触摸功能: Touchscreen_demo1()中,首先判断触摸屏是否校准过,如果已经校准过,则直接进行轮询模式下的单点触摸功能测试,触摸屏的数据通过BSP_TS_GetState()函数和TS_State结构体获得,BSP_TS_GetState()函数通过底层的IIC总线和触摸屏驱动IC通信,获取触摸点的坐标信息,然后保存到TS_State结构体中。TS_State是一个TS_StateTypeDef结构体,具体定义如下: 其中,touchX和touchY保存触摸点的坐标数据。在Touchscreen_demo1()中,通过TouchScreen_Get_Calibrated_X()函数和TouchScreen_Get_Calibrated_Y()函数将获取的原始触摸坐标数据转换成校准后的坐标数据。 到目前为止,都还没有看到触摸屏的初始化函数,接下来先看一下触摸屏校准函数Touchscreen_Calibration(),该函数一般只需要执行一次即可,所以触摸屏初始化函数应该就在其中: 从上图可以看到,触摸屏的初始化函数确实在触摸屏校准函数中被调用。和LCD的初始化代码一样,BSP_TS_Init()同样调用了另一个函数来对触摸屏驱动IC进行初始化。 在BSP_TS_InitEx()中,通过触摸屏的驱动IC的一个结构体执行初始化操作: 该初始化化函数定位到ft6x06.c文件中的ft6x06_Init()函数: 最后,在TS_IO_Init()中对STM32的IIC进行了初始化和设置。 四、效果 下面的图中,前3幅是Touchscreen_demo1例程的效果,中间两幅是Touchscreen_demo2例程的效果,后三幅是Touchscreen_demo3例程的效果,通过用户按键进行切换。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子