摘要:介绍EP7212嵌入式处理器上LCD控制器的结构和功能;深入探讨ADS7843触摸屏接口芯片的模式选择才应用技巧;基于该系统给出一个与彩色LCD触摸屏相接的实际使用方案。
关键词:嵌入式处理器 LCD 触摸屏控制器
引言
EP7212是Cirrus Logic公司生产的单片嵌入式高集成度的处理器芯片,所有必需的接口逻辑都集成在芯片上,一个低功耗的系统方案只须增加一些存储器和外围器件就可以完成。它的处理器为ARM720T,核为ARM7TDMI CPU。时钟速率可动态编程为18 MHz、36MHz、49MHz、74MHz,其稳定处理能力达到66MIPS(百万条指令每针)(Dhrystone 2.1),峰值处理能力达到74MIPS,近似等同于一个100MHz奔腾处理器。EP7212主要为超低功耗所设计,内核在2.5V工作电压下,功耗最大不超过90mW。通过嵌入其上的内存管理单元(MMU),允许使用像Microsoft Windows CE或Linux等一样的高级操作系统。EP7212主要应用于PDA、GPS、手机等超低功耗和低成本场合。
随着生活中类似于PDA的手持设备的增多,彩色LCD触摸屏也越来越普及。本文除了简单介绍EP7212的特性以外,主要讨论EP7212上的LCD控制器如何驱动彩色LCD,以及触摸屏控制器的使用技巧,并且给出具体的连接图和逻辑图。
1 EP7212特性
*具有先进的音频解码/解压缩能力,支持多种音频解压缩算法,可以提供与ADCs、DACs和CODECs相连的数字音频接口(DAI)。
*内置LCD控制器,可以直接与一个单面板单色LCD接口。面板大小可编程,以16像素为增量,可置为32~1024像素的任何宽度(线长度)。视频制缓冲可最高编程到128KB(字节)。每个像素可编程为1、2或4位。
*支持EDO DRAM(仅在13MHz和18MHz下支持快速页模式)。可最高支持2条,每条256MB的DRAM。DRAM接口可编程为16或32位宽。
*存储器可以和最高6个独立的256 MB的扩展段接口,且处于可编程等状态。
*LCD控制器和通用应用可以共享片上的38 400(0x9600)字节的片上SRAM。
*所有的外部存储器和外围器件与32位数据总线和28位地址总线相连,并且使用一些控制信号。
*两个同步串行接口,支持类似于ADCs等Micro-wire或SPI外围器件。其中一个接口支持主从模式,另一个仅支持主模式。
*使用已固化的片上引导ROM,用于串行加载引导程序到系统的FLASH存储器。
*27位通用I/O(3个8位和1个3位GPIO口),支持多路复用,以提供必要的附加功能,且支持扫描键盘矩阵。
*内置2个全双工UART(16550类型),可支持最高位速率到115.2kb/s,拥有2个16字节的FIFO用于TX和RX,其中UART1支持调解调器控制信号。
*具有最高速率为115.2kb/s的红外数据SIR协议控制器。
*具有直流—直流转换接口(PWM),可提供两个编程占空比(从1-in-16到15-in-16)的96kHz时钟输出,可以驱动一个直流—直流的转换器。
*拥有2个16位通用目的定时计数器。
*1个32位实时时钟(RTC)和比较器。
*1个用于与1个或2个Cirrus Logic CL-PS6700 PC卡控制器相连的接口,可支持2个PC卡插槽。
*RTC驱动专用的LED内烁引脚。
*先进的系统状态控制器和电源管理。
*具有208pin LQFP和256-Ball PBGA两种封装。
*带有ROM、图表、样码和设计库的仿真工具。
*支持全JTAG边界扫描和嵌入式ICE。
2 EP7212 LCD控制器
EP7212的LCD控制器可以提供所有必需的控制信号,以便直接与一个单面板多像素LCD接口。EP7212使用通用内存结构(UMA)存储视频帧缓冲,与内核处理器(ARM720T)一起共享主内存总线,总视频帧缓存器大小可编程最高达128KB。该面板大小可编程,可以16像素为增量,置为32~1024像素的任何宽度(线长度)。总的线数(行)由总的帧缓冲器大小除以面板宽度和颜色深度决定。控制器还可编程提供1、2或4位每像素彩色深度,支持单色灰度显示或是彩色显示。
为了支持各种颜色和灰度级,LCD控制器有2个32位调色板寄存器,被分成8个可设定地址的半字节(nibble),共16个半字节,每个半字节被帧缓冲器中的数据寻址。当LCD控制器配置成像素点4位时,帧缓冲器中4位数据被用于代表1个像素,2个调色板寄存器中的半字节用该数据寻址,对应要显示的像素。该寻址结构被用于将帧缓冲器中的数据映射到实际的灰度值,该值提供给显示接口。当配置成4 bpp模式时,在调色板寄存器中的所有16个半字节被用于映射,这是因为每4个位可以提供16个不同的值。同理,2 bpp模式用最低的4个半字节;1 bpp模式用最低的2个半字节。
每个调色板寄存器半字节可以编程为0~15。这16个值对应16个不同的颜色深度级。当寄存器与灰度级相对应;当不匹配时,能产生一些有趣的显示模式。例如,若想去触发正常和翻转两种图像,通过简单的转换调色板寄存器中的半字节值就可以实现,这比在帧缓冲器中转换所有数据更快更容易。
LCD控制器有1个9字深的FIFO,被用作帧数据的过渡存储缓冲。DMA控制器被用于从帧缓冲内存中取显示数据并且填充到FIFO中。这样,旦LCD控制器被配置和帧缓冲数据被存储,EP7212就可以接着执行其它任务,而不必服务LCD控制器。
(1)灰度显示原理
实际上,LCD显示屏并不是设置成不同的亮度去驱动每一像素的。它对象素要么显示,要么关闭。LCD显示屏的一个常用指标是它的反应时间,反应时间指的是一个像素从显示到关闭所花费的时间,典型的是几百ms。一种调制技术被用于驱动每个像素,即用整个固定时间周期的一部分驱动每个像素。
LCD控制器内部有1个16周期计数器,用于产生16周期的间隔。当驱动像素时,它读帧缓冲数据所指的,在调色板寄存器中的半字节数据。该数据确定在16周期间隔里像素显示的次数。例如该值等于4,则该像素每隔4个时钟周期显示1 次,等于整个16周期间隔的4/16。裸眠认为该像素以最大亮度的1/4进行显示。
(2)彩色显示原理
彩色显示时,每个像素点有3个子彩色像素(红、绿、蓝)。灰度显示的技术应用到彩色显示中,每个子彩色像素有15种浓度的感觉效果。可用红、绿、蓝3种颜色的15种浓度中的一种去驱动1个像素点。如果LCD控制器编程为4 bpp模式,可支持最高15×15×15=3 375种不同的颜色;2 bpp模式时,可支持64种不同的颜色;1 bpp模式时,可支持8种不同的颜色。对于一个1/4VGA显示屏,实际像的数量等于320×400×4=921 600位或115 200字节,小于上面提到的最大帧缓冲的限制(128KB)。
另外一个显示特性是刷新率,指的是整个数据帧被重新写到显示屏的频率。如果数据写得太慢,将影响显示质量;太快则显示器的反应时间跟不上像素驱动状态的改变。大部分显示屏推荐的速率是70~80Hz。
当EP7212使用PLL时,则1个36.864MHz的时钟提供给LCD控制器。当使用1个13MHz的外部时钟时,则1个13MHz的时钟提供给LCD控制器。固定时钟源限制了像素写到显示屏的最大速率,即导致了最大刷新率的限制。
(3)LCD显示接口
LCD显示接口内置于EP7212之中,有如下信号:DD[0:3]、FRM、CL1、CL2、M。
①DD[0:3]是4条数据线。LCD控制器输出数据就意味着这些线在同一时刻输出4个像素。每条数据线的高或低对应每个像素值的高或低。
②FRM是帧同步信号。它在一帧所有的像素数据全部写出接口后触发为高,用于强迫复位线(行)计数器为0。这样显示屏将驱动下一个半字节数据到显示屏的第一行。
③CL1是行选通信号。它在一行所有的像素数据写出接口后触发为高。
④CL2是像素数据时钟。它被显示屏用于在每个像素数据的半字节定时,它的周期是实际像素速率的1/4。当CL1触发时,CL2置低。
⑤M是交流偏压信号。M的值由所使用的显示屏确定,可从显示屏的数字手册中得到。
(4)彩色显示接口
图1是EP7212LCD控制器与夏普LM057QC1T03 1/4VGA彩色非触屏LCD显示模块的接口连接逻辑图(如是触摸屏可加后面所述的触摸屏转换接口)。该显示屏是8位数据接口。该逻辑的主要目的是将4位接口转换成8位,对应2个半字节。该逻辑不影响LCD控制寄存器的编程,并且有同样的刷新率和像素彩色深度。图1的左边是LCD控制器的所有信号,右边与显示屏相连。由于EP7212要输出2组数据,为了支持8位数据,时钟必须是原来速率的一半,这意味着CL2必须减半。通过用D触发器,CL2作为输入时钟,则在它的Q端就变成输入时钟的1/2。CL1直接连接到显示屏,它也被用于复位D触发器,使Q端在开始时为低。用74LCX174寄存器存储8位数据的低4位。当高4位来到时2个半字节一起提供给显示屏,LCD_EN可用1根EP7212的通和I/O引脚控制。
表1为部分兼容的显示屏。
表1 部分LCD显示模块
Sharp LM057QC1T018bit,6.1',320×240,彩色,非触屏
Sharp LM057QC1T038bit,6.1',320×240,Color Transmissive,CCTF背光,触屏
Sharp LM038QC1R108bit,3.8',320×240,Clolor Reflective,无背光,非触屏
Sharp LM038QC1S108bit,3.8',320×240,Clolor Transflective,背光,非触屏
Sharp LM038QC1TS108bit,3.8',320×240,Color Transflective,背光,触屏
3 触摸屏控制器
触摸屏分电阻、电容、表面表波、红外线扫描和矢量压力传感等几种类型,其中使用最多的是四线或五线电阻触摸屏。四线电阻触摸屏由2个透明电阻膜构成,在它的水平和垂直电阻网上施加电压,A/D转换面板在触摸点测量出电压,人而对应出坐标值。
ADS7843是TI公司生产的四线电阻触摸屏转换接口芯片。它是一款具有同步串行接口的12位取样模数转换器。在125kHz吞吐速率和2.7V电压下,功耗为750μW。在关闭模式下,功耗仅为0.5μW。由于具有低功耗和高速等特性,被广泛应用在用电池供电的小型手持设备上。
ADS7843的连结关系如图2所示。工作电压Vcc为2.7~5.25V之间,基准电压Vref介于1V到+Vcc之间。其准电压确定了转换器输入范围,输入数据每个数字位代表的模拟电压等于基准电压除以4096。平均基准输入电流由ADS7843的转换率确定。转换器的模拟输入(X+、Y+、X-、Y-)是一个4通道多路器;DCLK是外部时钟输入引脚;CS是片选;DIN是串行输入,控制数据通过该引脚输入;DOUT是串行数据输出,用于输出转换后的触摸位置数据,最大数为二进制的4095;IN3和IN4是辅助引脚;PENIRQ是PEN中断;用于触摸显示屏后引发一个中断。
通过连接触摸屏X+输入到A/D转换器,同时打开Y+和Y-驱动,然后数字化X+的电压,从得到当前Y位置的测量结果。同理也可得到X方向的坐标。
具体设置和使用方法见ADS7843数据手册。下面主要讨论一下ADS7843的模式设置、PEN中断引脚使用、软件编程等。
(1)模式设置
ADS7843有差分(differential)和单端(singleended mode)两种工作模式。这两种模式对转换后的精度和可靠性有一些影响。如果将A/D转换器配置为读绝对电压(单端模式)方式,则驱动(driver)电压的下降将导致转换输入数据的错误;如果配置为差分模式,可以避免上述错误。当触摸屏被按下时,有两种情况影响接触点的电压:一种是当触摸显示屏时,导致触摸屏外层震动;一种是触摸屏顶屏和低层之间寄存器电容引起的电流震荡,以及在ADS7843输入引脚上引起电压震荡。这两种情况都导致了触摸屏上的电压发生震荡以及增加DC值稳定的时间。
在单端模式中,一旦在触摸屏上检测到一次触摸事件,EP7212就发送一串控制字节给ADS7843,要求它进行一次转换。然后,ADS7843在获取周期的起始点,通过内部FET开关提供电压给面板,并导致触摸点电压的升高。正如上面所介绍的,上升的电压在最终稳定之前会震荡一段时间。获取周期结束后,所有FET开关将关闭,A/D转换器将进入转换周期。如果在当前转换周期间,没有发出下一个控制字节,ADS7843将进入低功耗模式并等待下一条指令。由于面板上分布大量电容,特别是滤波噪声,应该注意设置对应于X坐标或Y坐标上的电压。在单端模式中,输入电压必须在Data In word的最后三个时钟周期期间设置,否则将产生错误。
除了内部FET开关从获取周期开始到转换周期结束期间一直保持开发外,差分模式的操作类似于单端模式。加在面板上的电压将成为对A/D转换器的基准电压,提供一个度量比的操作。这意味着如果加在面板上的电压发生变化(由于电源、驱动电阻、温度或触摸屏电阻等改变导致),则A/D转换器的度量比操作可以对这种变化进行补偿。如果在当前转换周期,发向ADS7843的下一个控制字节所选择的通道与前一个控制字节相同,则在当前转换完成后开关仍然不会关闭。
在这两模式中,ADS7843只有3个时钟周期可以从触摸屏上获取(取样)输入模拟电压,因此为了ADS7843可以获正确的电压,输入电压必须在3个时钟周期的时间范围内设置好。打开驱动将引起触摸屏的电压快速升高,然后设置到最终值。为了得到转换的正确数据。获取必须在触摸屏完全设置好时完成。有两种获取的方式:一是采用单端模式,用相对较慢的时钟,这样扩展了获取时间(3个时钟周期);二是采用差分械,用相对较快的时钟,在第一个转换周期设置电压,第二个转换周期获取准确的电压。第二种方式的两个控制字节相同,内部X/Y开关在首次转换后不会关闭,由于首次转换期间电压还不稳定,因此要求丢弃首次转换的结果。使用第二种方式的另一个优点是降低功耗,在全部转换后,ADS7843进入低功耗模式并且等待下一次取样周期。对于慢时钟这种情况,下一次取样可能在当前转换结束后立即进入取样周期,没有时间进入低功耗模式。
在单端模式下不能使用快速时钟。
差分模式具有以下特点:①能够在不扩展转换器获取时间的条件下,用很长的设置时间处理触摸展,即触摸屏电压可以有足够的时间稳定下来。②通过用快速时间,ADS7843可以进入低功耗模式,从而可以节约电池能量。建议使用差分模式。
(2)PEN中断引脚使用
该引脚的主要作用是让设计者可以完全控制ADS7843的低功耗模式操作。如图3所示,I/O1和I/O2是引自EP7212的通用目的输入/输出口。当电源加入系统且转换器被设置(PD1、PD0=00)之后,转换器进入低功耗模式。当未触摸面板时,ADS7833内部的二极管没有偏正,因此没有电流流过(忽略漏流);当触摸面板时,Y-提供了一条电流(I)通路;X+、X-和Y+处于高阻状态,电流经过100kΩ电阻和中断二极管。PENIRQ被拉低,通过I/O2上一个不超过0.65V的电压唤醒CPU,然后EP7212拉低I/O1和I/O2上的电位,并且对 ADS7843控制寄存器写一个字节,进行转换初始化。为了转换PENIRQ二极管上的偏置电压,EP7212必须拉低I/O1和I/O2上的电压。否则,如果在转换期间二极管上有一个前向偏压,附加的电流将引起输入数据不准确。
(3)差分模式下的软件流程
下面两种算法假设ADS7843配置成差分模式,每次转换为16个时钟,X轴坐标的结果在DATA X中,Y轴的坐标在DATA Y中。流程如图4所示。
图4(a)中的例子采用判断两次的方法来克服触摸屏信号的抖动。DATA 1存储当前转换的结果,DATA 2存储上一次转换的结果,当两次结果相同时转换数据有效。但是当输入电压的震动频率和取样频率相近时,可能会漏掉正确结果。
图4(b)中的例子采用最后的转换结果(第n次)作为有效转换。该方式更加简单,但是只对某一类触摸屏有效。"n"的具体值依赖于ADS7843输入电压的设置时间,在确定"n"值以前需要对一些触摸屏进行测试。
(4)错误触发
由于X+输入引脚与PEN中断输出相连接,因此,在X+上的噪声可能引起触摸屏错误触发。可对在PEN中断输出引脚上连接1个RC滤波器。例如,对地连接1个1Ω电阻和1个0.01μF的电容,可以过滤噪声脉冲和避免错误触发。
结束语
本文主要介绍EP7212的LCD控制器的工作原理和设计逻辑,并且探讨了触摸屏控制器的使用技巧,适用于EP7212XX系列嵌入式处理器与单色、非触摸屏连接的设计。触摸屏部分也适用于与其它处理器的连接。