欢迎关注燚智能头条号↗

燚智能硬件开发网

用简单的语言,讲复杂的技术!

第一章:需求分析

一款智能硬件产品,往往需要适配多个厂家的触摸屏模块,以及多颗触摸屏IC。通常Android底层驱动同时只能支持一款电容触摸屏模组的驱动。

我们设计了一个兼容方案,使同一硬件版本、同一版本软件支持2种以上的触摸屏模块。包括不同厂家、不同sensor形状、不同分辨率等。

电容触摸屏结构以及工艺技术(电容触摸屏CTP兼容设计)(1)

  • 触摸屏接口

电容触摸屏结构以及工艺技术(电容触摸屏CTP兼容设计)(2)

电容触摸屏结构以及工艺技术(电容触摸屏CTP兼容设计)(3)

  • 2.1 总体设计

  • (1). 触摸屏IC通信必须是I2C接口。

    (2). 触摸屏共用同一I2C接口的硬件通路。

    (3). 触摸屏拥有相同的供电和控制信号线。供电包含:VDD。控制信号包含:RESET、INT。

    (4). 通过区别不同IC的I2C地址加载不同的触摸屏驱动。

    • 2.2 硬件需求

    (1). 原理图设计需满足2.1所述总体设计方案。

    (2). 硬件原理设计需要满足I2C信号质量要求。

    (4). 选用的IC需要支持进入sleep模式。

    • 2.3 软件架构

    在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成。其中设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,再通过核心层提交给事件处理层。Linux驱动架构分3个部分,即BUS(总线)、device(设备)、driver(驱动)。Device就是描述的一个外设,driver则是提供操作这个外设的方法,而BUS就是匹配连接device和driver的桥梁。在触摸屏驱动中,不同的触摸屏可以生成不同的device并注册到系统总线,而不同的触摸屏操作方法也可以注册到系统总线中,这里的系统总线就是I2C总线。因此触摸屏兼容就是要实现将不同的触摸屏设备(device)和对应的操作方法(driver)注册到系统的I2C总线中。

    触摸屏兼容分为2种情况:

    1、不同IC的触摸屏

    对于此种情况需要IC具有不同的I2C地址便可以注册为不同的device和driver,不同的IC分别使用对应的设备和驱动。系统开机时,总线会匹配具有相同名字的device和driver,如果匹配成功,则会调用驱动中方法对触摸屏设备做初始化配置,如供电,参数配置等。如果匹配失败,则会将分配的资源全部回收,释放申请的电源,中断引脚等。因此不论哪一种IC先注册,没有检测到实际I2C地址的触摸屏都会释放资源,以便实际存在的触摸屏可以申请相同的资源。这就实现了使用同一供电和中断控制引脚可以实现对不同IC的触摸屏控制。

    2、相同IC不同模组厂的触摸屏。

    对于此种情况,根据不同触摸屏IC的工作方式又分为以下2种情况:

    (1)触摸屏IC固件在出厂前就已经固化在IC内部

    对于此类IC,实现兼容很简单,驱动代码可以使用同一个,什么也不需要更改,让模组厂在触摸屏出厂时就把固件固化在IC中就可以。

    (2)触摸屏IC需要将配置参数通过驱动烧写进IC中

    对于此类IC,需要触摸屏IC具有不同ID识别的功能才可以做兼容。即通过IC上的特殊引脚组合成不同的接法,并且IC中有专门的寄存器来表示特殊引脚不同的接法。通过读取这个寄存器来识别是哪一个模组厂的触摸屏。然后根据不同的ID来烧写对应模组厂的触摸屏配置参数到IC中。

    • 2.4 技术要点

    1. 硬件技术要点。(由硬件评估)

    2. 不同的触摸屏 IC如何在内核中描述、注册、并存。

    3. 相同的触摸屏IC,不同模组厂的触摸屏如何实现烧写对应的初始化配置参数。

    • 2.5 工作量评估

    1. 硬件设计与物料准备。(硬件评估)

    2. 相同sensor在内核中的注册与共存。

    3. HAL层代码call flow修正。

    4. 调试、测试。

    第三章:实验与执行方法

    为进一步验证此功能的可行性,降低相关风险,制定并执行本章所述的相关验证实验。

    • 3.1 硬件验证

    主要是设计IC的引脚的不同组合实现不同的ID。飞线进行硬件验证,具体方案如图

    电容触摸屏结构以及工艺技术(电容触摸屏CTP兼容设计)(4)

    • 3.2 软件验证

    为验证第二章所述的软件设计思路是否可行,做如下实验。

    1.内核中增加2份不同触摸屏IC的设备和驱动,分别描述为对应IC的设备名。分别连接上不同的触摸屏IC,系统运行起来后在设备节点中查看是否有对应IC设备名的输入设备,并检查触摸屏是否正常工作。

    2.在其中一个触摸屏IC驱动中,实现读取ID寄存器的值来加载不同模组厂的初始化配置参数。分别连接上不同模组厂的同一款IC,检测触摸屏是否正常工作。


    欢迎关注燚智能头条号↗

    燚智能硬件开发网

    智能硬件开发实战派

    相关内容回顾:

    I2C和串口如何使用?一文看懂!

    Android Things物联网操作系统,和Android软件有什么区别?

    ,