zoukankan      html  css  js  c++  java
  • TS2003基于触摸屏的应用

     

    ********************************LoongEmbedded********************************

    作者:LoongEmbedded(kandi)

    时间:2011.10.22

    类别:WINCE驱动开发

    ********************************LoongEmbedded********************************

    备注:基于TSC2003 4线式触摸屏控制器,这样就没有用到S3C6410的触摸屏控制器了。

    1.       触摸屏硬件电路设计

    图1

    上图是TSC2003作为测试触摸屏x和y坐标应用时的硬件设计图,因为采用了专门的触摸屏控制芯片TSC2003作为触摸屏控制器,所以此时就不需要用到CPU的触摸屏控制器了,TSC2003和S3C6410的引脚连接关系如下:

    GPB5------------------------------------------------SCL

    GPB6------------------------------------------------SDA

    GPN15/EIN15-------------------------------------PEN_IRQ

    2.       TSC2003

    TS2003是一个典型的12/8位的逐步逼近型AD转换器,其结构式基于电荷再分配的比例电容阵列结构,这样的结构本身具备采样和保持的功能,此转换器采用0.6u的CMOS工艺制造。它内置了一个2.5v的基准电压电路和内部时钟,内部基准可以被外部的范围为2V~+VDD的低阻抗(low-impedance)电压源驱动,基准电压值决定了AD转换器的输入范围。TS2003的工作电压范围是2.7V~5.25V。

    TSC2003的模拟输入(x、y和z坐标,辅助输入,电池电压和芯片温度)通过一个多路复用器来选择作为输入信号提供给AD转换器,一个特有的低导通电阻阻开关允许一个没有被选择的AD转换器输入通道给外部设备提供电压(power),并且其对应的引脚为外部设备接地。通过对转换器采用差动输入和差动基准电压架构,可以消除开光的导通电阻带来的误差。

    图2

    TSC2003的主要功能是作为一个4线电阻式的触摸屏控制器,它还可以直接测量电池电压、支持两个辅助的模拟输入、温度测试和触摸压力测试,通过IIC总线接口与中断引脚来和处理器通讯。

    2.1   TSC2003引脚

    +VDD        --------------------------------------工作电压引脚

    X+              --------------------------------------X+坐标输入引脚

    Y+              --------------------------------------Y+坐标输入引脚

    X-               --------------------------------------X-坐标输入引脚

    Y-               --------------------------------------Y-坐标输入引脚

    GND                   --------------------------------------接地引脚

    VBAT1      --------------------------------------电池检测输入引脚

    VBAT2      --------------------------------------电池监测输入引脚

    VREF         --------------------------------------输入/输入基准电压

    /PENIRQ  --------------------------------------pen中断引脚,下降沿表示点击触摸屏。

    SDA           --------------------------------------IIC总线串行数据引脚

    SCL            --------------------------------------IIC总线串行时钟引脚

    A1              --------------------------------------IIC总线地址输入引脚1

    A0              --------------------------------------IIC总线地址输入引脚0

    IN2,IN1 --------------------------------------辅助AD转换器输入引脚

    2.2   TS2003的通讯

    TS2003支持IIC串行总线和数据传输协议工作在三种模式下:标准、快速和高速模式。发送数据到串行总线上的设备称为发送器,从串行总线上接受数据的设备称为接收器,控制串行总线会话的设备称为主设备,被主设备控制的称为从设备。控制总线的主设备负责产生串行时钟(SCL),控制总线访问、产生开始和结束条件。TS2003是作为IIC总线的从设备,它通过开漏(open-drain)IO线SDA和SCL来连接到IIC总线上。

    2.2.1          IIC总线状态

    只有在总线空闲的时候才能开始数据传输,并且在数据传输过程中,在SCL为高的时候,SDA必须保持稳定的状态,也就是说SDA的状态不能在这时候产生从从高到底或者低到高状态的跳变,如果在SCL位高的时候,SDA发生变化,这就被认为是控制信号(开始或者结束)。下面对已经定义的总线状态做一些描述:

    1)       总线不忙的状态

    SDA和SCL都是高的状态。

    2)       开始数据传输

    当SCL为高的时候,SDA从高到底的跳变时为开始条件,这之后就可以开始数据传输了。

    3)       停止数据传输

    当SCL为高的时候,SDA从底到高的跳变时为停止条件,这表示数据传输结束了。

    4)       数据有效

    在开始条件之后,在SCL为高期间内,SDA状态保持稳定,这期间的数据有效,否则作为控制信号,每个脉冲对应一个数据位。每个数据传输在开始条件后开始,在结束条件的时候结束,在产生开始和停止条件之间传输的数据没有限制,而且传输的数据量由主设备决定,以字节位宽的长度来传输数据,并且每个接收器在接收到第9位时,如果发送器发送的地址和自己的地址吻合,就发送应答位(ACK=0),否则发送非应答位(ACK=1)。

    在IIC总线规格的范围内,TSC2003可以工作在标准模式(100kHz时钟频率)、快速模式(400kHz时钟频率)和高速模式(3.4MHz时钟频率)。

    5)       应答

    每个正在接受的设备,当接受完每个字节数据的时候药产生一个应答位,这时主设备必须产生一个额外的时钟脉冲来结合这位应答位。在应答的时钟脉冲高电平期间,发送应答信号的设备必须拉低(pull down)SDA,当然,也要把应答信号对应的时钟脉冲的创建和保持时间考虑进来,也就是说在脉冲的创建和保持时间的时候,也要保证SDA处于低电平的状态下。

    在最后一个字节从从设备(TS2003)传送出来的时候,主设备(S3C6410)通过不产生应答信号来告诉通知从设备输出传输的结束,在这种情况下,从设备必须释放SDA为高,这样主设备才能产生结束信号。

    图3

    2.2.2          IIC总线数据传输

    IIC总线上数据的传输依赖于地址字节数据的R/W位,总线上有两种类型的数据传输。

    1)       主发送器发送数据到从接收器

    主设备发送第一个字节数据是从设备地址,接着发送许多字节数据。从设备在接收到字节地址和接收到每个字节都会发送应答信号。

    2)       从发送器发送数据到主接收器

    主设备发送第一个字节(从设备地址)后,从设备接着回发一个应答位,然后从设备发送很多字节数据给主设备,除了最后一个字节数据之外,主设备都会紧接着回发一个应答位,在最后一个字节数据接收后,主设备发送一个非应答(not acknowledge,也即ACK=1),以表示主设备的数据接收结束。

    2.2.3          TSC2003的模式

    TSC2003可以工作在下面两种模式下,都是从模式:

    1)       从接收模式

    通过SDA和SCL分别接收串行数据和时钟,每接收一个字节数据,就发送一个应答位。开始(START)信号和结束(STOP)信号被作为数据传输的开始和结束。TSC2003在接收到从地址和方向位后,地址的识别通过硬件来实现的(TSC2003设备地址预先设置为10010)。

    2)       从发送模式

    TSC2003作为从接收器时,接收和处理第一个字节数据(从设备地址),但是,在从发送模式下,方向位指示传输方向的反转。当串行时钟输入到SCL,TSC2003就从SDA中发送数据给主接收器(s3c6410),START和STOP信号被识别为串行传输的开始和结束。

    2.2.4          TSC2003的地址字节

    地址字节是主设备产生开始条件之后的第一个发送的字节,格式如下图所示:

    图4

    TSC2003的高5位从地址预先设置为10010,紧接着的两位A1和A0是设备选择位,TSC2003的输入引脚A1和A0决定了这两位的值,见图1中输入引脚A1和A0接地,就表示A1=A0=0,因为用A1和A0这两位用于选择设备,所以一次最多只能有4个相同预置码(same preset code)的设备可以挂在IIC总线上。A1和A0输入引脚可以接在VDD或者数据地上。最后一位R/W定义执行的操作,当设置为1,表示是读操作;当设置为0,表示是写操作。

    2.2.5          TSC2003的命令字节

    TSC2003的操作模式由命令字节数据来决定,格式如下

    图5

    C3-C0:配置位,这些配置位用于指定多路复用器地址和功能,接着TSC2003就根据指定的功能来执行,下面的表格式C3-C0配置位对应的功能:

    图6

    PD1-PD0:省电模式位,当当前选择省电模式的命令执行之后,TSC2003将工作于这两位选择的省电模式中,这两位对应的功能如下表

    图7

    AD转换器的内部基准电压可以单独被关闭或打开,这样在额外的时间里,允许AD转换器在做转换(making a conversion)之前优先设置内部基准电压为它最后的值。从而可以确保内部基准电路在省电模式时能够有额外的唤醒时间(wakeup time,也就由关闭转为打开。),另外需要注意是,在命令字节传输之后的一个STOP或重复START条件发生的时候,这时候内部基准电路的省电状态被锁存到TSC2003的内部,所以,在输入通道被修改的时候,如果要关闭内部基准电路电压,就需要对TWSC2003写一个带有PD1=0的命令字节。

    为了取得最低的功耗,推荐发送的命令字要设置PD0=0。如果多路x,y和z坐标测量相继测试完成,比如在求平均值(averaging)的时候,设置PD0=1将让触摸屏驱动保持在每个转换周期结束的时候。当TSC2003上电后,省电模式(power-down mode)位需要被设置来确保这部分可以处于想要的省电模式以实现最低的功耗。所以,在TSC2003上电后,应该马上对TSC2003写一个设置PD1=PD0=0的命令字节,这样设备就可以处于最低的省电模式,可以降低AD转换之间的功耗。

    2.2.6          TSC2003的数据传输

    1)       串行写传输

    图8

    当主设备发出包含TS2003从设备地址的地址字节,并且此地址字节的第8位为0(R/W=0)时,就表示一个转换/写周期的开始了,一旦TS2003接收到第8位数据,并且地址吻合TS2003的设备地址和(地址字节的A1和A0位和输入引脚A1和A0的值一样)后,TS2003就发送一个应答位(ACK=0)。一旦主设备(S3C6410)收到这个应答位,它就会向TSC2003写一个命令字节。TSC2003接收到这个命令字节后,就发出另一个应答位,接着主设备就可以通过产生一个重复开始条件或者停止条件来结束这次写周期,但如果在主设备发送一个停止或者重复开始的条件之前,主设备再发送另外的命令字节,TSC2003将不会应答这些命令字节。

    通过命令字的的C3到C0的确定,A/D转换器就可以选定输入多路复用器的通道。如果选择的通道是x-、y-或z-坐标测量,一旦请求测量期间开始,适当的驱动将打开,可以参考图6。如R/W=0,命令字的c0位在SCL的下降沿期间锁存到TSC2003时,表示输入采样请求开始(input sample acquisition period starts),而在主设备产生一个停止或重复开始的条件时表示结束。在接着采样请求之后,AD转换马上开始。然而,如果正在测试的是x,y和z坐标时,各自的触摸屏驱动在转换期间保持为ON的状态。

    2)       串行读传输

    图9

    为了获取最佳的性能,在一次AD转换发生的时候IIC总线应该是出于空闲的状态的。这样可以阻止数字时钟噪声(digital clock noise)影响处理器对从TSC2003发送的位的判断,如果要去的最佳的性能,主设备在试图从TSC2003读取数据之前应该至少等待10us,但是,在开始从TSC2003读取数据之前,主设备不需要等待一个完整的转换周期,而且,如果是12位的模式就没有这个等待的必要了。

    主设备产生开始条件,然后紧接着发送R/W位为1的地址字节之后就开始数据访问了,在TSC2003收到地址字节的第8位,并且如果地址和TSC2003的设备地址吻合,那么TSC2003就发送应答位,接着TSC2003的第一个数据字节就发送给主设备。在TSC2003发送完第一个数据字节后,它释放SDA线来让主设备发送一个应答位(ACK=0),在TSC2003收到此应答位后接着发送第二个数据字节(对于8位的模式,只有一个数据字节)。收到第二个数据字节后,主设备发送一个非应答位(ACK=1)以表示最后的数据字节接受完成,但如果主设备应答接收到的第二个数据字节,那么将继续从TSC2003中读取数据,直到主设备发送非应答位。在发送非应答位之后,主设备发送停止条件来结束一次读周期。

    SDA 引脚及 SCL 引脚上数据的改变必须延时一段适当的时间,延时太短,数据读入可能不成功,太长则浪费系统资源。一般可在 20 μ s 左右。读写操作时的时序非常重要。 SDA 线上的数据状态仅在 SCL 为低电平期间才能改变,而在 SCL 为高电平期间, SDA 状态的改变则被用来表示数据传输的起始和停止条件。因此,若时序控制不好,则将得不到正确的读数。同时,当主处理器在对 TSC2007 进行写操作时。还应该屏蔽它的中断脚 PENIRQ ,这样可以阻止中断脚的不停下降而触发中断。

    2.2.7          TSC2003中断引脚/PENIRQ

    图10

    Pen中断输出功能见上图,pen中断引脚通过一个上拉电阻来连接到VDD,输出高电平,当触摸触摸屏时,pen中断引脚输出低电平,这样就可以通过pen中断引脚的下降沿来知道触摸触摸屏这个动作。需要注意的是,在主设备对TSC2003写操作的时候,推荐处理器要屏蔽此中断。

  • 相关阅读:
    Vue 踩坑-2 vue文件中style的scoped属性
    IIS发布Vue项目F5刷新404问题
    .NET Core 3.1 + Hangfire 配置以及踩坑
    Vue 踩坑-1-跨域问题
    Docker 部署VUE项目
    (转)如何利用EnteLib Unity Interception Extension 和PIAB实现Transaction的Call Handler
    Unity 中的策略注入(转)
    面向方面的编程、侦听和 Unity 2.0(转)
    Unity 中的拦截功能(转)
    [转]推荐分享22个优秀的项目管理与协作工具
  • 原文地址:https://www.cnblogs.com/LoongEmbedded/p/5298757.html
Copyright © 2011-2022 走看看