为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

嵌入式系统原理及应用教程第6章

2012-07-23 50页 ppt 4MB 14阅读

用户头像

is_458930

暂无简介

举报
嵌入式系统原理及应用教程第6章nullnull主讲内容主讲内容第6章 嵌入式接口技术应用6.1 LCD显示器接口6.1 LCD显示器接口 S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块。用户可以通过编程设定LCD控制器中的相关寄存器,来选择所需的水平、垂直像素数、数据接口的数据线宽度,界面时序以及刷新率等参数。6.1.1 LCD的控制器6.1.1 LCD...
嵌入式系统原理及应用教程第6章
nullnull主讲内容主讲内容第6章 嵌入式接口技术应用6.1 LCD显示器接口6.1 LCD显示器接口 S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块。用户可以通过编程设定LCD控制器中的相关寄存器,来选择所需的水平、垂直像素数、数据接口的数据线宽度,界面时序以及刷新率等参数。6.1.1 LCD的控制器6.1.1 LCD的控制器 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。 在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN或TFT类的LCD屏。其控制器框图如图6-1所示。本节仅以STN-LCD控制器为例来介绍。 6.1.1 LCD的控制器6.1.1 LCD的控制器图6-1 S3C2440A内置LCD控制器框图 6.1.1 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的控制器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数据队列数)-16.1.1 LCD的控制器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.1 LCD的控制器表6-1 VCLK与CLKVAL间的关系 (STN, HCLK = 60 MHz)6.1.1 LCD的控制器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的控制器6.1.1 LCD的控制器视频操作 S3C2440A芯片的LCD控制器可支持8位彩色模式(256 色模式),12位彩色模式(4096色模式),4级灰度模式,16级灰度模式以及单色模式。对于灰度或彩色模式,需要基于时间抖动和帧速率控制的方法来实现灰度或彩色的分级。可以通过一个可编程的查找表选择,这个以后会作解释。6.1.1 LCD的控制器6.1.1 LCD的控制器视频操作 单色模式则不需要这些模块 (FRC和查找表),基本上通过转换视频数据使FIFOH(如果是双扫描显示类型则还有 FIFOL)的数据串行化为4位(若为 4 位双扫描或8 位单扫描显示类型时为8位)数据流到LCD驱动器。6.1.1 LCD的控制器6.1.1 LCD的控制器 接下来的部分将介绍根据查找表和FRC在灰度和彩色模式下的操作。 (1)调色板查找表 S3C2440A芯片能支持多样选择的颜色或灰度映射的颜色查找表,确保用户使用弹性化。 颜色查找表是可以选择彩色或灰度级别(在4级灰度模式下可选择16级灰度中的4级,在256色模式下可选择16级红色中的8种,16级绿色中的8种和16级蓝色中的4种)的调色板。6.1.1 LCD的控制器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的控制器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的控制器6.1.1 LCD的控制器(4)显示类型 LCD 控制器支持3种类型的LCD驱动器: 4位双扫描 4位单扫描 8 位单扫描显示模式。6.1.2 S3C2440A芯片的LCD专用寄存器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.1.2 S3C2440A芯片的LCD专用寄存器表6-2 LCDCON1寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器2.LCD 控制寄存器2 LCD 控制寄存器2(LCDCON2)是可读/写状态,地址为0x4D000004,复位后的值为0x00000000。LCDCON2寄存器的具体格式如表6-3所示。6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器表6-3 LCDCON2寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器3. LCD 控制寄存器3 LCD 控制寄存器3(LCDCON3)是可读/写状态,地址为0x4D000008,复位后的值为0x00000000。LCDCON3寄存器的具体格式如表6-4所示。6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器表6-4 LCDCON3寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器4.LCD 控制寄存器4 LCD 控制寄存器4(LCDCON4)是可读/写状态,地址为0x4D00000C,复位后的值为0x00000000。LCDCON4寄存器的具体格式如表6-5所示。6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器表6-5 LCDCON4寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器5.LCD 控制寄存器5 LCD 控制寄存器5(LCDCON5)是可读/写状态,地址为0x4D000010,复位后的值为0x00000000。LCDCON5寄存器的具体格式如表6-6所示。6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器表6-6 LCDCON5寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器6. 帧缓冲起始地址寄存器1 帧缓冲起始地址寄存器1(LCDSADDR1)是可读/写状态,地址为0x4D000014,复位后的值为0x00000000。LCDSADDR1寄存器的具体格式如表6-7所示。 表6-7 LCDSADDR1寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器7. 帧缓冲起始地址寄存器2 帧缓冲起始地址寄存器2(LCDSADDR2)是可读/写状态,地址为0x4D000018,复位后的值为0x00000000。LCDSADDR2寄存器的具体格式如表6-8所示。6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器表6-8 LCDSADDR2寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器8. 帧缓冲起始地址寄存器3 帧缓冲起始地址寄存器3(LCDSADDR3)是可读/写状态,地址为0x4D00001C,复位后的值为0x00000000。LCDSADDR3寄存器的具体格式如表6-9所示。 表6-9 LCDSADDR3寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器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 ) = 0xa2b006.1.2 S3C2440A芯片的LCD专用寄存器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 ) = 0x915806.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器9. 红色查找表寄存器 红色查找表寄存器(REDLUT)是可读/写状态,地址为0x4D000020,复位后的值为0x00000000。REDLUT寄存器的具体格式如表6-10所示。 表6-10 REDLUT寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器10. 绿色查找表寄存器 绿色查找表寄存器(GREENLUT)是可读/写状态,地址为0x4D000024,复位后的值为0x00000000。GREENLUT寄存器的具体格式如表6-11所示。表6-11 GREENLUT寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器11. 蓝色查找表寄存器 蓝色查找表寄存器(BLUELUT)是可读/写状态,地址为0x4D000028,复位后的值为0x0000。BLUELUT寄存器的具体格式如表6-12所示。 表6-12 BLUELUT寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器12. 抖动模式寄存器 抖动模式寄存器(DITHMODE)是可读/写状态,地址为0x4D00004C,初始值为0x00000,但用户可以编程设置为0x12210。DITHMODE寄存器的具体格式如表6-13所示。 表6-13 DITHMODE寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器13. 临时调色板寄存器 临时调色板寄存器(TPAL)是可读/写状态,地址为0x4D000050,复位后的值为0x00000000。TPAL寄存器的具体格式如表6-14所示。 表6-14 TPAL寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器14. LCD中断未决寄存器 LCD中断未决寄存器(LCDINTPND)是可读/写状态,地址为0x4D000054,复位后的值为0x0。LCDINTPND寄存器的具体格式如表6-15所示。 表6-15 LCDINTPND寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器15. LCD中断源未决寄存器 LCD中断源未决寄存器(LCDSRCPND)是可读/写状态,地址为0x4D000058,复位后的值为0x0。LCDSRCPND寄存器的具体格式如表6-16所示。 表6-16 LCDSRCPND寄存器的格式6.1.2 S3C2440A芯片的LCD专用寄存器6.1.2 S3C2440A芯片的LCD专用寄存器16. LCD中断屏蔽寄存器 LCD中断屏蔽寄存器(LCDINTMSK)是可读/写状态,地址为0x4D00005C,复位后的值为0x3。LCDINTMSK寄存器的具体格式如表6-17所示。 表6-17 LCDINTMSK寄存器的格式6.1.3 S3C2440A芯片LCD寄存器的设置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.1.3 S3C2440A芯片LCD寄存器的设置表6-18 各种显示模式的MV值6.1.3 S3C2440A芯片LCD寄存器的设置6.1.3 S3C2440A芯片LCD寄存器的设置 LCDBASEU寄存器的值为帧缓冲区的首地址值。为了用于阵发4字存取模式,必须除去地址低4位。LCDBASEL寄存器的值依赖于LCD尺寸和LCDBASEU的值。 该值由以下方程计算: LCDBASEL = LCDBASEU + LCDBASEL的偏移量6.1.3 S3C2440A芯片LCD寄存器的设置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寄存器的设置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总线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所示。6.2 I2C总线6.2 I2C总线6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口 S3C2440A的I2C总线接口有四个操作模式:主设备发送模式、主设备接收模式、从设备发送模式及从设备接收模式。这些操作模式间功能关系将在下面描述。 1.起始和结束条件 当I2C总线接口休眠时,其通常是在从设备模式。换言之,接口在检测到SDA线上的起始条件之间一直处于从设备模式。当接口状态变为主设备模式,在SDA线上的数据传输被初始化且SCL信号生成。6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口起始条件可以通过SDA线传输一个字节串行数据,一个停止条件可以终止一个数据传输。停止条件是当SCL是高电平时,SDA线从低电平到高电平的跳变。起始和停止条件都是由主设备生成。当起始条件生成,I2C总线忙,停止条件将使I2C总线空闲,如图6-3所示。 当一个主设备初始化起始条件,它应该发送一个从地址来停止从设备。一个字节的地址域包含7位地址和一位传输方向指示(说明读写)。如果位8是0,说明是写操作。如果位8是1,说明是数据读请求。 主设备通过发送停止条件来完成一个传输操作。如果主设备想继续到总线的数据传输,则必须生成另一个起始条件和从地址。用这个方法,可以执行不同形式下的读写操作。6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口图6-3 起始信号和结束信号 6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口图6-4 I2C总线的数据传输格式6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口图6-5 I2C总线上ACK信号6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口2.读写操作 在发送模式下,如果数据传输后,I2C总线接口会等待直到I2C总线数据移位寄存器(IICDS)收到一个新数据。在新数据写入寄存器之前,SCL线将保持低电平,然后在数据写入后释放。S3C2440A应该保持中断来识别当前数据发送是否完成。在CPU收到中断请求以后,它应该再写一个新数据到IICDS寄存器。 在接收模式下,当数据收到后,I2C总线接口应该等待直到IICDS寄存器被读取。在一个新数据被读出之前,SCL线应该保持低电平,在数据被读出后再释放。S3C2440A应该保持中断来识别当前数据接收是否完成。在CPU收到中断请求以后,它应该从IICDS寄存器读取数据。6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口3.总线仲裁 当在SDA信号线上数据有冲突的时候,为了避免两个及多个控制器之间争夺总线,则发生总线仲裁。如果一个设置SDA线位高电平的主控制器发现了另一个设置SDA线为低电平的主控制器,那么就产生了冲突。这时第一个控制器将不再继续数据的传输,因为总线的当前条件不与它匹配,换句话说,低电平的优先级要高于高电平。 但是,当2个控制器同时拉低SDA时,每个主控制器应该估计是否判断权是分配给自己。判断的方法是检测其地址位。哪个控制器发送的地址位为低电平哪个就获得控制权,若都是低电平,则查询第2个地址位,依次类推,直到最后一个。6.2.1 S3C2440A的I2C接口6.2.1 S3C2440A的I2C接口4.配置I2C总线 为了控制串行时钟(SCL)的频率,4 位的预定标器值可以通过IICCON 寄存器来被编程。I2C总线接口地址是存储在I2C总线地址寄存器(IICADD)中。(默认情况下,I2C总线接口地址有一个未知值)。6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器1.多主设备I2C总线控制寄存器 I2C总线控制寄存器(IICCON)是可读/写状态,地址为0x54000000,复位后的值为0x0X。即高四位为0,低四位为1。 IICCON寄存器的具体格式如表6-19所示。6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器表6-19 IICCON寄存器的格式6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器2.多主设备I2C总线控制状态寄存器 多主设备 IIC总线控制状态寄存器(IICSTAT)是可读/写状态,地址为0x54000004,复位后的值为0x0。IICSTAT寄存器的具体格式如表6-20所示。6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器表6-20 IICSTAT寄存器的格式6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器3.多主设备I2C总线地址寄存器 多主设备I2C总线地址寄存器(IICADD)是可读/写状态,地址为0x54000008,复位后的初值不确定。IICADD寄存器的具体格式如表6-21所示。表6-21 IICDS寄存器的格式6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器4.多主设备I2C总线接收发送数据移位寄存器 多主设备I2C总线接收发送数据移位寄存器(IICDS)是可读/写状态,地址为0x5400000C,复位后的初值不确定。IICDS寄存器的具体格式如表6-22示。表6-22 IICADD寄存器的格式6.2.2 I2C总线接口特殊寄存器6.2.2 I2C总线接口特殊寄存器5.多主设备I2C总线线路控制寄存器 多主设备I2C总线线路控制寄存器(IICLC)是可读/写状态,地址为0x54000010,复位后的值0x00。IICLC寄存器的具体格式如表6-23所示。表6-23 IICLC寄存器的格式6.2.3 I2C编程举例6.2.3 I2C编程举例 I2C总线的编程除了需要对I2C总线的专用特殊寄存器进行初始化编程外,还需要按照I2C总线的时序要求编写传送程序和接收程序。 1.初始化步骤 在任何I2C接收发送操作之前,必须执行初始化程序。初始化编程的主要流程是: (1)配置S3C2440A芯片相关的I/O引脚为I2C总线所需的功能引脚; (2)如果需要,在IICADD寄存器中写入本芯片的从属地址。 (3)设置 IICCON寄存器,使能中断,设定SCL周期。 (4)设置 IICSTAT寄存器来使能串行输出。6.2.3 I2C编程举例6.2.3 I2C编程举例2.传送及接收流程 (1)传送流程 S3C2440A芯片的I2C总线传送有两种模式:主设备传送模式和从设备传送模式。 其程序流程图分别如图6-6、图6-7所示。6.2.3 I2C编程举例6.2.3 I2C编程举例图6-6 主设备传送模式的流程 图6-7 从设备传送模式的流程 6.2.3 I2C编程举例6.2.3 I2C编程举例(2)接收流程 S3C2440A芯片的I2C总线接收有两种模式:主设备接收模式和从设备接收模式。 其程序流程图如图6-8、图6-9所示。6.2.3 I2C编程举例6.2.3 I2C编程举例图6-8 主设备接收模式的流程 图6-9 从设备接收模式的流程 6.3 I2S总线6.3 I2S总线当前很多音频系统以CD的形式,数字音频带,数字音频处理器和数字TV音响,在市场上吸引消费者。S3C2440A的Inter-IC Sound (IIS)总线接口作为一个编解码接口连接外部 8/16位立体声音频解码IC用于迷你碟机和可携式应用。IIS总线接口支持IIS总线数据格式和MSB-justified数据格式。该接口对FIFO的访问采用了DMA模式取代了中断。它可以在同一时间接收和发送数据。6.3.1 发送接收模式6.3.1 发送接收模式1.通常传输 I2S控制寄存器有一个FIFO准备标志位用于发送接收FIFO。当FIFO准备发送数据时,如果FIFO非空,FIFO准备标志位置1;如果FIFO为空,FIFO准备标志位置0。当接收FIFO非满,将接收FIFO的FIFO准备标志位置1,表示FIFO准备好接收数据;如果接收FIFO为满,FIFO准备标志置0。这些标志用于决定CPU读写FIFO的时间。用这种方法当CPU在访问发送接收FIFO时,串行数据能被发送和接收。 2.DMA传输 在此模式下,发送或接收FIFO对DMA控制器是可访问的。在发送或接收模式下的DMA服务请求是由FIFO准备标志自动执行。 3.发送和接收模式 在此模式下,I2S总线接口可以同时接收和发送数据。 6.3.2 音频串行接口格式6.3.2 音频串行接口格式1.I2S总线格式 I2S总线有四线,即串行数据输入(IISDI),串行数据输出(IISDO),左右通道选择(IISLRCK)和串行位时钟(IISCLK)。总线格式如图6-11所示。 图6-11 IIS总线格式(N=8 或16)6.3.2 音频串行接口格式6.3.2 音频串行接口格式串行数据以2的补码发送,MSB(Most Significant Bit 最高位)先发。因为发送器和接收器可能有不同的字长,MSB(最高位)先发。发送器不必知道接收器可以处理多少位,接收器也不必知道会收到多少位。 当系统字长大于发生器的字长,为了数据发送而将字截断(最低位被置 0)。如果接收器接收大于其字长的位,在LSB(最低位)后的位被忽略。另外,如果接收器收到的位数小于其字长,缺少的位被置0。因此MSB有一个固定的位置,而LSB的位置取决于字长。只要 IISLRCK 发送改变,发送器在一个时钟周期内发送下一个字的 MSB。 由发送器发送的串行数据可以和时钟信号的下降沿和上升沿同步。但是,串行数据必须在串行时钟信号的上升沿锁存到接收器,即当同步上升沿的数据发送时有一些限制。6.3.2 音频串行接口格式6.3.2 音频串行接口格式2.MSB JUSTIFIED格式 MSB JUSTIFIED总线格式在结构上和I2S总线格式。如图6-12所示。唯一和IIS总线格式的区别,MSB JUSTIFIED 格式实现了只要IISLRCK改变,发送器总是发送下一个字的MSB。 图6-12 MSB格式(N=8或16)6.3.2 音频串行接口格式6.3.2 音频串行接口格式3.采样频率和主设备时钟 主设备时钟频率(PCLK或MPLLin)可以在如表6-24所示的采样频率中选择。因为主设备时钟由I2S预分频器(预定标器)产生,预分频器(预定标器)的值和主设备时钟类型(256或384fs)应该合适确定。串行位时钟频率类型可以由每个通道的串行位和如表6-25所示的主设备时钟中来选择。6.3.2 音频串行接口格式6.3.2 音频串行接口格式表6-24 CODEC 时钟(CODECLK=256或 384fs)表6-25 可用串行位时钟频率(IISCLK=16 或 32或 48fs)6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器1.IIS控制寄存器 IIS控制寄存器(IISCON)是可读/写状态,小端模式下地址为0x55000000;大端模式下地址为0x55000002,复位后的值为0x100。 IISCON寄存器的具体格式如表6-26所示。6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器表6-26 IISCON寄存器的格式6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器2.IIS模式寄存器 IIS模式寄存器(IISMOD)是可读/写状态,小端模式下地址为0x 55000004;大端模式下地址为0x55000006,复位后的值为0x0。 IISMOD寄存器的具体格式如表6-27所示。6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器表6-27 IISMOD寄存器的格式6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器3.IIS预定标器寄存器 IIS预定标器寄存器(IISPSR)是可读/写状态,小端模式下地址为0x 55000008;大端模式下地址为0x5500000A,复位后的值为0x0。IISPSR寄存器的具体格式如表6-28所示。 表6-28 IISPSR寄存器的格式6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器4.IIS FIFO控制寄存器 IIS FIFO控制寄存器(IISFCON)是可读/写状态,小端模式下地址为0x 5500000C;大端模式下地址为0x5500000 E,复位后的值为0x0。 IISFCON寄存器的具体格式如表6-29所示。6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器表6-29 IISFCON寄存器的格式6.3.3 I2S总线接口特殊寄存器6.3.3 I2S总线接口特殊寄存器5.IIS FIFO寄存器 IIS总线接口包含两个64位的FIFO用于发送和接收模式。每个FIFO有16宽32长的表,其允许FIFO不管有效数据大小对每个半字单元操作数据。接收和发送FIFO访问通过FIFO入口进行,进入地址是 0x55000010。该寄存器在小端模式下地址为0x5500000C;大端模式下地址为0x5500000 E,复位后的值为0x0。IIS FIFO寄存器的具体格式如表6-30所示。表6-30 IIS FIFO寄存器的格式6.4 AC97控制器6.4 AC97控制器S3C2440A的AC97控制器单元支持AC97的2.0版本特点。AC97控制器使用一个音频控制器连接(AC-link)来和AC97编解码器通讯。功能模块图如图6-14所示,控制器发送立体声PCM数据给编解码器。编解码器中的外部数模转换器转换音频采样到模拟音频波形。控制器也从编解码器接收立体声PCM 数据说单声道的MIC 数据,然后将数据存储在内存中。切记:AC97控制器和IIS控制器不能同时使用。6.4 AC97控制器6.4 AC97控制器 图6-14 AC97 功能模块图6.4.1 AC97控制器操作6.4.1 AC97控制器操作2.流程图操作 AC97控制器操作流程如图6-16所示。 图6-16 AC97 控制器操作流程6.4.1 AC97控制器操作6.4.1 AC97控制器操作3.AC-LINK数字接口 每个AC97编解码包含一个连接到AC9控制器的五个引脚的数字串行接口。AC-link是一个全双工,固定时钟,PCM数字流。其有一个时分多路器配置来操作控制寄存器访问和多路输入输出音频流。AC-link架构将每个音频帧分成12个输出和12个输入数据流。每个流有一个20 位的采样分辨率和需要最小分辨率16位的一个DAC和一个ADC。 一个数据处理由256位的信息组成,其信息分解成13组时间槽并称为帧。时间槽0叫标签段(Tag Phase)且有16 位长。剩下的12个时间槽叫做数据段。标签段包含1位用于识别有效帧,另外12位用于识别数据段中的时间槽是否包含有效数据。数据段中的每个时间槽是20位长。一个帧开始由SYNC信号变高电平。SYNC高电平时间就是相应的标签段所占时间。6.4.1 AC97控制器操作6.4.1 AC97控制器操作AC97帧以固定48KHz 的时间间隔出现且同步于12.288MHz比特率时钟BITCLK。控制器和编解码器使用SYNC和BITCLK来决定何时发送数据,何时采样和接收数据。发送器在每个BITCLK的上升沿发送串行数据流,接收器在每个BITCLK的下降沿采样串行数据流。发送器必须对串行数据流中的有效槽做标记。有效槽被标记在时间槽0中。AC-link的数据是从MSB到LSB。标签段的第一位是位15,每个数据段的第一位是位19。每个槽的最后一位是位0。 6.4.1 AC97控制器操作6.4.1 AC97控制器操作4.AC97掉电 (1)掉电AC-link 当AC97编解码器的掉电寄存器(0x26)的PR4位置1时,AC-link信号进入低电源模式。然后主编解码器驱使BITCLK 和SDATA_IN 为逻辑低电压水平。 AC97控制器通过AC-link 发送写掉电寄存器(0x26)。建立AC97控制器以至于当其写掉电寄存器的PR4 位(数据0x1000),就不发送数据到槽3-12,当它收到掉电请求后,就不需要编解码器去处理其他数据。当编解码器处理请求时,它同时会拉低BITCLK和SDATA_IN。在对AC_GLBCTRL寄存器编程后,AC97控制器也驱使SYNC和SDATA_OUT为低电平。6.4.1 AC97控制器操作6.4.1 AC97控制器操作(2)唤醒AC-link- 由AC97控制器触发的唤醒 AC-link协议提供了一个AC97冷重启和一个AC97热重启。当前掉电状态最后指出了会使用哪个AC97重启。在所有的掉电模式期间所有的寄存器都应该停留在同一状态,除非执行一个AC97冷重启。在AC97冷重启中,AC97寄存器被初始化到默认值。在掉电后,在其通过重新使SYNC有效而重新激活之前,掉电出现的帧之后,AC-link必须等待最少4个音频帧时间。当AC-link上电,其通过编解码器准备位(输入槽0,位15)指示就绪。 6.4.1 AC97控制器操作6.4.1 AC97控制器操作①AC97冷重启 当通过AC_GLBCTRL寄存器使得nRESET引脚有效,冷启动产生。激活和使无效nRESET将激活BITCLK和SDATA_OUT。所有的AC97控制寄存器都被初始化到默认上电复位值。nRESET是一个同步AC97 输入。 ②AC97热重启 不改变当前的AC97寄存器值,AC97热重启重新激活AC-link。当没有BITCLK信号且SYNC拉高时,热启动产生。在通常的音频帧中,SYNC是一个同步AC97输入。当缺少BITCLK时,SYNC是作为一个用于产生AC97热重启的异步输入。AC97控制器必须不激活BITCLK直到其采样到SYNC再次为低电平。这样避免了误认为一个新音频帧。6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器1.AC97全局控制寄存器 AC97全局控制寄存器(AC_GLBCTRL)是可读/写状态,地址为0x5B000000,复位后的值为0x00000000。AC_GLBCTRL寄存器的具体格式如表6-31所示。6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器表6-31 AC_GLBCTRL寄存器的格式6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器2.AC97全局状态寄存器 AC97全局状态寄存器(AC_GLBSTAT)是可读/写状态,地址为0x5B000004,复位后的值为0x00000000。AC_GLBSTAT寄存器的具体格式如表6-32所示。6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器表6-32 AC_GLBSTAT寄存器的格式6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器3.AC97 CODEC命令寄存器 AC97 CODEC命令寄存器(AC_CODEC_CMD)是可读/写状态,地址为0x5B000008,复位后的值为0x00000000。AC_CODEC_CMD寄存器的具体格式如表6-33所示。表6-33 AC_CODEC_CMD寄存器的格式 6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器 如果想通过AC_CODEC_STAT寄存器从AC97CODEC读数据,应该依照以下步骤。 ①写命令地址和和数据到AC_CODEC_CMD 寄存器,其23 位置1。 ②延时。 ③从AC_CODEC_STAT 寄存器读命令地址和数据。 6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器4. AC97 CODEC 状态寄存器 AC97 CODEC 状态寄存器(AC_CODEC_STAT)是可读/写状态,地址为0x5B00000C,复位后的值为0x00000000。AC_CODEC_STAT寄存器的具体格式如表6-34所示。表6-34 AC_CODEC_STAT寄存器的格式6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器5.AC97 PCM 输入输出通道FIFO 地址寄存器 AC97 PCM 输入输出通道FIFO 地址寄存器(AC_PCMADDR)是可读/写状态,地址为0x5B000014,复位后的值为0x00000000。AC_PCMADDR寄存器的具体格式如表6-35所示。6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器表6-35 AC_PCMADDR寄存器的格式6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器6.AC97 MIC 输入通道FIFO 地址寄存器 AC97 MIC 输入通道FIFO 地址寄存器(AC_MICADDR)是可读/写状态,地址为0x5B000018,复位后的值为0x00000000。AC_MICADDR寄存器的具体格式如表6-36所示。表6-36 AC_MICADDR寄存器的格式6.4.2 AC97控制器特殊寄存器6.4.2 AC97控制器特殊寄存器7.AC97 MIC 输入通道FIFO 数据寄存器 AC97 MIC 输入通道FIFO 数据寄存器(AC_MICDATA)是可读/写状态,地址为0x5B00001C,复位后的值为0x00000000。AC_MICDATA寄存器的具体格式如表6-37所示。表6-37 AC_MICDATA寄存器的格式6.5 S3C2440A的摄像头6.5 S3C2440A的摄像头S3C2440A的摄像头接口(camera interface)简称CAMIF,共有图像多路复用器、捕捉单元、预览计数器、多媒体数字信号编解码器、DMA预览、DMA编解码器及特殊功能寄存器7个部件组成,S3C2440A的摄像头接口框图如图6-18所示。图6-18 S3C2440A的摄像头接口框图 6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口S3C2440A的摄像头接口(CAMIF)支持国际电联(ITU-R)的BT.601/656 标准的8位YCbCr高画质色差视频。 最大输入分辨率4096x4096像素(2048x2048像素缩放)和两个计时器。 预览计数器(preview scaler)被应用于小尺寸的图像处理,如画中画(PIP)。6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口多媒体数字信号编解码器(codec scaler) 被应用于YCbCr 4:2:0 或4:2:2标准的平面图像处理。 两个主要的DMA通道被应用于镜像或旋转功能的动态环境。例如:移动电话的文件夹模式和测试如CAMHREF, CAMVSYNC等同步信号时,经常应用到这些功能。 同时,S3C2440A的摄像头接口(CAMIF)也可以被设置成视频或图像的输出功能。S3C2440A的摄像头接口的信号说明如表6-38所示。6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口表6-38 信号说明表6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口ITU-R BT 656格式下有两种时序,一个是开始每个数视频数据块,另一个是结束每个数据块。 视频实践参考代码如表6-39所示6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口表6-39 ITU-656格式下的视频实践参考代码表6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口当兼容8位接口时, 低两位(D1,D0)无效。 F = 0 (现场1), 1 (现场2); V = 0 (其他), 1 (现场); H = 0 (开始动态图像), 1 (结束动态图像); P0, P1, P2, P3 = 保护位; 摄像头接口逻辑可以在保留“FF-00-00”数据后,捕捉动态同步H位和V位。 注:所有的外部摄像头接口I/O都由施密特触发器触发,以降低噪声干扰。 6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口1.摄像头接口操作方法 摄像头接口具有两个DMA通道:由P通道 (Preview path)和C通道(Codec path) 组成,两个通道在AHB总线上被分离使用。 在系统总线上, 两个通道都是独立的互不干扰。 P通道负责存储画中画(PIP)的RGB类图像数据到内存。 C通道负责存储类似MPEG-4或H.63的YCbCr 4:2:0 或 4:2:2类编解码图像数据到内存。6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口1.摄像头接口操作方法 这两个主通道支持高档的数码相机(DSC)、MPEG-4视频协议、视频采集等等。 例如,P通道图像可以被应用到预览画面。C通道的图像被应用到数码相机的JPEG图片,可以利用寄存器的设定不使能P通道或C通道。 6.5.1 S3C2440A的摄像头接口6.5.1 S3C2440A的摄像头接口2.时钟域 摄像头接口有两个时钟域,一个是系统总线时钟HCLK,另一个是像素时钟CAMPCLK。系统时钟必须比像素时钟快。CAMCLKOUT信号必须被类似USB锁相时钟等固定频率下分离输出。 如果使用了外部晶振,CAMCLKOUT 信号将会产生漂移。内部的计数器时钟是系统时钟,不需要两个时钟域来保持同步。CAMPCLK信号将会被连接到施密特触发器保证触发电平的电位。 3.帧存储器的层次 每个通道的帧存储器由4个乒乓存储器构成。C通道乒乓存储器是一个三元存储器,由亮度Y
/
本文档为【嵌入式系统原理及应用教程第6章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索