1.66k likes | 1.84k Views
主讲内容. 第 1 章 嵌入式系统概述 第 2 章 ARM 微处理器概述与编程模型 第 3 章 ARM9 指令系统 第 4 章 嵌入式程序设计基础 第 5 章 嵌入式内部可编程模块 第 6 章 嵌入式接口技术应用 第 7 章 软件开发环境. 6.1 LCD 显示器接口.
E N D
主讲内容 第1章 嵌入式系统概述 第2章 ARM微处理器概述与编程模型 第3章 ARM9指令系统 第4章 嵌入式程序设计基础 第5章 嵌入式内部可编程模块 第6章 嵌入式接口技术应用 第7章 软件开发环境
6.1 LCD显示器接口 S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块。用户可以通过编程设定LCD控制器中的相关寄存器,来选择所需的水平、垂直像素数、数据接口的数据线宽度,界面时序以及刷新率等参数。
6.1.1 LCD的控制器 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。 在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN或TFT类的LCD屏。其控制器框图如图6-1所示。本节仅以STN-LCD控制器为例来介绍。
REGBANK TIMEGEN VIDEO MUX 系 统 总 线 LPC3600 LCC3600 LCDCDMA VIDPRCS VCLK/LCD_HCLK VLINE/HSYNC/CPV VFRAME/VSYNC/STV VM/VDEN/TP LCD_LPCOE/LCD_LCCINV LCD_LPCREV/LCD_LCCREV LCD_LPCREVB/LCD_LCCREVB VD[23:0] 6.1.1 LCD的控制器 图6-1 S3C2440A内置LCD控制器框图
6.1.1 LCD的控制器 STN-LCD控制器操作 1. LCDDMA模块中包含了一个FIFO存储器组。当FIFO寄存器为空或部分为空时,LCDDMA请求从帧存储器以阵发存储器传输模式(每一个阵发请求获取4字的连续内存单元,并且在总线传输过程中不允许总线控制权让给其他总线控制器)获取数据。如果微处理器核响应传输请求,接下来将有连续的4个字数据从系统内存传输到该FIFO寄存器组中。FIFO寄存器组总的大小是28个字,分别由FIFO低12字和FIFO高16字组成。S3C2440A芯片内有两个FIFO寄存器组,用来支持双重扫描显示模式。如使用单重扫描模式,则仅有一个FIFO寄存器组可使用。
6.1.1 LCD的控制器 2. VFRAME脉冲信号在每帧图像的第一行数据周期间变为有效,它使行指针回到显示器的顶行重新开始新的一帧。VM信号使LCD驱动器的行和列电压极性交替变换,用作对像素的开与关。VM信号的触发速率决定于LCDCON1寄存器中MMODE位和LCDCON4寄存器MVAL区的设置。若MMODE位为0,则 VM信号每帧触发一次。若 MMODE位为1,则 VM信号在指定数量的 VLINE信号后的触发, 3. VLINE数量由MVAL[7:0]的值决定。 其VM信号的速率与MVAL[7:0]的值有关,公式为: 4. VM速率 = VLINE速率 / (2 * MVAL) 5. VFRAME 和VLINE 脉冲的产生取决于 LCDCON2/3 寄存器中 HOZVAL和 LINEVAL的配置,它们都与LCD屏的大小和显示模式有关。换句话说,HOZVAL和LINEVAL可由LCD屏与显示模式决定,公式如下: 6. HOZVAL=(水平显示尺寸/ 有效VD数据队列数)-1
6.1.1 LCD的控制器 • 在彩色显示模式下,水平显示尺寸= 3 * 水平像素数。在4位单扫描模式下,有效 VD数据队列数应为4。若用4位双扫描显示,有效的VD数据队列数也应为4,但在8位单扫描模式下,有效的VD数据队列数应为8。 • LINEVAL = (垂直显示尺寸)-1 单扫描情况 • LINEVAL = (垂直显示尺寸 / 2)-1 双扫描情况 • VCLK信号的速率取决于LCDCON1寄存器中CLKVAL的配置。见表6-1定义了VCLK与CLKVAL的关系。CLKVAL的最小值为2。 • VCLK(Hz)=HCLK/(CLKVAL x 2)
6.1.1 LCD的控制器 表6-1 VCLK与CLKVAL间的关系 (STN, HCLK = 60 MHz)
6.1.1 LCD的控制器 • 帧速率就是VFRAM信号的频率。帧速率和寄存器LCDCON1/2/3/4中WLH[1:0](VLINE脉冲宽度)、WDLY[1:0](VCLK 延迟于 VLINE 脉冲的宽度)、HOZVAL、LINEBLANK 和 LINEVAL及VCLK和HCLK密切相关。大多数LCD驱动器有它们适合帧频。帧频可由下列公式计算得出: 帧速率= 1/[{ (1/VCLK)×(HOZVAL+1)+(1/HCLK) ×(A+B+(LINEBLANK×8))}×(LINEVAL+1)] 式中:A = 2(4+WLH),B = 2(4+WDLY)。
6.1.1 LCD的控制器 视频操作 • S3C2440A芯片的LCD控制器可支持8位彩色模式(256 色模式),12位彩色模式(4096色模式),4级灰度模式,16级灰度模式以及单色模式。对于灰度或彩色模式,需要基于时间抖动和帧速率控制的方法来实现灰度或彩色的分级。可以通过一个可编程的查找表选择,这个以后会作解释。
6.1.1 LCD的控制器 视频操作 • 单色模式则不需要这些模块 (FRC和查找表),基本上通过转换视频数据使FIFOH(如果是双扫描显示类型则还有 FIFOL)的数据串行化为4位(若为 4 位双扫描或8 位单扫描显示类型时为8位)数据流到LCD驱动器。
6.1.1 LCD的控制器 接下来的部分将介绍根据查找表和FRC在灰度和彩色模式下的操作。 (1)调色板查找表 • S3C2440A芯片能支持多样选择的颜色或灰度映射的颜色查找表,确保用户使用弹性化。 • 颜色查找表是可以选择彩色或灰度级别(在4级灰度模式下可选择16级灰度中的4级,在256色模式下可选择16级红色中的8种,16级绿色中的8种和16级蓝色中的4种)的调色板。
6.1.1 LCD的控制器 (2)灰度模式操作 • S3C2440A芯片的 LCD控制器支持2种灰度模式:每像素2 位灰色(4 级灰度)和每像素4位灰色(16级灰度)。2位/像素灰色模式下使用一个查找表(BLUELUT),允许在16级可能的灰度中选择 4种。2 位/像素灰色查找表用的是蓝色查找表(BLUELUT)寄存器中BLUEVAL[15:0],就像在彩色模式下的使用蓝色查找表一样。 • 0级灰度由BLUEVAL[3:0]指定。若BLUEVAL[3:0]值为 9,则0 级灰度就代表 16级灰度中的第9级灰度。若BLUEVAL[3:0]值为15,则 0级灰度就代表16级灰度中的第15级灰度,如此类推。
6.1.1 LCD的控制器 (3)彩色模式操作 • S3C2440A芯片的LCD控制器可支持8位/像素的256色显示模式。利用抖动算法和帧频控制,彩色显示模式下可产生 256 种颜色。每像素的8 位可编码成为 3位代表红色、3 位代表绿色和位代表蓝色。 • 彩色显示模式使用单独的红色、 绿色和蓝色查找表。 它们分别用寄存器REDLUT中REDVAL[31:0]、寄存器GREENLUT中REENVAL[31:0]和寄存器BLUELUT中BLUEVAL[15:0]作为可编程的查找表项。
6.1.1 LCD的控制器 (4)显示类型 LCD 控制器支持3种类型的LCD驱动器: • 4位双扫描 • 4位单扫描 • 8 位单扫描显示模式。
6.1.2 S3C2440A芯片的LCD专用寄存器 S3C2440A芯片内部的LCD控制器包括有许多可编程的寄存器,用户可以通过编程设置这些寄存器来控制LCD的显示。下面介绍这些寄存器的格式。 1.LCD 控制寄存器1 LCD 控制寄存器1(LCDCON1)是可读/写状态,地址为0x4D000000,复位后的值为0x00000000。LCDCON1寄存器的具体格式如表6-2所示。
6.1.2 S3C2440A芯片的LCD专用寄存器 表6-2 LCDCON1寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 2.LCD 控制寄存器2 LCD 控制寄存器2(LCDCON2)是可读/写状态,地址为0x4D000004,复位后的值为0x00000000。LCDCON2寄存器的具体格式如表6-3所示。
6.1.2 S3C2440A芯片的LCD专用寄存器 表6-3 LCDCON2寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 3. LCD 控制寄存器3 LCD 控制寄存器3(LCDCON3)是可读/写状态,地址为0x4D000008,复位后的值为0x00000000。LCDCON3寄存器的具体格式如表6-4所示。
6.1.2 S3C2440A芯片的LCD专用寄存器 表6-4 LCDCON3寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 4.LCD 控制寄存器4 LCD 控制寄存器4(LCDCON4)是可读/写状态,地址为0x4D00000C,复位后的值为0x00000000。LCDCON4寄存器的具体格式如表6-5所示。
6.1.2 S3C2440A芯片的LCD专用寄存器 表6-5 LCDCON4寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 5.LCD 控制寄存器5 LCD 控制寄存器5(LCDCON5)是可读/写状态,地址为0x4D000010,复位后的值为0x00000000。LCDCON5寄存器的具体格式如表6-6所示。
6.1.2 S3C2440A芯片的LCD专用寄存器 表6-6 LCDCON5寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 6. 帧缓冲起始地址寄存器1 帧缓冲起始地址寄存器1(LCDSADDR1)是可读/写状态,地址为0x4D000014,复位后的值为0x00000000。LCDSADDR1寄存器的具体格式如表6-7所示。 表6-7 LCDSADDR1寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 7. 帧缓冲起始地址寄存器2 帧缓冲起始地址寄存器2(LCDSADDR2)是可读/写状态,地址为0x4D000018,复位后的值为0x00000000。LCDSADDR2寄存器的具体格式如表6-8所示。
6.1.2 S3C2440A芯片的LCD专用寄存器 表6-8 LCDSADDR2寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 8. 帧缓冲起始地址寄存器3 帧缓冲起始地址寄存器3(LCDSADDR3)是可读/写状态,地址为0x4D00001C,复位后的值为0x00000000。LCDSADDR3寄存器的具体格式如表6-9所示。 表6-9 LCDSADDR3寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 例6-1: LCD屏= 320*240, 16 级灰度, 单扫描 帧起始地址= 0x0c500000 偏移点数= 2048 点( 512 个半字) LINEVAL = 240-1 = 0xef PAGEWIDTH = 320*4/16 = 0x50 OFFSIZE = 512 = 0x200 LCDBANK = 0x0c500000 >> 22 = 0x31 LCDBASEU = 0x100000 >> 1 = 0x80000 LCDBASEL = 0x80000 + ( 0x50 + 0x200 ) * ( 0xef + 1 ) = 0xa2b00
6.1.2 S3C2440A芯片的LCD专用寄存器 例6-2: LCD屏= 320*240, 16 级灰度, 双扫描 帧起始地址= 0x0c500000 偏移点数= 2048 点( 512 个半字) LINEVAL = 120-1 = 0x77 PAGEWIDTH = 320*4/16 = 0x50 OFFSIZE = 512 = 0x200 LCDBANK = 0x0c500000 >> 22 = 0x31 LCDBASEU = 0x100000 >> 1 = 0x80000 LCDBASEL = 0x80000 + ( 0x50 + 0x200 ) * ( 0x77 + 1 ) = 0x91580
6.1.2 S3C2440A芯片的LCD专用寄存器 9. 红色查找表寄存器 红色查找表寄存器(REDLUT)是可读/写状态,地址为0x4D000020,复位后的值为0x00000000。REDLUT寄存器的具体格式如表6-10所示。 表6-10 REDLUT寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 10. 绿色查找表寄存器 绿色查找表寄存器(GREENLUT)是可读/写状态,地址为0x4D000024,复位后的值为0x00000000。GREENLUT寄存器的具体格式如表6-11所示。 表6-11 GREENLUT寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 11. 蓝色查找表寄存器 蓝色查找表寄存器(BLUELUT)是可读/写状态,地址为0x4D000028,复位后的值为0x0000。BLUELUT寄存器的具体格式如表6-12所示。 表6-12 BLUELUT寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 12. 抖动模式寄存器 抖动模式寄存器(DITHMODE)是可读/写状态,地址为0x4D00004C,初始值为0x00000,但用户可以编程设置为0x12210。DITHMODE寄存器的具体格式如表6-13所示。 表6-13 DITHMODE寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 13. 临时调色板寄存器 临时调色板寄存器(TPAL)是可读/写状态,地址为0x4D000050,复位后的值为0x00000000。TPAL寄存器的具体格式如表6-14所示。 表6-14 TPAL寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 14. LCD中断未决寄存器 LCD中断未决寄存器(LCDINTPND)是可读/写状态,地址为0x4D000054,复位后的值为0x0。LCDINTPND寄存器的具体格式如表6-15所示。 表6-15 LCDINTPND寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 15. LCD中断源未决寄存器 LCD中断源未决寄存器(LCDSRCPND)是可读/写状态,地址为0x4D000058,复位后的值为0x0。LCDSRCPND寄存器的具体格式如表6-16所示。 表6-16 LCDSRCPND寄存器的格式
6.1.2 S3C2440A芯片的LCD专用寄存器 16. LCD中断屏蔽寄存器 LCD中断屏蔽寄存器(LCDINTMSK)是可读/写状态,地址为0x4D00005C,复位后的值为0x3。LCDINTMSK寄存器的具体格式如表6-17所示。 表6-17 LCDINTMSK寄存器的格式
6.1.3 S3C2440A芯片LCD寄存器的设置 下面对STN-LCD控制器的寄存器设置进行介绍。LCD 控制器可支持多种尺寸的LCD 屏VCLK 的频率由CLKVAL 的值决定。CLKVAL 的取值应这样决定:必须使VCLK 的值大于数据传输速率。LCD 控制器中VD 端口的数据传输速率决定着CLKVAL 寄存器的值。数据传输速率由以下方程计算: 数据传输速率= HS×VS×FR×MV 式中,HS表示LCD 屏的水平尺寸;VS表示 LCD 屏的垂直尺寸;FR表示帧频;MV表示模式依赖值,具体如表6-18所示。
6.1.3 S3C2440A芯片LCD寄存器的设置 表6-18 各种显示模式的MV值
6.1.3 S3C2440A芯片LCD寄存器的设置 LCDBASEU寄存器的值为帧缓冲区的首地址值。为了用于阵发4字存取模式,必须除去地址低4位。LCDBASEL寄存器的值依赖于LCD尺寸和LCDBASEU的值。 该值由以下方程计算: LCDBASEL = LCDBASEU + LCDBASEL的偏移量
6.1.3 S3C2440A芯片LCD寄存器的设置 例6-3:160 x 160,4级灰度,80 帧/秒,4位单扫描显示HCLK频率为60 MHz,WLH = 1,WDLY = 1。 则:数据传输速率= 160×160×80×1/4 = 512 kHz; CLKVAL = 58;VCLK = 517 kHz; HOZVAL = 39;LINEVAL = 159; LINEBLANK =10; LCDBASEL = LCDBASEU + 3200。 对于灰度级别选择,利用帧速率控制部件(FRC)可产生16 级灰度。由于FRC自身的特点是可导致意想不到的灰度类型。这些不希望有的错误类型在快速响应的LCD上或在比较低的帧速率时可能会显示出来。因为LCD 灰度显示的质量依赖于LCD本身的特点,用户可先观察LCD所有的灰度级别,然后才选择合适的灰度级别。
6.1.3 S3C2440A芯片LCD寄存器的设置 可通过以下步骤来选择灰度质量。 ①确定抖动模式寄存器的最佳值。 ②在LCD 上显示16 级灰度条。 ③选择一个帧速率的最佳值。 ④改变VM 交替周期以获得最佳质量。 ⑤观察完16 级灰度条后,可选用LCD正常显示的灰度,只使用质量好的灰度。 例6-4 对于640×480、8bpp、60帧每秒、数据总线宽度为16位、SDRAM的访问时间为0.25μs、HCLK为60 MHz的LCD,计算如下: LCD数据速率 = 8 ×640×480 ´ 60 / 8 = 18.432MB/s; LCD DMA 阵发计数值 = 18.432 / 16 = 1.152M/s; Pdma= (Trp+Trcd+CL+(2×4)+1×(1/60 MHz)=0.250ms; LCD 系统负载 = 1.152×250 = 0.288; 系统总线占有率 = (0.288/1)×100 = 28.8%。
6.2 I2C总线 • S3C2440A可以支持多主设备I2C总线串行接口。专用串行数据线(SDA)和串行时钟线(SCL)承载总线主设备和连接I2C总线的外围设备之间的信息。SDA和SCL线都是双向的。在多主设备I2C总线模式下,多个S3C2440A微处理器可以从从属设备接收或发送串行数据。主设备S3C2440A可以初始化和终止一个基于I2C总线的数据传输。在S3C2440A中的I2C总线使用标准总线仲裁步骤。 • 当I2C总线空闲时,SDA和SCL线应该都是高电平。SDA从高到低的变化能够初始化一个开始条件。当SCL保持稳定在高电平下,SDA从低到高的变化可以初始化一个停止条件。开始和停止条件都是由主设备生成。在第一个字节中的一个7位的地址值可以决定一个由主设备选择的从设备,其地址值在开始条件初始化后被放到总线上。第8位决定的是传输方向(读或写)。 • 在总线传输期间,该字节可以被无限制的发送或接收。数据发送总是先对MSB,每个字节应该紧跟一个应答位(ACK),时序图如图6-2所示。
SDA 确定接收信号 确定接收信号 SCL 8 2 9 7 9 1 ACK 字节结束, 在接收器中断 接收器或传输器保持时钟线为低电平 图6-2 I2C总线的数据传输时序 1 2 8 6.2 I2C总线
6.2.1 S3C2440A的I2C接口 S3C2440A的I2C总线接口有四个操作模式:主设备发送模式、主设备接收模式、从设备发送模式及从设备接收模式。这些操作模式间功能关系将在下面描述。 1.起始和结束条件 当I2C总线接口休眠时,其通常是在从设备模式。换言之,接口在检测到SDA线上的起始条件之间一直处于从设备模式。当接口状态变为主设备模式,在SDA线上的数据传输被初始化且SCL信号生成。
6.2.1 S3C2440A的I2C接口 • 起始条件可以通过SDA线传输一个字节串行数据,一个停止条件可以终止一个数据传输。停止条件是当SCL是高电平时,SDA线从低电平到高电平的跳变。起始和停止条件都是由主设备生成。当起始条件生成,I2C总线忙,停止条件将使I2C总线空闲,如图6-3所示。 • 当一个主设备初始化起始条件,它应该发送一个从地址来停止从设备。一个字节的地址域包含7位地址和一位传输方向指示(说明读写)。如果位8是0,说明是写操作。如果位8是1,说明是数据读请求。 • 主设备通过发送停止条件来完成一个传输操作。如果主设备想继续到总线的数据传输,则必须生成另一个起始条件和从地址。用这个方法,可以执行不同形式下的读写操作。