Presentation is loading. Please wait.

Presentation is loading. Please wait.

(第2版).

Similar presentations


Presentation on theme: "(第2版)."— Presentation transcript:

1 (第2版)

2 主讲内容 第1章 嵌入式系统概述 第2章 ARM微处理器概述与编程模型 第3章 ARM9指令系统 第4章 嵌入式程序设计基础
第1章 嵌入式系统概述 第2章 ARM微处理器概述与编程模型 第3章 ARM9指令系统 第4章 嵌入式程序设计基础 第5章 嵌入式内部可编程模块 第6章 嵌入式接口技术应用 第7章 软件开发环境

3 6.1 LCD显示器接口 S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块。用户可以通过编程设定LCD控制器中的相关寄存器,来选择所需的水平、垂直像素数、数据接口的数据线宽度,界面时序以及刷新率等参数。

4 6.1.1 LCD的控制器 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。
在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN或TFT类的LCD屏。其控制器框图如图6-1所示。本节仅以STN-LCD控制器为例来介绍。

5 6.1.1 LCD的控制器 图6-1 S3C2440A内置LCD控制器框图 REGBANK LCDCDMA TIMEGEN LPC3600
LCC3600 VIDPRCS VIDEO MUX 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 S3C2440A内置LCD控制器框图

6 LCD的控制器 STN-LCD控制器操作 1. LCDDMA模块中包含了一个FIFO存储器组。当FIFO寄存器为空或部分为空时,LCDDMA请求从帧存储器以阵发存储器传输模式(每一个阵发请求获取4字的连续内存单元,并且在总线传输过程中不允许总线控制权让给其他总线控制器)获取数据。如果微处理器核响应传输请求,接下来将有连续的4个字数据从系统内存传输到该FIFO寄存器组中。FIFO寄存器组总的大小是28个字,分别由FIFO低12字和FIFO高16字组成。S3C2440A芯片内有两个FIFO寄存器组,用来支持双重扫描显示模式。如使用单重扫描模式,则仅有一个FIFO寄存器组可使用。

7 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

8 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)

9 表6-1 VCLK与CLKVAL间的关系 (STN, HCLK = 60 MHz)
LCD的控制器 表6-1 VCLK与CLKVAL间的关系 (STN, HCLK = 60 MHz) CLKVAL 60 MHz/X VCLK 2 60 MHz/4 15.0 MHz 3 60 MHz/6 10.0 MHz : 1023 60 MHz/2046 29.3 kHz

10 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)。

11 LCD的控制器 视频操作 S3C2440A芯片的LCD控制器可支持8位彩色模式(256 色模式),12位彩色模式(4096色模式),4级灰度模式,16级灰度模式以及单色模式。对于灰度或彩色模式,需要基于时间抖动和帧速率控制的方法来实现灰度或彩色的分级。可以通过一个可编程的查找表选择,这个以后会作解释。

12 LCD的控制器 视频操作 单色模式则不需要这些模块 (FRC和查找表),基本上通过转换视频数据使FIFOH(如果是双扫描显示类型则还有 FIFOL)的数据串行化为4位(若为 4 位双扫描或8 位单扫描显示类型时为8位)数据流到LCD驱动器。

13 6.1.1 LCD的控制器 接下来的部分将介绍根据查找表和FRC在灰度和彩色模式下的操作。 (1)调色板查找表
S3C2440A芯片能支持多样选择的颜色或灰度映射的颜色查找表,确保用户使用弹性化。 颜色查找表是可以选择彩色或灰度级别(在4级灰度模式下可选择16级灰度中的4级,在256色模式下可选择16级红色中的8种,16级绿色中的8种和16级蓝色中的4种)的调色板。

14 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级灰度,如此类推。

15 LCD的控制器 (3)彩色模式操作 S3C2440A芯片的LCD控制器可支持8位/像素的256色显示模式。利用抖动算法和帧频控制,彩色显示模式下可产生 256 种颜色。每像素的8 位可编码成为 3位代表红色、3 位代表绿色和位代表蓝色。 彩色显示模式使用单独的红色、 绿色和蓝色查找表。 它们分别用寄存器REDLUT中REDVAL[31:0]、寄存器GREENLUT中REENVAL[31:0]和寄存器BLUELUT中BLUEVAL[15:0]作为可编程的查找表项。

16 LCD的控制器 (4)显示类型 LCD 控制器支持3种类型的LCD驱动器: 4位双扫描 4位单扫描 8 位单扫描显示模式。

17 S3C2440A芯片的LCD专用寄存器 S3C2440A芯片内部的LCD控制器包括有许多可编程的寄存器,用户可以通过编程设置这些寄存器来控制LCD的显示。下面介绍这些寄存器的格式。 1.LCD 控制寄存器1 LCD 控制寄存器1(LCDCON1)是可读/写状态,地址为0x4D000000,复位后的值为0x 。LCDCON1寄存器的具体格式如表6-2所示。

18 6.1.2 S3C2440A芯片的LCD专用寄存器 表6-2 LCDCON1寄存器的格式 引脚名称 位 描述 初始值 LINECNT(只读)
[27:18] 行计数器状态位,值由 LINEVAL递减至 0。 CLKVAL [17:8] 确定VCLK的速率。 STN: VCLK= HCLK / (CLKVAL×2) CLKVAL≧2; TFT: VCLK=HCLK/ [(CLKVAL+1)×2] CLKVAL≧0。 MMODE [7] 决定VM信号的触发速率。 0 = 每帧触发;1 = 触发速率由MVAL决定。 PNRMODE [6:5] 显示模式选择位。 00 = 4位双扫描显示模式(STN); 01 = 4位单扫描显示模式(STN); 10 = 8位单扫描显示模式(STN);11 = TFT型LCD显示。 00 BPPMODE [4:1] 单个像素的位数选择。 0000 = STN型1位/像素, 单色模式; 0001 = STN型2位/像素, 4级灰度模式; 0010 = STN型4位/像素16级灰度模式; 0011 = STN型8位/像素, 彩色模式; 0100 = STN型12位/像素, 彩色模式; 1000 = TFT型1位/像素;1001 = TFT型2位/像素; 1010 = TFT型4位/像素;1011 = TFT型8位/像素; 1100 = TFT型16位/像素;1101 = TFT型24位/像素。 0000 ENVID [0] LCD视频输出和逻辑信号使能位。 0=视频输出和控制信号无效;1=视频输出和控制信号有效。

19 6.1.2 S3C2440A芯片的LCD专用寄存器 2.LCD 控制寄存器2
LCD 控制寄存器2(LCDCON2)是可读/写状态,地址为0x4D000004,复位后的值为0x 。LCDCON2寄存器的具体格式如表6-3所示。

20 6.1.2 S3C2440A芯片的LCD专用寄存器 表6-3 LCDCON2寄存器的格式 引脚名称 位 描述 初始值 VBPD
[31:24] TFT: 垂直后沿(VBPD)指在一帧开始时,垂直同步时期之后非活动行的数目; STN: 使用STN型LCD时此位应为0。 0x00 LINEVAL [23:14] TFT/STN: 确定 LCD屏的垂直尺寸。 VFPD [13:6] TFT: 垂直后沿指在一帧结束时,垂直同步时期后非活动行的数目; VSPW [5:0] 显示模式选择位。 00 = 4位双扫描显示模式(STN);01 = 4位单扫描显示模式(STN); 10 = 8位单扫描显示模式(STN);11 = TFT型LCD显示。 00000

21 6.1.2 S3C2440A芯片的LCD专用寄存器 3. LCD 控制寄存器3
LCD 控制寄存器3(LCDCON3)是可读/写状态,地址为0x4D000008,复位后的值为0x 。LCDCON3寄存器的具体格式如表6-4所示。

22 6.1.2 S3C2440A芯片的LCD专用寄存器 表6-4 LCDCON3寄存器的格式 引脚名称 位 描述 初始值 HBPD (TFT)
[25:19] TFT:在HSYNC信号下降沿和有效数据开始之间的VCLK脉冲数。 0x00 WDLY (STN) STN: WDLY[1:0]位确定VLINE与VCLK之间的延时。 00 = 16 HCLK;01 = 32 HCLK;10 = 48 HCLK;11 = 64 HCLK。 WDLY[7:2]为保留位。 HOZVAL [18:8] 确决LCD显示屏水平尺寸。HOZVAL必须被指定以满足一行有4n个字节的条件。 HFPD (TFT) [7:0] TFT:在HSYNC信号上升沿和有效数据结束之间的VCLK脉冲数。 LINEBLANK (STN) STN:确定行扫描的占空时间.这些位可微调VLINE的速率。 LINEBLANK的最小数为HCLK*8。 如:LINEBLANK=10,占空时间在80个HCLK期间插入VCLK。 00000

23 6.1.2 S3C2440A芯片的LCD专用寄存器 4.LCD 控制寄存器4
LCD 控制寄存器4(LCDCON4)是可读/写状态,地址为0x4D00000C,复位后的值为0x 。LCDCON4寄存器的具体格式如表6-5所示。

24 6.1.2 S3C2440A芯片的LCD专用寄存器 表6-5 LCDCON4寄存器的格式 引脚名称 位 描述 初始值 MVAL [15:8]
STN:当MMODE=1时,MVAL位定确定VM信号的速率。 0x00 HSPW(TFT) [7:0] TFT:通过对VCLK的计数水平同步脉冲宽度决定着HSYNC脉高电平脉冲的宽度。 WLH(STN) STN: WLH[1:0] 位确定VLINE脉冲的宽度。 00 = 16 HCLK;01 = 32 HCLK;10 = 48 HCLK;11 = 64 HCLK。WLH[7:2]作为保留位。

25 6.1.2 S3C2440A芯片的LCD专用寄存器 5.LCD 控制寄存器5
LCD 控制寄存器5(LCDCON5)是可读/写状态,地址为0x4D000010,复位后的值为0x 。LCDCON5寄存器的具体格式如表6-6所示。

26 6.1.2 S3C2440A芯片的LCD专用寄存器 表6-6 LCDCON5寄存器的格式 引脚名称 位 描述 初始值 Reserved
[15:8] 保留位。 VSTATUS [16:15] TFT:垂直扫描状态(只读). 00= VSYNC;01= BACK Porch;10= ACTIVE;11= FRONT Porch。 00 HSTATUS [14:13] TFT:水平扫描状态(只读)。 00= HSYNC;01= BACK Porch;10= ACTIVE;11= FRONT Porch。 BPP24BL [12] TFT:确定24bpp显示时显存中数据的格式。 0 = LSB有效;1 = MSB 有效。 FRM565 [11] TFT: 确定16bpp显示时输出数据的格式。 0 = 5:5:5:1格式;1 = 5:6:5 格式。 INVVCLK [10] STN/TFT: 确定VCLK信号的有效边沿。 0= CLK信号的下降沿时取数据;1= VCLK信号的上升沿时取数据。 INVVLINE [9] STN/TFT: 确定VLINE/HSYNC的脉冲极性。0=正常;1=反转。

27 6.1.2 S3C2440A芯片的LCD专用寄存器 引脚名称 位 描述 初始值 INVVFRAME [8]
STN/TFT: 确定VFRAME/VSYNC的脉冲极性。0 =正常;1=反转。 INVVD [7] STN/TFT: 确定VD (视频数据) 的脉冲极性。0=正常;1=反转。 INVVDEN [6] TFT: 确定VDEN信号的脉冲极性。0=正常;1=反转。 INVPWREN [5] STN/TFT: 确定PWREN信号的脉冲极性。0 =正常;1=反转。 INVLEND [4] TFT: 确定LEND信号的脉冲极性。0=正常;1=反转。 PWREN [3] STN/TFT: LCD_PWREN 输出信号使能位。0= 不使能;1= 使能。 ENLEND [2] TFT: LEND 输出信号使能位。0= 不使能;1= 使能。 BSWP [1] STN/TFT:字节交换使能位。0= 不使能;1= 使能。 HWSWP [0] STN/TFT:半字交换使能位。0=不使能;1=使能。

28 6.1.2 S3C2440A芯片的LCD专用寄存器 6. 帧缓冲起始地址寄存器1
帧缓冲起始地址寄存器1(LCDSADDR1)是可读/写状态,地址为0x4D000014,复位后的值为0x 。LCDSADDR1寄存器的具体格式如表6-7所示。 表6-7 LCDSADDR1寄存器的格式 引脚名称 描述 初始值 LCDBANK [29:21] 指示系统内存中视频缓冲区的位置A[30:22]。 0x00 LCDBASEU [20:0] 对于双扫描LCD:指示帧缓冲区或在双扫描LCD时的上帧缓冲区的开始地址A[21:1]; 对于单扫描LCD:指示帧缓冲区的开始地址A[21:1]。 0x000000

29 6.1.2 S3C2440A芯片的LCD专用寄存器 7. 帧缓冲起始地址寄存器2
帧缓冲起始地址寄存器2(LCDSADDR2)是可读/写状态,地址为0x4D000018,复位后的值为0x 。LCDSADDR2寄存器的具体格式如表6-8所示。

30 6.1.2 S3C2440A芯片的LCD专用寄存器 引脚名称 位 描述 初始值 LCDBASEL [20:0]
表6-8 LCDSADDR2寄存器的格式 引脚名称 描述 初始值 LCDBASEL [20:0] 对于双扫描LCD:指示在使用双扫描LCD时的下帧存储区的开始地址A[21:1]; 对于单扫描LCD:指示帧存储区的结束地址为A[21:1]。 0x0000

31 6.1.2 S3C2440A芯片的LCD专用寄存器 8. 帧缓冲起始地址寄存器3
帧缓冲起始地址寄存器3(LCDSADDR3)是可读/写状态,地址为0x4D00001C,复位后的值为0x 。LCDSADDR3寄存器的具体格式如表6-9所示。 表6-9 LCDSADDR3寄存器的格式 引脚名称 描述 初始值 OFFSIZE [21:11] 实际屏幕的偏移量大小。 PAGEWIDTH [10:0] 实际屏幕的页宽度。

32 6.1.2 S3C2440A芯片的LCD专用寄存器 例6-1: LCD屏= 320*240, 16 级灰度, 单扫描
帧起始地址= 0x0c500000 偏移点数= 2048 点( 512 个半字) LINEVAL = = 0xef PAGEWIDTH = 320*4/16 = 0x50 OFFSIZE = 512 = 0x200 LCDBANK = 0x0c >> 22 = 0x31 LCDBASEU = 0x >> 1 = 0x80000 LCDBASEL = 0x ( 0x50 + 0x200 ) * ( 0xef + 1 ) = 0xa2b00

33 6.1.2 S3C2440A芯片的LCD专用寄存器 例6-2: LCD屏= 320*240, 16 级灰度, 双扫描
帧起始地址= 0x0c500000 偏移点数= 2048 点( 512 个半字) LINEVAL = = 0x77 PAGEWIDTH = 320*4/16 = 0x50 OFFSIZE = 512 = 0x200 LCDBANK = 0x0c >> 22 = 0x31 LCDBASEU = 0x >> 1 = 0x80000 LCDBASEL = 0x ( 0x50 + 0x200 ) * ( 0x ) = 0x91580

34 6.1.2 S3C2440A芯片的LCD专用寄存器 9. 红色查找表寄存器
红色查找表寄存器(REDLUT)是可读/写状态,地址为0x4D000020,复位后的值为0x 。REDLUT寄存器的具体格式如表6-10所示。 表6-10 REDLUT寄存器的格式 引脚名称 描述 初始值 REDVAL [31:0] 定义了选择16种色度当中的哪8种红色组合。 000= REDVAL[3:0];001= REDVAL[7:4]; 010=REDVAL[11:8];011= REDVAL[15:12]; 100= REDVAL[19:16];101 = REDVAL[23:20]; 110= REDVAL[27:24];111 = REDVAL[31:28]。 0x

35 6.1.2 S3C2440A芯片的LCD专用寄存器 10. 绿色查找表寄存器
绿色查找表寄存器(GREENLUT)是可读/写状态,地址为0x4D000024,复位后的值为0x 。GREENLUT寄存器的具体格式如表6-11所示。 表6-11 GREENLUT寄存器的格式 引脚名称 描述 初始值 GREENVAL [31:0] 定义了选择16种色度当中的哪8种绿色组合。 000= GREENVAL[3:0];001=GREENVAL[7:4]; 010= GREENVAL[11:8];011=GREENVAL[15:12]; 100=GREENVAL[19:16];101=GREENVAL[23:20]; 110=GREENVAL[27:24];111 = GREENVAL[31:28]。 0x

36 6.1.2 S3C2440A芯片的LCD专用寄存器 11. 蓝色查找表寄存器
蓝色查找表寄存器(BLUELUT)是可读/写状态,地址为0x4D000028,复位后的值为0x0000。BLUELUT寄存器的具体格式如表6-12所示。 表6-12 BLUELUT寄存器的格式 引脚名称 描述 初始值 BLUEVAL [15:0] 定义了选择16种色度当中的哪8种蓝色组合。 00 = BLUEVAL[3:0]; 01 = BLUEVAL[7:4]; 10 = BLUEVAL[11:8];11 = BLUEVAL[15:12]。 0x0000

37 6.1.2 S3C2440A芯片的LCD专用寄存器 12. 抖动模式寄存器
抖动模式寄存器(DITHMODE)是可读/写状态,地址为0x4D00004C,初始值为0x00000,但用户可以编程设置为0x12210。DITHMODE寄存器的具体格式如表6-13所示。 表6-13 DITHMODE寄存器的格式 引脚名称 描述 初始值 DITHMODE [18:0] 选择下面2个值之一:0x00000或0x12210。 0x00000

38 6.1.2 S3C2440A芯片的LCD专用寄存器 13. 临时调色板寄存器
临时调色板寄存器(TPAL)是可读/写状态,地址为0x4D000050,复位后的值为0x 。TPAL寄存器的具体格式如表6-14所示。 表6-14 TPAL寄存器的格式 引脚名称 描述 初始值 TPALEN [24] 临时调色板寄存器使能位。0 =不使能;1 =使能。 TPALVAL [23:0] 临时调色板值。 TPALVAL[23:16]=红色;TPALVAL[15:8]=绿色; TPALVAL[7:0] =蓝色。 0x000000

39 6.1.2 S3C2440A芯片的LCD专用寄存器 14. LCD中断未决寄存器
LCD中断未决寄存器(LCDINTPND)是可读/写状态,地址为0x4D000054,复位后的值为0x0。LCDINTPND寄存器的具体格式如表6-15所示。 表6-15 LCDINTPND寄存器的格式 引脚名称 描述 初始值 INT_FrSyn [1] LCD帧同步中断未决位。 0 = 未产生中断请求;1 = 帧提出中断请求。 INT_FiCnt [0] LCD 的FIFO中断未决位。 0 = 未产生中断请求; 1 = 当LCD FIFO 已达到翻转值时提出中断请求。

40 6.1.2 S3C2440A芯片的LCD专用寄存器 15. LCD中断源未决寄存器
LCD中断源未决寄存器(LCDSRCPND)是可读/写状态,地址为0x4D000058,复位后的值为0x0。LCDSRCPND寄存器的具体格式如表6-16所示。 表6-16 LCDSRCPND寄存器的格式 引脚名称 描述 初始值 INT_FrSyn [1] LCD帧同步中断未决位。 0=未产生中断请求;1 = 帧提出中断请求。 INT_FiCnt [0] LCD 的FIFO中断未决位。 0=未产生中断请求; 1 =当LCD FIFO已达到翻转值时提出中断请求。

41 6.1.2 S3C2440A芯片的LCD专用寄存器 16. LCD中断屏蔽寄存器
LCD中断屏蔽寄存器(LCDINTMSK)是可读/写状态,地址为0x4D00005C,复位后的值为0x3。LCDINTMSK寄存器的具体格式如表6-17所示。 表6-17 LCDINTMSK寄存器的格式 引脚名称 描述 初始值 FIWSEL [2] 确定LCD FIFO的翻转值。0 = 4字;1 = 8字。 INT_FrSyn [1] LCD帧同步中断屏蔽位。 0 = 中断请求有效;1 = 中断请求被屏蔽。 1 INT_FiCnt [0] LCD的FIFO中断屏蔽。

42 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所示。

43 6.1.3 S3C2440A芯片LCD寄存器的设置 表6-18 各种显示模式的MV值 模式 MV值 单色,4位单扫描显示模式 1/4
单色,8位单扫描显示模式或4位双扫描显示模式 1/8 4级灰度,4位单扫描显示模式 4级灰度,8位单扫描显示模式或4位双扫描显示模式 16级灰度,4位单扫描显示模式 16级灰度8位单扫描显示模式或4位双扫描显示模式 彩色,4位单扫描显示模式 3/4 彩色,8位单扫描显示模式或4位双扫描显示模式 3/8

44 S3C2440A芯片LCD寄存器的设置 LCDBASEU寄存器的值为帧缓冲区的首地址值。为了用于阵发4字存取模式,必须除去地址低4位。LCDBASEL寄存器的值依赖于LCD尺寸和LCDBASEU的值。 该值由以下方程计算: LCDBASEL = LCDBASEU + LCDBASEL的偏移量

45 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 。 对于灰度级别选择,利用帧速率控制部件(FRC)可产生16 级灰度。由于FRC自身的特点是可导致意想不到的灰度类型。这些不希望有的错误类型在快速响应的LCD上或在比较低的帧速率时可能会显示出来。因为LCD 灰度显示的质量依赖于LCD本身的特点,用户可先观察LCD所有的灰度级别,然后才选择合适的灰度级别。

46 6.1.3 S3C2440A芯片LCD寄存器的设置 可通过以下步骤来选择灰度质量。 ①确定抖动模式寄存器的最佳值。
③选择一个帧速率的最佳值。 ④改变VM 交替周期以获得最佳质量。 ⑤观察完16 级灰度条后,可选用LCD正常显示的灰度,只使用质量好的灰度。 例6-4 对于640×480、8bpp、60帧每秒、数据总线宽度为16位、SDRAM的访问时间为0.25μs、HCLK为60 MHz的LCD,计算如下: LCD数据速率 = 8 ×640×480 ´ 60 / 8 = MB/s; LCD DMA 阵发计数值 = / 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%。

47 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所示。

48 6.2 I2C总线 图6-2 I2C总线的数据传输时序 SDA 确定接收信号 确定接收信号 1 2 8 ACK SCL 7 9 1 2
确定接收信号 确定接收信号 8 ACK SCL 7 9 1 2 字节结束, 在接收器中断 接收器或传输器保持时钟线为低电平 图6-2 I2C总线的数据传输时序

49 S3C2440A的I2C接口 S3C2440A的I2C总线接口有四个操作模式:主设备发送模式、主设备接收模式、从设备发送模式及从设备接收模式。这些操作模式间功能关系将在下面描述。 1.起始和结束条件 当I2C总线接口休眠时,其通常是在从设备模式。换言之,接口在检测到SDA线上的起始条件之间一直处于从设备模式。当接口状态变为主设备模式,在SDA线上的数据传输被初始化且SCL信号生成。

50 S3C2440A的I2C接口 起始条件可以通过SDA线传输一个字节串行数据,一个停止条件可以终止一个数据传输。停止条件是当SCL是高电平时,SDA线从低电平到高电平的跳变。起始和停止条件都是由主设备生成。当起始条件生成,I2C总线忙,停止条件将使I2C总线空闲,如图6-3所示。 当一个主设备初始化起始条件,它应该发送一个从地址来停止从设备。一个字节的地址域包含7位地址和一位传输方向指示(说明读写)。如果位8是0,说明是写操作。如果位8是1,说明是数据读请求。 主设备通过发送停止条件来完成一个传输操作。如果主设备想继续到总线的数据传输,则必须生成另一个起始条件和从地址。用这个方法,可以执行不同形式下的读写操作。

51 S3C2440A的I2C接口 SDA SCL 起始 结束 图6-3 起始信号和结束信号

52 6.2.1 S3C2440A的I2C接口 图6-4 I2C总线的数据传输格式 有7位地址的写模式格式 R/W A “0” (写) 数据传输
S 从属地址7位 R/W A 数据(1 A P S 从属地址7位 数据(1字节) P S 从属地址头7位 R/W A 从属地址第二字节 数据 P S 从属地址头7位 R/W A 从属地址第二字节 rs 从属地址头7位 R/W A D P A 数据 说明: S:起始,rs:重新启动,P:停止,A:允许 “0” “1” (读) (写) 有7位地址的写模式格式 有10位地址的写模式格式 有7位地址的读模式格式 有10位地址的读模式格式 数据传输 (数据+允许位) R/W 图6-4 I2C总线的数据传输格式

53 6.2.1 S3C2440A的I2C接口 S 起始状态 控制器的SCL ACK的时钟脉冲 输出时钟周期 1 2 7 8 9 传感器数据输出
接收器数据输出 图6-5 I2C总线上ACK信号

54 S3C2440A的I2C接口 2.读写操作 在发送模式下,如果数据传输后,I2C总线接口会等待直到I2C总线数据移位寄存器(IICDS)收到一个新数据。在新数据写入寄存器之前,SCL线将保持低电平,然后在数据写入后释放。S3C2440A应该保持中断来识别当前数据发送是否完成。在CPU收到中断请求以后,它应该再写一个新数据到IICDS寄存器。 在接收模式下,当数据收到后,I2C总线接口应该等待直到IICDS寄存器被读取。在一个新数据被读出之前,SCL线应该保持低电平,在数据被读出后再释放。S3C2440A应该保持中断来识别当前数据接收是否完成。在CPU收到中断请求以后,它应该从IICDS寄存器读取数据。

55 S3C2440A的I2C接口 3.总线仲裁 当在SDA信号线上数据有冲突的时候,为了避免两个及多个控制器之间争夺总线,则发生总线仲裁。如果一个设置SDA线位高电平的主控制器发现了另一个设置SDA线为低电平的主控制器,那么就产生了冲突。这时第一个控制器将不再继续数据的传输,因为总线的当前条件不与它匹配,换句话说,低电平的优先级要高于高电平。 但是,当2个控制器同时拉低SDA时,每个主控制器应该估计是否判断权是分配给自己。判断的方法是检测其地址位。哪个控制器发送的地址位为低电平哪个就获得控制权,若都是低电平,则查询第2个地址位,依次类推,直到最后一个。

56 S3C2440A的I2C接口 4.配置I2C总线 为了控制串行时钟(SCL)的频率,4 位的预定标器值可以通过IICCON 寄存器来被编程。I2C总线接口地址是存储在I2C总线地址寄存器(IICADD)中。(默认情况下,I2C总线接口地址有一个未知值)。

57 6.2.2 I2C总线接口特殊寄存器 1.多主设备I2C总线控制寄存器
I2C总线控制寄存器(IICCON)是可读/写状态,地址为0x ,复位后的值为0x0X。即高四位为0,低四位为1。 IICCON寄存器的具体格式如表6-19所示。

58 Interrupt pending flag
I2C总线接口特殊寄存器 表6-19 IICCON寄存器的格式 引脚名称 描述 初始值 ACK [7] I2C总线应答使能位。0=不使能;1=使能。 在发送模式下,IICSDA在应答时间内是空闲; 在接收模式下,IICSDA在应答时间内是低电平。 Tx_sele [6] I2C总线传输时钟预定标器源时钟选择位。 当该位为0时,IICCLK = fPCLK /16 ; 当该位为1时,IICCLK = fPCLK/ 512 Tx/ Rx [5] I2C总线接收发送中断使能位。0=不使能;1=使能。 Interrupt pending flag [4] I2C总线接收发送中断挂起标志。该位不能由用户写1。当该位读出1时,IICSCL为L且数据传输停止。为了恢复操作,清0位。 当该位为0时,无中断挂起(读)或清除未决情况(写)。 当该位为1时,中断挂起(读)或不允许(写)。 Transmit clock value [3:0] I2C总线发送时钟预定标器。 I2C总线发送时钟频率由该 4位预定标器的值决 定,根据以下公式:Tx 的时钟 = IICCLK/(IICCON[3:0]+1)

59 6.2.2 I2C总线接口特殊寄存器 2.多主设备I2C总线控制状态寄存器
多主设备 IIC总线控制状态寄存器(IICSTAT)是可读/写状态,地址为0x ,复位后的值为0x0。IICSTAT寄存器的具体格式如表6-20所示。

60 6.2.2 I2C总线接口特殊寄存器 表6-20 IICSTAT寄存器的格式 引脚名称 位 描述 初始值 Mode selection
[7:6] I2C总线主从接收发送模式选择位。 00 =从接收模式;01=从发送模式; 10=主接收模式;11=主发送模式。 Busy signal status / START STOP condition [5] I2C总线忙状态位 当该位为0时,不忙 (读时)或停止信号生发生(写入); 当该位为1时,忙(读时)或起始信号产生(写入)在此信号之后,IICDS中的数据自动被传输。 Serial output [4] I2C总线数据输出使能位。0=不使能;1=使能。 Arbitration status flag [3] I2C总线仲裁过程状态标志位0:(1) 0=总线仲裁成功; 1=当串行输入输出时总线仲裁失败。 Address-as-slave status flag [2] I2C总线address-as-slave状态标志位。 0=当检测到起始或停止时,该位被清除; 1=接收到与IICADD中的地址值匹配的从设备地址。 Address zero status flag [1] I2C总线地址状态标志位。 1=接收到的从设备地址是 b。 Last-received bit status [0] I2C总线最后接收位状态标志位。 0=最后接收到位为0(ACK被接受); 1=最后接收到位为1(ACK不被接受)。

61 6.2.2 I2C总线接口特殊寄存器 3.多主设备I2C总线地址寄存器
多主设备I2C总线地址寄存器(IICADD)是可读/写状态,地址为0x ,复位后的初值不确定。IICADD寄存器的具体格式如表6-21所示。 表6-21 IICDS寄存器的格式 引脚名称 描述 初始值 Slave address [7:0] I2C总线的7 位从设备地址。 XXXXXXXX

62 6.2.2 I2C总线接口特殊寄存器 4.多主设备I2C总线接收发送数据移位寄存器
多主设备I2C总线接收发送数据移位寄存器(IICDS)是可读/写状态,地址为0x C,复位后的初值不确定。IICDS寄存器的具体格式如表6-22示。 表6-22 IICADD寄存器的格式 引脚名称 描述 初始值 Data shift [7:0] I2C总线发送接收操作的 8 位数据移位寄存器。 XXXXXXXX

63 6.2.2 I2C总线接口特殊寄存器 5.多主设备I2C总线线路控制寄存器
多主设备I2C总线线路控制寄存器(IICLC)是可读/写状态,地址为0x ,复位后的值0x00。IICLC寄存器的具体格式如表6-23所示。 表6-23 IICLC寄存器的格式 引脚名称 描述 初始值 Filter Enable [2] I2C总线滤波器使能位。 当SDA接口作为输入操作,该位应该是高电平。过滤器可以避免在连个PCLK期间干扰时出现错误。 0=滤波器不使能;1=滤波器使能。 SDA output delay [1:0] I2C总线SDA线路延时长度选择位。 00=0时钟 ;01=5时钟;10=10时钟;11=15时钟。 00

64 I2C编程举例 I2C总线的编程除了需要对I2C总线的专用特殊寄存器进行初始化编程外,还需要按照I2C总线的时序要求编写传送程序和接收程序。 1.初始化步骤 在任何I2C接收发送操作之前,必须执行初始化程序。初始化编程的主要流程是: (1)配置S3C2440A芯片相关的I/O引脚为I2C总线所需的功能引脚; (2)如果需要,在IICADD寄存器中写入本芯片的从属地址。 (3)设置 IICCON寄存器,使能中断,设定SCL周期。 (4)设置 IICSTAT寄存器来使能串行输出。

65 I2C编程举例 2.传送及接收流程 (1)传送流程 S3C2440A芯片的I2C总线传送有两种模式:主设备传送模式和从设备传送模式。 其程序流程图分别如图6-6、图6-7所示。

66 6.2.3 I2C编程举例 图6-6 主设备传送模式的流程 图6-7 从设备传送模式的流程 配置从设备Tx模式 开始 IIC检测开始信号
向IICDS写入从设备地址 配置控制器Tx模式 向IICSTAT写入0xD0 传输IICDS的数据 ACK周期,中断未决 停? 向IICDS写入新数据 清除未定位,重新开始 IICDS的数据转移到SDA 清除未定位 等待 向IICSTAT写入0xF0 结束 IIC检测开始信号 IICDS接收数据 配置从设备Tx模式 IIC地址匹配中断产生 匹配? 中断未决 IIC比较IICADD和IICDS (接收从设备地址) 图6-6 主设备传送模式的流程 图6-7 从设备传送模式的流程

67 6.2.3 I2C编程举例 (2)接收流程 S3C2440A芯片的I2C总线接收有两种模式:主设备接收模式和从设备接收模式。
其程序流程图如图6-8、图6-9所示。

68 6.2.3 I2C编程举例 图6-8 主设备接收模式的流程 图6-9 从设备接收模式的流程 配置从设备Rx模式 开始 IIC检测开始信号
向IICDS写入从设备地址 配置控制器Rx模式 向IICSTAT写入0x90 传输IICDS的数据 ACK周期,中断未决 停? 向IICDS读出新数据 清除未定位,重新开始 SDA的数据转移到IICDS 清除未定位 等待 向IICSTAT写入0xB0 结束 IIC检测开始信号 IICDS接收数据 配置从设备Rx模式 IIC地址匹配中断产生 匹配? 中断未决 IIC比较IICADD和IICDS (接收从设备地址) 图6-8 主设备接收模式的流程 图6-9 从设备接收模式的流程

69 6.3 I2S总线 当前很多音频系统以CD的形式,数字音频带,数字音频处理器和数字TV音响,在市场上吸引消费者。S3C2440A的Inter-IC Sound (IIS)总线接口作为一个编解码接口连接外部 8/16位立体声音频解码IC用于迷你碟机和可携式应用。IIS总线接口支持IIS总线数据格式和MSB-justified数据格式。该接口对FIFO的访问采用了DMA模式取代了中断。它可以在同一时间接收和发送数据。

70 发送接收模式 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总线接口可以同时接收和发送数据。

71 音频串行接口格式 1.I2S总线格式 I2S总线有四线,即串行数据输入(IISDI),串行数据输出(IISDO),左右通道选择(IISLRCK)和串行位时钟(IISCLK)。总线格式如图6-11所示。 LRCK LEFT RIGHT SCLK MSB SD (1st) 2nd Bit N-1th LSB (last) 图6-11 IIS总线格式(N=8 或16)

72 音频串行接口格式 串行数据以2的补码发送,MSB(Most Significant Bit 最高位)先发。因为发送器和接收器可能有不同的字长,MSB(最高位)先发。发送器不必知道接收器可以处理多少位,接收器也不必知道会收到多少位。 当系统字长大于发生器的字长,为了数据发送而将字截断(最低位被置 0)。如果接收器接收大于其字长的位,在LSB(最低位)后的位被忽略。另外,如果接收器收到的位数小于其字长,缺少的位被置0。因此MSB有一个固定的位置,而LSB的位置取决于字长。只要 IISLRCK 发送改变,发送器在一个时钟周期内发送下一个字的 MSB。 由发送器发送的串行数据可以和时钟信号的下降沿和上升沿同步。但是,串行数据必须在串行时钟信号的上升沿锁存到接收器,即当同步上升沿的数据发送时有一些限制。

73 6.3.2 音频串行接口格式 2.MSB JUSTIFIED格式
音频串行接口格式 2.MSB JUSTIFIED格式 MSB JUSTIFIED总线格式在结构上和I2S总线格式。如图6-12所示。唯一和IIS总线格式的区别,MSB JUSTIFIED 格式实现了只要IISLRCK改变,发送器总是发送下一个字的MSB。 LRCK LEFT RIGHT SCLK MSB SD (1st) 2nd Bit N-1th LSB (last) 图6-12 MSB格式(N=8或16)

74 音频串行接口格式 3.采样频率和主设备时钟 主设备时钟频率(PCLK或MPLLin)可以在如表6-24所示的采样频率中选择。因为主设备时钟由I2S预分频器(预定标器)产生,预分频器(预定标器)的值和主设备时钟类型(256或384fs)应该合适确定。串行位时钟频率类型可以由每个通道的串行位和如表6-25所示的主设备时钟中来选择。

75 6.3.2 音频串行接口格式 表6-24 CODEC 时钟(CODECLK=256或 384fs)
音频串行接口格式 表6-24 CODEC 时钟(CODECLK=256或 384fs) IISLRCK (fs) 8.000 KHz 11.025 16.000 22.050 32.000 44.100 48.000 64.000 88.200 96.000 CODECLK (MHz) 256fs 2.0480 2.8224 4.0960 5.6448 8.1920 384fs 3.0720 4.2336 6.1440 8.4672 表6-25 可用串行位时钟频率(IISCLK=16 或 32或 48fs) 每通道串行位 8-bit 16-bit 串行位时钟频率 (IISCLK) @CODECLK = 256fs 16fs, 32fs 32fs @CODECLK = 384fs 16fs, 32fs, 48fs 32fs, 48fs

76 I2S总线接口特殊寄存器 1.IIS控制寄存器 IIS控制寄存器(IISCON)是可读/写状态,小端模式下地址为0x ;大端模式下地址为0x ,复位后的值为0x100。 IISCON寄存器的具体格式如表6-26所示。

77 6.3.3 I2S总线接口特殊寄存器 表6-26 IISCON寄存器的格式 引脚名称 位 描述 初始值
Left/Right channel index [8] 0=左;1=右。 1 Transmit FIFO ready flag(Read only) [7] 0=空;1=非空。 Receive FIFO ready flag(Read only) [6] 0=满;1=非满。 Transmit DMA service request [5] 0=不使能;1=使能。 Receive DMA service request [4] Transmit channel idle command [3] 在空闲模式下IISLRCK是否激活。 0=非闲; 1=闲。 000 Receive channel idle command [2] IIS prescaler [1] IIS interface [0]

78 I2S总线接口特殊寄存器 2.IIS模式寄存器 IIS模式寄存器(IISMOD)是可读/写状态,小端模式下地址为0x ;大端模式下地址为0x ,复位后的值为0x0。 IISMOD寄存器的具体格式如表6-27所示。

79 6.3.3 I2S总线接口特殊寄存器 表6-27 IISMOD寄存器的格式 引脚名称 位 描述 初始值
Master Clock Select [9] 主设备时钟选择位。0=PCLK ;1=MPLLin。 Master/slavemode select [8] 0= 主设备模式(IISLRCK和IISCLK是输出模式); 1= 从设备模式(IISLRCK和IISCLK是输入模式)。 Transmit/receivemode select [7:6] 00 = 没有传输; 01 = 接收模式; 10 =传输模式; 11 = 传输和接收模式。 00 Active level ofleft/right channel [5] 0 = 左声道低;1=左声道高。 Serial interface format [4] 0 = IIS格式;1= MSB-调整格式。 Serial data bit perchannel [3] 0 = 8-bit;1 = 16-bit。 Master clockfrequency select [2] 0 = 256fs;1 = 384fs (fs:抽样频率) Serial bit clockfrequency select [1:0] 00 = 16fs;01 = 32fs;10 = 48fs;11 = N/A。

80 6.3.3 I2S总线接口特殊寄存器 3.IIS预定标器寄存器
IIS预定标器寄存器(IISPSR)是可读/写状态,小端模式下地址为0x ;大端模式下地址为0x A,复位后的值为0x0。IISPSR寄存器的具体格式如表6-28所示。 表6-28 IISPSR寄存器的格式 引脚名称 描述 初始值 Prescaler control A [9:5] 数据值:0~31。注:预分频系数为N+1。 00000 Prescaler control B [4:0]

81 6.3.3 I2S总线接口特殊寄存器 4.IIS FIFO控制寄存器
IIS FIFO控制寄存器(IISFCON)是可读/写状态,小端模式下地址为0x C;大端模式下地址为0x E,复位后的值为0x0。 IISFCON寄存器的具体格式如表6-29所示。

82 6.3.3 I2S总线接口特殊寄存器 表6-29 IISFCON寄存器的格式 引脚名称 位 描述 初始值
Transmit FIFO access mode select [15] 0 =正常;1 = DMA。 Receive FIFO access mode select [14] 0 =正常; 1 = DMA。 Transmit FIFO [13] 0 =不使能; 1 = 使能0。 eceive FIFO [12] Transmit FIFO data count (Read only) [11:6] 数据数量值=0~32。 000000 Receive FIFO data count (Read only) [5:0]

83 6.3.3 I2S总线接口特殊寄存器 5.IIS FIFO寄存器
IIS总线接口包含两个64位的FIFO用于发送和接收模式。每个FIFO有16宽32长的表,其允许FIFO不管有效数据大小对每个半字单元操作数据。接收和发送FIFO访问通过FIFO入口进行,进入地址是 0x 。该寄存器在小端模式下地址为0x C;大端模式下地址为0x E,复位后的值为0x0。IIS FIFO寄存器的具体格式如表6-30所示。 表6-30 IIS FIFO寄存器的格式 引脚名称 描述 初始值 FENTRY [15:0] 对于IIS的发送/接收数据。

84 6.4 AC97控制器 S3C2440A的AC97控制器单元支持AC97的2.0版本特点。AC97控制器使用一个音频控制器连接(AC-link)来和AC97编解码器通讯。功能模块图如图6-14所示,控制器发送立体声PCM数据给编解码器。编解码器中的外部数模转换器转换音频采样到模拟音频波形。控制器也从编解码器接收立体声PCM 数据说单声道的MIC 数据,然后将数据存储在内存中。切记:AC97控制器和IIS控制器不能同时使用。

85 6.4 AC97控制器 MIC 输出 PCM 输入 AC-link I/F FSM& Control SFR 中断 控制 DMA
Engine APB 图6-14 AC97 功能模块图

86 6.4.1 AC97控制器操作 禁用编码器中断 INTMSK/SUBINTMSK位 设置GPIO和复位 DMA操作或PIO中断操作
2.流程图操作 AC97控制器操作流程如图6-16所示。 禁用编码器中断 INTMSK/SUBINTMSK位 设置GPIO和复位 DMA操作或PIO中断操作 使能编码器中断 系统复位和编码器复位 编码器准备中断? 控制关闭 超时状态? Yes No 图6-16 AC97 控制器操作流程

87 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高电平时间就是相应的标签段所占时间。

88 AC97控制器操作 AC97帧以固定48KHz 的时间间隔出现且同步于12.288MHz比特率时钟BITCLK。控制器和编解码器使用SYNC和BITCLK来决定何时发送数据,何时采样和接收数据。发送器在每个BITCLK的上升沿发送串行数据流,接收器在每个BITCLK的下降沿采样串行数据流。发送器必须对串行数据流中的有效槽做标记。有效槽被标记在时间槽0中。AC-link的数据是从MSB到LSB。标签段的第一位是位15,每个数据段的第一位是位19。每个槽的最后一位是位0。

89 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为低电平。

90 6.4.1 AC97控制器操作 (2)唤醒AC-link- 由AC97控制器触发的唤醒
AC-link协议提供了一个AC97冷重启和一个AC97热重启。当前掉电状态最后指出了会使用哪个AC97重启。在所有的掉电模式期间所有的寄存器都应该停留在同一状态,除非执行一个AC97冷重启。在AC97冷重启中,AC97寄存器被初始化到默认值。在掉电后,在其通过重新使SYNC有效而重新激活之前,掉电出现的帧之后,AC-link必须等待最少4个音频帧时间。当AC-link上电,其通过编解码器准备位(输入槽0,位15)指示就绪。

91 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再次为低电平。这样避免了误认为一个新音频帧。

92 AC97控制器特殊寄存器 1.AC97全局控制寄存器 AC97全局控制寄存器(AC_GLBCTRL)是可读/写状态,地址为0x5B000000,复位后的值为0x 。AC_GLBCTRL寄存器的具体格式如表6-31所示。

93 6.4.2 AC97控制器特殊寄存器 表6-31 AC_GLBCTRL寄存器的格式 引脚名称 位 描述 初始值 Reserved
[31:23] 保留。 0x00 Codec Ready Interrupt Enable [22] 0=不使能;1=使能。 PCM Out Channel Underrun Interrupt Enable [21] 0=不使能;1=使能(FIFO空)。 PCM In Channel Overrun Interrupt Enable [20] 0=不使能;1=使能(FIFO满)。 MIC In Channel Overrun Interrupt Enable [19] PCM Out Channel Threshold Interrupt Enable [18] 0=不使能;1=使能(FIFO半空)。 PCM In Channel Threshold Interrupt Enable [17] 0=不使能;1=使能(FIFO半满)。 MIC In Channel Threshold Interrupt Enable [16] [15:14] 00 PCM Out Channel Transfer Mode [13:12] 00=关闭;01=PIO;10=DMA;11=保留。

94 6.4.2 AC97控制器特殊寄存器 引脚名称 位 描述 初始值 PCM In Channel Transfer Mode [11:10]
00=关闭;01=PIO;10=DMA;11=保留。 00 MIC In Channel Transfer Mode [9:8] Reserved [7:4] 保留。 0000 Transfer Data Enable Using AC-Link [3] 0=不使能;1=使能。 AC-Link On [2] 0=关闭;1=传输SYNC到CODEC。 Warm Reset [1] 0=通常;1=从掉电唤醒CODEC。 Cold Reset [0] 0=通常;1=重启CODEC和控制逻辑。

95 AC97控制器特殊寄存器 2.AC97全局状态寄存器 AC97全局状态寄存器(AC_GLBSTAT)是可读/写状态,地址为0x5B000004,复位后的值为0x 。AC_GLBSTAT寄存器的具体格式如表6-32所示。

96 6.4.2 AC97控制器特殊寄存器 表6-32 AC_GLBSTAT寄存器的格式 引脚名称 位 描述 初始值 Reserved
[31:23] 保留。 0x00 Codec Ready Interrupt [22] 0=不请求;1=请求。 PCM Out Channel Underrun Interrupt [21] PCM In Channel Overrun Interrupt [20] MIC In Channel Overrun Interrupt [19] PCM Out Channel Threshold Interrupt [18] PCM In Channel Threshold Interrupt [17] MIC In Channel Threshold Interrupt [16] [15:3] 0x000 Controller Main State [2:0] 000=空闲;001=初始化; 010=准备;011=激活; 100=低功耗;101=警告。 000

97 6.4.2 AC97控制器特殊寄存器 3.AC97 CODEC命令寄存器
AC97 CODEC命令寄存器(AC_CODEC_CMD)是可读/写状态,地址为0x5B000008,复位后的值为0x 。AC_CODEC_CMD寄存器的具体格式如表6-33所示。 表6-33 AC_CODEC_CMD寄存器的格式 引脚名称 描述 初始值 Reserved [31:24] 保留 0x00 Read Enable [23] 0=命令写(注); 1=状态读。 Address [22:16] CODEC命令地址。 Data [15:0] CODEC命令数据。 0x0000

98 6.4.2 AC97控制器特殊寄存器 如果想通过AC_CODEC_STAT寄存器从AC97CODEC读数据,应该依照以下步骤。
①写命令地址和和数据到AC_CODEC_CMD 寄存器,其23 位置1。 ②延时。 ③从AC_CODEC_STAT 寄存器读命令地址和数据。

99 表6-34 AC_CODEC_STAT寄存器的格式
AC97 CODEC 状态寄存器(AC_CODEC_STAT)是可读/写状态,地址为0x5B00000C,复位后的值为0x 。AC_CODEC_STAT寄存器的具体格式如表6-34所示。 表6-34 AC_CODEC_STAT寄存器的格式 引脚名称 描述 初始值 Reserved [31:23] 保留。 0x00 Address [22:16] CODEC状态地址。 Data [15:0] CODEC状态数据。 0x0000

100 6.4.2 AC97控制器特殊寄存器 5.AC97 PCM 输入输出通道FIFO 地址寄存器
AC97 PCM 输入输出通道FIFO 地址寄存器(AC_PCMADDR)是可读/写状态,地址为0x5B000014,复位后的值为0x 。AC_PCMADDR寄存器的具体格式如表6-35所示。

101 6.4.2 AC97控制器特殊寄存器 表6-35 AC_PCMADDR寄存器的格式 引脚名称 位 描述 初始值 Reserved
[31:28] 保留。 0000 Out Read Address [27:24] PCM输出通道FIFO读地址。 [23:20] In Read Address [19:16] PCM输入通道FIFO读地址。 [15:12] Out Write Address [11:8] MIC输出通道FIFO读地址。 [7:4] In Write Address [3:0] MIC输入通道FIFO写地址。

102 6.4.2 AC97控制器特殊寄存器 6.AC97 MIC 输入通道FIFO 地址寄存器
AC97 MIC 输入通道FIFO 地址寄存器(AC_MICADDR)是可读/写状态,地址为0x5B000018,复位后的值为0x 。AC_MICADDR寄存器的具体格式如表6-36所示。 表6-36 AC_MICADDR寄存器的格式 引脚名称 描述 初始值 Left Data [31:16] 左声道PCM输出输入FIFO数据。 读=左声道中的PCM;写=左声道中的PCM。 0x0000 Right Data [15:0] 右声道PCM输出输入FIFO数据。 读=右声道中的PCM;写=右声道中的PCM。

103 6.4.2 AC97控制器特殊寄存器 7.AC97 MIC 输入通道FIFO 数据寄存器
AC97 MIC 输入通道FIFO 数据寄存器(AC_MICDATA)是可读/写状态,地址为0x5B00001C,复位后的值为0x 。AC_MICDATA寄存器的具体格式如表6-37所示。 表6-37 AC_MICDATA寄存器的格式 引脚名称 描述 初始值 Reserved [31:16] 保留。 0x0000 Mono Data [15:0] MIC在单声道FIFO的数据。

104 6.5 S3C2440A的摄像头 S3C2440A的摄像头接口(camera interface)简称CAMIF,共有图像多路复用器、捕捉单元、预览计数器、多媒体数字信号编解码器、DMA预览、DMA编解码器及特殊功能寄存器7个部件组成,S3C2440A的摄像头接口框图如图6-18所示。 图像多路复用器 图像缓存 摄像头接口特殊功能寄存器 ITU-R BT 601/656 YCbCr 4:2:2 YCbCr 4:2:X 总线 图6-18 S3C2440A的摄像头接口框图

105 S3C2440A的摄像头接口 S3C2440A的摄像头接口(CAMIF)支持国际电联(ITU-R)的BT.601/656 标准的8位YCbCr高画质色差视频。 最大输入分辨率4096x4096像素(2048x2048像素缩放)和两个计时器。 预览计数器(preview scaler)被应用于小尺寸的图像处理,如画中画(PIP)。

106 S3C2440A的摄像头接口 多媒体数字信号编解码器(codec scaler) 被应用于YCbCr 4:2:0 或4:2:2标准的平面图像处理。 两个主要的DMA通道被应用于镜像或旋转功能的动态环境。例如:移动电话的文件夹模式和测试如CAMHREF, CAMVSYNC等同步信号时,经常应用到这些功能。 同时,S3C2440A的摄像头接口(CAMIF)也可以被设置成视频或图像的输出功能。S3C2440A的摄像头接口的信号说明如表6-38所示。

107 6.5.1 S3C2440A的摄像头接口 表6-38 信号说明表 名称 I/O特性 信号 描述 CAMPCLK I –
表6-38 信号说明表 名称 I/O特性 信号 描述 CAMPCLK I 像素时钟,由摄像头控制器提供。 CAMVSYNC H/L 帧同步信号,由摄像头控制器提供。 CAMHREF 行同步信号,由摄像头控制器提供。 CAMDATA[7:0] 像素数据信号,由摄像头控制器提供。 CAMCLKOUT O 主时钟输出给摄像头控制器。 CAMRESET 软件复位或掉电信号到摄像头控制器。

108 6.5.1 S3C2440A的摄像头接口 ITU-R BT 656格式下有两种时序,一个是开始每个数视频数据块,另一个是结束每个数据块。
视频实践参考代码如表6-39所示

109 6.5.1 S3C2440A的摄像头接口 表6-39 ITU-656格式下的视频实践参考代码表 数据位数 第一个字 第二个字 第三个字
第四个字 9 (MSB) 1 8 F 7 V 6 H 5 P3 4 P2 3 P1 2 P0 1(注)

110 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都由施密特触发器触发,以降低噪声干扰。

111 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类编解码图像数据到内存。

112 S3C2440A的摄像头接口 1.摄像头接口操作方法 这两个主通道支持高档的数码相机(DSC)、MPEG-4视频协议、视频采集等等。 例如,P通道图像可以被应用到预览画面。C通道的图像被应用到数码相机的JPEG图片,可以利用寄存器的设定不使能P通道或C通道。

113 S3C2440A的摄像头接口 2.时钟域 摄像头接口有两个时钟域,一个是系统总线时钟HCLK,另一个是像素时钟CAMPCLK。系统时钟必须比像素时钟快。CAMCLKOUT信号必须被类似USB锁相时钟等固定频率下分离输出。 如果使用了外部晶振,CAMCLKOUT 信号将会产生漂移。内部的计数器时钟是系统时钟,不需要两个时钟域来保持同步。CAMPCLK信号将会被连接到施密特触发器保证触发电平的电位。 3.帧存储器的层次 每个通道的帧存储器由4个乒乓存储器构成。C通道乒乓存储器是一个三元存储器,由亮度Y,色度Cb,和色差Cr构成。如果在一个行周期内结束DMA操作,AHB总线将会阻塞导致运行错误。

114 6.5.1 S3C2440A的摄像头接口 4.内存存储方式 C通道的数据以小端方式存入帧内存。 像素数据从LSB到MSB存储。
AHB总线为32位总线,所以摄像头接口将Y-Cb-Cr数据格式化为小端方式。P通道的一个像素有16位和24位两种不同的存储格式。

115 S3C2440A的摄像头接口 5.时序寄存器设置 视频采集寄存器可以在帧周期的任何时候设置。但是一般推荐当CAMVSYNC 信号为低(L)时开始第一次设置(CAMVSYNC请看下一节的详细介绍)。除了此寄存器的设置,所有命令都在CAMVSYNC的下降沿有效。尤其是目标尺寸被改变失去相关信息时,捕获操作被不使能状态下,所有的命令都可以在一个中断服务程序(ISR)下编辑。 注意:当P通道操作而C通道没有被操作时,C通道发生先入先出(FIFO)溢出, 此时操作C通道,必须停止P通道工作并利用软件(置SwRst位)重新启动摄像头接口(CAMIF)。重新清除C通道并设定各个特殊功能寄存器。

116 6.5.1 S3C2440A的摄像头接口 图6-19 存储器存储类型 Y4 Y3 Y2 Y1 Y8 Y7 Y6 Y5 小端方式
RGB2/1 RGB4/3 RGB6/5 RGB8/7 RGB10/9 RGB12/11 RGB14/13 RGB16/15 RGB帧内存 (16-bit) Cr Cr Cr Cr Cr Cr Cr Cr5 Cr RGB 帧内存 RGB1 RGB2 RGB3 RGB4 RGB5 RGB6 RGB7 RGB8 Y Y Y Y Y Y Y Y5 小端方式 Cb4 Cb Cb Cb Cb Cb Cb Cb5 图6-19 存储器存储类型

117 S3C2440A的摄像头接口 6.最后中断请求时序 除了最后中断(LastIRQ)请求所有中断请求(IRQ)都在图像捕捉前。最后中断请求(Last IRQ)在捕捉结束后产生中端请求时序。时序如图6-20所示。LastIRQEn可以自动清除和在中断服务子程序中设置。所以,足够的最后中断请求,可以跟进下一个序列在LastIRQEn和ImgCptEn /ImgCptEn_CoSc/ImgCptEnPrSC之间。 建议,ImgCptEn /ImgCptEn_CoSc /ImgCptEnPrSC 在中断服务子程序设定特殊功能寄存器后的同一时间设定。

118 S3C2440A的摄像头接口 图6-20 最后中断请求时序

119 摄像头接口特殊寄存器 1.源格式寄存器 源格式寄存器(CISRCFMT)是可读/写状态,地址为0x4F000000,复位后的值为0x 。CISRCFMT寄存器的具体格式如表6-40所示。

120 0 = +0 (通常用法) – YcbCr;1 = +128 – YUV。
摄像头接口特殊寄存器 表6-40 CISRCFMT寄存器的格式 引脚名称 描述 初始状态 ITU601_656n [31] 0 = ITU-R BT.656 YCbCr 8位模式使能; 1 = ITU-R BT.601 YCbCr 8位模式使能。 UVOffset [30] Cb,Cr 值偏移控制位。 0 = +0 (通常用法) – YcbCr;1 = +128 – YUV。 Reserved [29] 保留位并且此位必须为0。 SourceHsize [28:16] 源水平像素数(8的倍数)。 Order422 [15:14] 输入8位模式YcbCr 命令发布。 00 = YCbYCr;01 = YCrYCb; 10 = CbYCrY;11 = CrYCbY。 SourceVsize [12:0] 源垂直像素数。

121 摄像头接口特殊寄存器 2. 窗口选择寄存器 窗口选择寄存器(CIWDOFST)是可读/写状态,地址为0x4F000004,复位后的值为0x 。CIWDOFST寄存器的具体格式如表6-41所示。

122 6.5.2 摄像头接口特殊寄存器 表6-41 CIWDOFST寄存器的格式 引脚名称 位 描述 初始状态 WinOfsEn [31]
摄像头接口特殊寄存器 表6-41 CIWDOFST寄存器的格式 引脚名称 描述 初始状态 WinOfsEn [31] 0 = 无偏移;1 = 窗口偏移使能 ClrOvCoFiY [30] 0 = 常态;1 = 清CODEC FIFO Y溢出标志位。 WinHorOfst [26:16] 窗口水平偏移。 ClrOvCoFiCb [15] 0 = 常态;1 = 清CODEC FIFO Cb溢出标志位。 ClrOvCoFiCr [14] 0 = 常态;1 =清CODEC FIFO Cr溢出标志位。 ClrOvPrFiCb [13] 0 =常态;1 =清PREVIEW FIFO Cb溢出标志位。 ClrOvPrFiCr [12] 0 =常态;1 =清PREVIEW FIFO Cr溢出标志位。 WinVerOfst [10:0] 窗口垂直偏移。

123 摄像头接口特殊寄存器 3.全局控制寄存器 全局控制寄存器(CIGCTRL)是可读/写状态,地址为0x4F000008,复位后的值为0x 。CIGCTRL寄存器的具体格式如表6-42所示。

124 6.5.2 摄像头接口特殊寄存器 表6-42 CIGCTRL寄存器的格式 引脚名称 位 描述 初始值 SwRst [31]
摄像头接口特殊寄存器 表6-42 CIGCTRL寄存器的格式 引脚名称 描述 初始值 SwRst [31] 摄像头接口软件复位。 CamRst [30] 外部摄像头控制其复位或掉电。 Reserved [29] 保留,必须为1。 1 TestPattern [28:27] 只有在ITU-T 6018位模式下设置,不允许在ITU-T656模式下设置。 00 = 外部摄像头控制其输入(标准);01 = 色条测试图; 10 = 水平增量测试图;11 = 垂直增量测试图。 InvPolCAMPCLK [26] 0 = 标准;1 = CAMPCLK的极性反向。 InvPolCAMVSYNC [25] 0 = 标准;1 = CAMVSYNC的极性反向。 InvPolCAMHREF [24] 0 = 标准;1 = CAMHREF的极性反向。

125 摄像头接口特殊寄存器 4.Y1起始地址寄存器 Y1起始地址寄存器(CICOYSA1)是可读/写状态,地址为0x4F000018,复位后的值为0x 。 CICOYSA1寄存器的具体格式如表6-43所示。 表6-43 CICOYSA1寄存器的格式 引脚名称 描述 初始值 CICOYSA1 [31:0] C通道DMA的Y位第一帧起始地址。

126 摄像头接口特殊寄存器 5.Y2起始地址寄存器 Y2起始地址寄存器(CICOYSA2)是可读/写状态,地址为0x4F00001C,复位后的值为0x 。CICOYSA2寄存器的具体格式如表6-44所示。 表6-44 CICOYSA2寄存器的格式 引脚名称 描述 初始值 CICOYSA2 [31:0] C通道DMA的Y位第二帧起始地址。

127 摄像头接口特殊寄存器 6.Y3起始地址寄存器 Y3起始地址寄存器(CICOYSA3)是可读/写状态,地址为0x4F000020,复位后的值为0x 。CICOYSA3寄存器的具体格式如表6-45所示。 表6-45 CICOYSA3寄存器的格式 引脚名称 描述 初始值 CICOYSA3 [31:0] C通道DMA的Y位第三帧起始地址。

128 摄像头接口特殊寄存器 7.Y4起始地址寄存器 Y4起始地址寄存器(CICOYSA4)是可读/写状态,地址为0x4F000024,复位后的值为0x 。CICOYSA4寄存器的具体格式如表6-46所示。 表6-46 CICOYSA4寄存器的格式 引脚名称 描述 初始值 CICOYSA4 [31:0] C通道DMA的Y位第四帧起始地址。

129 摄像头接口特殊寄存器 8.CB1地址起始寄存器 CB1地址起始寄存器(CICOCBSA1)是可读/写状态,地址为0x4F000028,复位后的值为0x 。CICOCBSA1寄存器的具体格式如表6-47所示。 表6-47 CICOCBSA1寄存器的格式 引脚名称 描述 初始值 CICOCBSA1 [31:0] C通道DMA的Cb位第一帧起始地址。

130 摄像头接口特殊寄存器 9.CB2地址起始寄存器 CB2地址起始寄存器(CICOCBSA2)是可读/写状态,地址为0x4F00002C,复位后的值为0x 。CICOCBSA2寄存器的具体格式如表6-48所示。 表6-48 CICOCBSA2寄存器的格式 引脚名称 描述 初始值 CICOCBSA2 [31:0] C通道DMA的Cb位第二帧起始地址。

131 摄像头接口特殊寄存器 10.CB3地址起始寄存器 CB3地址起始寄存器(CICOCBSA3)是可读/写状态,地址为0x4F000030,复位后的值为0x 。CICOCBSA3寄存器的具体格式如表6-49所示。 表6-49 CICOCBSA2寄存器的格式 引脚名称 描述 初始值 CICOCBSA3 [31:0] C通道DMA的Cb位第三帧起始地址。

132 摄像头接口特殊寄存器 11.CB4地址起始寄存器 CB4地址起始寄存器(CICOCBSA4)是可读/写状态,地址为0x4F000034,复位后的值为0x 。CICOCBSA4寄存器的具体格式如表6-50所示。 表6-50 CICOCBSA4寄存器的格式 引脚名称 描述 初始值 CICOCBSA4 [31:0] C通道DMA的Cb位第四帧起始地址。

133 摄像头接口特殊寄存器 12.CR1地址起始寄存器 CR1地址起始寄存器(CICOCRSA1)是可读/写状态,地址为0x4F000038,复位后的值为0x 。CICOCRSA1寄存器的具体格式如表6-51所示。 表6-51 CICOCRSA1寄存器的格式 引脚名称 描述 初始值 CICOCRSA1 [31:0] C通道DMA的Cr位第一帧起始地址。

134 摄像头接口特殊寄存器 13.CR2地址起始寄存器 CR2地址起始寄存器(CICOCRSA2)是可读/写状态,地址为0x4F000038,复位后的值为0x 。CICOCRSA2寄存器的具体格式如表6-52所示。 表6-52 CICOCRSA2寄存器的格式 引脚名称 描述 初始值 CICOCRSA2 [31:0] C通道DMA的Cr位第二帧起始地址。

135 摄像头接口特殊寄存器 14.CR3地址起始寄存器 CR3地址起始寄存器(CICOCRSA3)是可读/写状态,地址为0x4F000040,复位后的值为0x 。CICOCRSA3寄存器的具体格式如表6-53所示。 表6-53 CICOCRSA3寄存器的格式 引脚名称 描述 初始值 CICOCRSA3 [31:0] C通道DMA的Cr位第三帧起始地址。

136 摄像头接口特殊寄存器 15.CR4地址起始寄存器 CR4地址起始寄存器(CICOCRSA4)是可读/写状态,地址为0x4F000044,复位后的值为0x 。CICOCRSA4寄存器的具体格式如表6-54 所示。 表6-54 CICOCRSA4寄存器的格式 引脚名称 描述 初始值 CICOCRSA4 [31:0] C通道DMA的Cr位第四帧起始地址。

137 6.5.2 摄像头接口特殊寄存器 16.C通道解码目标格式寄存器
摄像头接口特殊寄存器 16.C通道解码目标格式寄存器 C通道解码目标格式寄存器(CICOTRGFMT)是可读/写状态,地址为0x4F000048,复位后的值为0x 。 CICOTRGFMT寄存器的具体格式如表6-55所示。

138 6.5.2 摄像头接口特殊寄存器 表6-55 CICOTRGFMT寄存器的格式 引脚名称 位 描述 初始值 In422_Co [31]
摄像头接口特殊寄存器 表6-55 CICOTRGFMT寄存器的格式 引脚名称 描述 初始值 In422_Co [31] 0 = YCbCr 4:2:0 编解码计数器输入图像格式,在编解码计数器之前执行水平抽取信号; 1 = YCbCr 4:2:2 编解码计数器输入图形格式。 Out422_Co [30] 0 = YCbCr 4:2:0编解码计数器输入图形格式。此模式主要应用于MPEG-4编解码和H/W JPEG DCT; 1 = YCbCr 4:2:2编解码计数器输出图形格式.此模式主要应用于S/W JPEG。 TargetHsize_Co [28:16] C通道DMA的目标图形的水平像素数(16的倍数)。 FlipMd_Co [15:14] C通道DMA图像镜像和旋转。 00 = 正常;01 = X轴镜像; 10 = Y轴镜像;11 = 180旋转。 TargetVsize_Co [12:0] C通道DMA的目标图形的垂直像素数。

139 6.5.2 摄像头接口特殊寄存器 17.C通道DMA控制寄存器
摄像头接口特殊寄存器 17.C通道DMA控制寄存器 C通道DMA控制寄存器(CICOCTRL)是可读/写状态,地址为0x4F00004C,复位后的值为0x 。CICOCTRL寄存器的具体格式如表6-56所示。 表6-56 CICOCTRL寄存器的格式 引脚名称 描述 初始值 Yburst1_Co [23:19] Y 帧编解码主脉宽。 Yburst2_Co [18:14] Y 帧编解码保持脉宽。 Cburst1_Co [13:9] Cb/Cr帧编解码主脉宽。 Cburst2_Co [8:4] Cb/Cr帧编解码保持脉宽。 LastIRQEn_Co [2] 0=通常; 1=帧捕获结束后使能最后中断请求(此位被自动清除)。 注: 所有脉宽必须为2, 4, 8, 16其中之一.

140 6.5.2 摄像头接口特殊寄存器 例6-8,目标图像大小: QCIF (Y水平宽度=176像素. 1像素=1字节. 1字= 4个像素)
摄像头接口特殊寄存器 例6-8,目标图像大小: QCIF (Y水平宽度=176像素. 1像素=1字节. 1字= 4个像素) 176 / 4 = 44字; 44 % 8 = 4,则主脉冲= 8,保持脉冲= 4。

141 表6-57 CICOSCPRERATIO寄存器的格式
摄像头接口特殊寄存器 18.编解码前计数器控制寄存器1 编解码前计数器控制寄存器1(CICOSCPRERATIO)是可读/写状态,地址为0x4F000050,复位后的值为0x 。 CICOSCPRERATIO寄存器的具体格式如表6-57所示。 表6-57 CICOSCPRERATIO寄存器的格式 引脚名称 描述 初始状态 SHfactor_Co Shift [31:28] 编解码前寄存器系数。 PreHorRatio_Co [22:16] 编解码前寄存器水平系数。 PreVerRatio_Co [6:0] 编解码前寄存器垂直系数。

142 表6-58 CICOSCPREDST寄存器的格式
摄像头接口特殊寄存器 19.编解码前计数器控制寄存器2 编解码前计数器控制寄存器2(CICOSCPREDST)是可读/写状态,地址为0x4F000050,复位后的值为0x 。CICOSCPREDST寄存器的具体格式如表6-58所示。 表6-58 CICOSCPREDST寄存器的格式 引脚名称 描述 初始状态 PreDstWidth_Co [27:16] 编解码前寄存器目标宽度 。 PreDstHeight_Co [11:0] 编解码前寄存器目标高度。

143 6.5.2 摄像头接口特殊寄存器 20.编解码主计数器控制寄存器
摄像头接口特殊寄存器 20.编解码主计数器控制寄存器 编解码主计数器控制寄存器(CICOSCCTRL)是可读/写状态,地址为0x4F000058,复位后的值为0x 。 CICOSCCTRL寄存器的具体格式如表6-59所示。

144 6.5.2 摄像头接口特殊寄存器 引脚名称 位 描述 初始状态 ScalerBypass_ Co [31]
摄像头接口特殊寄存器 表6-59 CICOSCCTRL寄存器的格式 引脚名称 描述 初始状态 ScalerBypass_ Co [31] 编解码计数器分路2048 x 2048 size (ImgCptEn_CoSC和ImgCptEn_PrSC 为0, ImgCptEn 为1.此处不允许捕捉预览影像。此 模式为捕捉JPEG输入图像DSC用途) 输入像 素缓存在输入FIFOs,此模式系统总线非忙 态。 ScaleUpDown_Co [30:29] 按比例放大/缩小标志编解码计数器(在 1:1比 例下, 所有位为“1”)。 00 = 比例减小 11 = 比例增大 00 MainHorRatio_Co [24:16] 水平比例缩放编解码主计数器。 CoScalerStart [15] 编解码计数器启动。 MainVerRatio_Co [8:0] 垂直比例缩放编解码主计数器。

145 6.5.2 摄像头接口特殊寄存器 21.C通道DMA目标区域寄存器
摄像头接口特殊寄存器 21.C通道DMA目标区域寄存器 C通道DMA目标区域寄存器(CICOTAREA)是可读/写状态,地址为0x4F00005C,复位后的值为0x 。CICOTAREA寄存器的具体格式如表6-60所示。 表6-60 CICOTAREA寄存器的格式 引脚名称 描述 初始状态 CICOTAREA [25:0] 目标区域C通道DMA = 目标水平尺寸x 目标垂直尺寸。

146 摄像头接口特殊寄存器 22.编解码状态寄存器 编解码状态寄存器(CICOSTATUS)是只读状态,地址为0x4F00005C,复位后的值为0x 。CICOSTATUS寄存器的具体格式如表6-61所示。

147 6.5.2 摄像头接口特殊寄存器 表6-61 CICOSTATUS寄存器的格式 引脚名称 位 描述 初始状态 OvFiY_Co [31]
摄像头接口特殊寄存器 表6-61 CICOSTATUS寄存器的格式 引脚名称 描述 初始状态 OvFiY_Co [31] Y编解码源FIFO溢出标志。 OvFiCb_Co [30] Cb编解码源FIFO溢出标志。 OvFiCr_Co [29] Cr编解码源FIFO溢出标志。 VSYNC [28] 摄像头VSYNC位(此位可以在CPU第一次设置SFR时访问,也可以在ITU-R BT 656模式下访问)。 FrameCnt_Co [27:26] C通道DMA的帧数(次计数器值存储下一帧数)。 WinOfstEn_Co [25] 窗口补偿使能状态 FlipMd_Co [24:23] C通道DMA替换模式。 ImgCptEn_CamIf [22] 摄像头接口影像捕获使能。 ImgCptEn_CoSC [21] C通道影像捕捉使能。

148 6.5.2 摄像头接口特殊寄存器 23.RGB1起始地址寄存器
摄像头接口特殊寄存器 23.RGB1起始地址寄存器 RGB1起始地址寄存器(CIPRCLRSA1)是可读/写状态,地址为0x4F00006C,复位后的值为0x 。CIPRCLRSA1寄存器的具体格式如表6-62所示。 表6-62 CIPRCLRSA1寄存器的格式 引脚名称 描述 初始状态 CIPRCLRSA1 [31:0] P通道DMA的RGB第一帧起始地址。

149 6.5.2 摄像头接口特殊寄存器 24.RGB2起始地址寄存器
摄像头接口特殊寄存器 24.RGB2起始地址寄存器 RGB2起始地址寄存器(CIPRCLRSA2)是可读/写状态,地址为0x4F000070,复位后的值为0x 。 CIPRCLRSA2寄存器的具体格式如表6-63所示。 表6-63 CIPRCLRSA2寄存器的格式 引脚名称 描述 初始状态 CIPRCLRSA2 [31:0] P通道DMA的RGB第二帧起始地址。

150 6.5.2 摄像头接口特殊寄存器 25.RGB3起始地址寄存器
摄像头接口特殊寄存器 25.RGB3起始地址寄存器 RGB3起始地址寄存器(CIPRCLRSA3)是可读/写状态,地址为0x4F000074,复位后的值为0x 。CIPRCLRSA3寄存器的具体格式如表6-64所示。 表6-64 CIPRCLRSA3寄存器的格式 引脚名称 描述 初始状态 CIPRCLRSA3 [31:0] P通道DMA的RGB第三帧起始地址。

151 6.5.2 摄像头接口特殊寄存器 26.RGB4起始地址寄存器
摄像头接口特殊寄存器 26.RGB4起始地址寄存器 RGB4起始地址寄存器(CIPRCLRSA4)是可读/写状态,地址为0x4F000078,复位后的值为0x 。CIPRCLRSA4寄存器的具体格式如表6-65所示。 表6-65 CIPRCLRSA4寄存器的格式 引脚名称 描述 初始状态 CIPRCLRSA3 [31:0] P通道DMA的RGB第四帧起始地址。

152 摄像头接口特殊寄存器 27.目标预览格式寄存器 目标预览格式寄存器(CIPRTRGFMT)是可读/写状态,地址为0x4F00007C,复位后的值为0x 。CIPRTRGFMT寄存器的具体格式如表6-66所示。 表6-66 CIPRTRGFMT寄存器的格式 引脚名称 描述 初始状态 TargetHsize_Pr [28:16] P通道DMA目标影像水平像素数(偶数)。 FlipMd_Pr [15:14] P通道DMA目标影像镜像和旋转。 00=正常;01=X-轴镜像;10= Y-轴镜像;11=180旋转。 TargetVsize_Pr [12:0] P通道DMA目标影像垂直像素数。

153 6.5.2 摄像头接口特殊寄存器 28.P通道DMA控制寄存器
摄像头接口特殊寄存器 28.P通道DMA控制寄存器 P通道DMA控制寄存器(CIPRCTRL)是可读/写状态,地址为0x4F000080,复位后的值为0x 。 CIPRCTRL寄存器的具体格式如表6-67所示。 表6-67 CIPRCTRL寄存器的格式 引脚名称 描述 初始状态 RGBburst1_Pr [23:19] 预览RGB帧主脉宽 RGBburst2_Pr [18:14] 预览RGB帧保留脉宽。 LastIRQEn_Pr [2] 0 = 通常; 1 = 帧捕捉最后中断使能。(此位自动清除)

154 6.5.2 摄像头接口特殊寄存器 注: 所有脉宽必须为2, 4, 8, 16其中之一。
摄像头接口特殊寄存器 注: 所有脉宽必须为2, 4, 8, 16其中之一。 例6-10,目标图像大小: RGB 32位格式QCIF (水平宽度 = 176像素. 1像素= 1字) 176像素= 176字。 176 % 16 = 0,则主脉冲= 16,,保持脉冲= 16。

155 表6-68 CIPRSCPRERATIO寄存器的格式
摄像头接口特殊寄存器 29.预览前计数器控制寄存器1 预览前计数器控制寄存器1(CIPRSCPRERATIO)是可读/写状态,地址为0x4F000084,复位后的值为0x 。CIPRSCPRERATIO寄存器的具体格式如表6-68所示。 表6-68 CIPRSCPRERATIO寄存器的格式 引脚名称 描述 初始状态 SHfactor_Pr [31:28] 预览前计数器便宜因子。 PreHorRatio_Pr [22:16] 预览前计数器水平比例。 PreVerRatio_Pr [6:0] 预览前计数器垂直水平比例。

156 表6-69 CIPRSCPREDST寄存器的格式
摄像头接口特殊寄存器 30.预览前计数器控制寄存器2 预览前计数器控制寄存器2(CIPRSCPREDST)是可读/写状态,地址为0x4F000088,复位后的值为0x 。CIPRSCPREDST寄存器的具体格式如表6-69所示。 表6-69 CIPRSCPREDST寄存器的格式 引脚名称 描述 初始状态 PreDstWidth_Pr [27:16] 预览前计数器目标宽度。 PreDstHeight_Pr [11:0] 预览前计数器目标高度。

157 6.5.2 摄像头接口特殊寄存器 31.预览主计数器控制寄存器
摄像头接口特殊寄存器 31.预览主计数器控制寄存器 预览主计数器控制寄存器(CIPRSCCTRL)是可读/写状态,地址为0x4F00008C,复位后的值为0x 。 CIPRSCCTRL寄存器的具体格式如表6-70所示。

158 6.5.2 摄像头接口特殊寄存器 引脚名称 位 描述 初始状态 Sample_Pr [31] 格式转换的取样方法(此位推荐置1)。
摄像头接口特殊寄存器 表6-70 CIPRSCCTRL寄存器的格式 引脚名称 描述 初始状态 Sample_Pr [31] 格式转换的取样方法(此位推荐置1)。 RGBformat_Pr [30] 0 = 16位RGB 1 = 24位RGB。 ScaleUpDown_Pr [29:28] 预览计数器缩放标志。 (在1:1比例下, 此位必须为1) 00 = 缩小;11 = 放大。 MainHorRatio_Pr [24:16] 预览主计数器的水平缩放比例。 PrScalerStart [15] 预览计数器开始。 MainVerRatio_Pr [8:0] 预览主计数器的垂直缩放比例。

159 6.5.2 摄像头接口特殊寄存器 32.预览(P通道)DMA 目标面积寄存器
摄像头接口特殊寄存器 32.预览(P通道)DMA 目标面积寄存器 预览(P通道)DMA 目标面积寄存器(CIPRTAREA)是可读/写状态,地址为0x4F000090,复位后的值为0x 。CIPRTAREA寄存器的具体格式如表6-71所示。 表6-71 CIPRTAREA寄存器的格式 引脚名称 描述 初始状态 CIPRTAREA [25:0] P通道DMA目标面积 = 目标H水平尺寸×目标V垂直尺寸 。

160 摄像头接口特殊寄存器 33.预览状态寄存器 预览状态寄存器(CIPRSTATUS)是只读状态,地址为0x4F000098,复位后的值为0x 。CIPRSTATUS寄存器的具体格式如表6-72所示。 表6-72 CIPRSTATUS寄存器的格式 引脚名称 描述 初始状态 OvFiCb_Pr [31] Cb预览源FIFO溢出状态。 OvFiCr_Pr [30] Cr预览源FIFO溢出状态。 FrameCnt_Pr [27:26] 预览(P通道)DMA帧数。 FlipMd_Pr [24:23] 预览(P通道)DMA翻转模式。 ImgCptEn_PrSC [21] P通道图像捕获使能。

161 编解码计数器捕获使能,在旁路模式下此位必须为‘0’。 预览计数器捕获使能,在旁路模式下此位必须为‘0’。
摄像头接口特殊寄存器 34.图像捕获使能寄存器 图像捕获使能寄存器(CIIMGCPT)是可读/写状态,地址为0x4F0000A0,复位后的值为0x 。CIIMGCPT寄存器的具体格式如表6-73所示。 表6-73 CIIMGCPT寄存器的格式 引脚名称 描述 初始状态 ImgCptEn [31] 摄像头接口全局捕获使能。 ImgCptEn_CoSc [30] 编解码计数器捕获使能,在旁路模式下此位必须为‘0’。 ImgCptEn_PrSc [29] 预览计数器捕获使能,在旁路模式下此位必须为‘0’。

162 6.5.3 摄像头接口应用实例 例6-11,如图利用S3C2440摄像头接口连接OV9650读取拍照数据。
摄像头接口应用实例 例6-11,如图利用S3C2440摄像头接口连接OV9650读取拍照数据。 #include "2440addr.h" #include "2440lib.h" #define SIO_C (GPIO_E14) #define SIO_D (GPIO_E15) OV9650 摄像头 CIM_DATA(8-10b) 24400-CIM_DATA 2440-CIM_LS 2440-CIM_FS 2440-IIC_CLK 2440-IIC_DATA 2440-Camera_reset 2440- Camera_pwdn CIM_LS CIM_FS IIC_CLK IIC_DATA Camera_reset Camera_pwdn 图6-22 摄像头接口原理图

163 6.5.3 摄像头接口应用实例 #define GPIO_PULLUP_DIS (1<<30)
摄像头接口应用实例 #define GPIO_PULLUP_DIS (1<<30) #define GPIO_MODE_OUT (1<<31) #define CFG_WRITE(_x) set_gpio_ctrl(_x | GPIO_PULLUP_DIS | GPIO_MODE_OUT) #define mdelay(x) Delay((x)*8) void Delay(unsigned int x) { unsigned int i,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++); } //仅支持GPE, I/O static __inline void set_gpio_ctrl(unsigned int gpio)

164 6.5.3 摄像头接口应用实例 rGPECON &= ~(3<<((gpio&0xf)*2));
摄像头接口应用实例 rGPECON &= ~(3<<((gpio&0xf)*2)); if(gpio&GPIO_MODE_OUT) rGPECON |= 1<<((gpio&0xf)*2); if(gpio&GPIO_PULLUP_DIS) rGPEUP |= 1<<(gpio&0xf); else rGPEUP &= ~(1<<(gpio&0xf)); } //OV9650初始化 void __inline ov9650_init(void) { CFG_WRITE(SIO_C); CFG_WRITE(SIO_D); mdelay(10);

165 6.6 本章小结 本章详细的介绍了S3C2440A芯片的LCD显示器接口及其控制器原理、I2C和I2S的数据格式和时序,并介绍了AC97控制器的操作方式和摄像头接口的原理和控制方法。

166 6.7 习题6 1. S3C2440A芯片的I2C总线时序中,ACK信号的作用是什么,结合相应的时序图加以说明?
6.7 习题6 1. S3C2440A芯片的I2C总线时序中,ACK信号的作用是什么,结合相应的时序图加以说明? 2. S3C2440A芯片的IIS总线有几条信号线,分别是什么? 3. S3C2440A中的音频串行接口格式是什么? 4. S3C2440A芯片的AC97控制器操作流程什么? 5. S3C2440A的摄像头接口由哪几部分组成? 6.试编写I2C的初始化程序? 7.试编写AC97控制器初始化程序? 8.试编写摄像头接口初始化程序?


Download ppt "(第2版)."

Similar presentations


Ads by Google