




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第五章基于第五章基于S3C2410的的系统硬件设计系统硬件设计 (下)(下)2第五章第五章 基于基于S3C2410的系统硬件设计的系统硬件设计 l5.1 S3C2410 简介l5.2 最小系统设计l5.3 中断系统设计l5.4 DMA设计l5.6 AD、DA接口设计l5.7 PWM定时器l5.8 人机接口设计l5.9 通信接口设计3 5.5 S3C2410A 5.5 S3C2410A的的I/OI/O口工作原理口工作原理 S3C2410A S3C2410A共有共有117117个多功能复用输入输出口(个多功能复用输入输出口(I/OI/O口),口),分为分为8 8组组PORT APORT APOR
2、T HPORT H。;。8 8组组I/OI/O口按照其位数的不同,可分为:口按照其位数的不同,可分为:1 1个个2323位的输出口(位的输出口(PORT APORT A)2 2个个1111位的位的I/OI/O口(口(PORT B PORT B 和和PORT HPORT H)4 4个个1616位的位的I/OI/O口(口(PORT CPORT C、PORT DPORT D、PORT EPORT E、PORT GPORT G)1 1个个8 8位的位的I/OI/O口(口(PORT FPORT F)4S3C2410X Port Configuration (Sheet 1 of 5)5S3C2410X
3、Port Configuration (Sheet 2 of 5)6S3C2410X Port Configuration (Sheet 3 of 5)7S3C2410X Port Configuration (Sheet 4 of 5)8S3C2410X Port Configuration (Sheet 5 of 5)9端口控制寄存器端口控制寄存器l 与配置与配置I/O口相关的寄存器包括:口相关的寄存器包括:l(1)端口控制寄存器()端口控制寄存器(GPACONGPHCON)lS3C2410大部分引脚是复用的,在使用这些引脚之前,大部分引脚是复用的,在使用这些引脚之前,需要需要,这个端口控
4、制寄存器就是实,这个端口控制寄存器就是实现该功能的。现该功能的。l(2)端口数据寄存器()端口数据寄存器(GPADATGPHDAT)l如果端口被配置为输出端口,可以将要输出的数据写入如果端口被配置为输出端口,可以将要输出的数据写入该端口数据寄存器,如果端口被配置为输入端口,可以该端口数据寄存器,如果端口被配置为输入端口,可以从端口数据寄存器读取所输入的数据。从端口数据寄存器读取所输入的数据。10l(3)端口上拉寄存器()端口上拉寄存器(GPBUPGPHUP)l端口上拉寄存器控制着每个端口组的上拉寄存器的使能端口上拉寄存器控制着每个端口组的上拉寄存器的使能或禁止。或禁止。0允许,允许,1禁止。禁
5、止。l(4)MISCELLANEOUS杂项控制寄存器杂项控制寄存器l控制着控制着USB、时钟、数据总线的端口属性。、时钟、数据总线的端口属性。l外部中断控制寄存器(外部中断控制寄存器(EXTINTN) l用来配置用来配置24个外部中断请求信号的触发方式(电平、个外部中断请求信号的触发方式(电平、边沿)边沿)111213141516171819202122232425262728 I/O I/O口编程实例口编程实例 举例举例: 1: 1、输出实例:、输出实例:使用使用GPIO控制控制LED1LED4,使其指示,使其指示0F的的16进制数值(进制数值(LED4为最高位,为最高位,LED1为最低位)
6、。为最低位)。GPE11S3C2410ALED1VDD3.3R1 1KQ1 8050GPH4GPE12GPH6R2 1KR3 1KR4 1KR5 470Q2 8050Q3 8050Q4 8050R6 470R7 470R8 470LED2LED3LED429l程序清单 #include config.h /* * Function name: LED_DispNum * Descriptions: 控制LED1LED4显示指定16进制数值。LED4为最高位, * LED1为最低为,点亮表示该位为1。 * * Output: 无 */ void LED_DispNum(uint32 dat) /
7、 Input: dat 显示数值(低4位有效) dat = dat & 0 x0000000F; / 参数过滤 / 控制LED4、LED3显示(d3、d2位) if(dat & 0 x08) rGPHDAT = rGPHDAT | (0 x016); else rGPHDAT = rGPHDAT & (0 x016); if(dat & 0 x04) rGPHDAT = rGPHDAT | (0 x014); else rGPHDAT = rGPHDAT & (0 x014); / 控制LED2、LED1显示(d1、d0位) rGPEDAT = (rGPEDAT & (0 x0311) | (
8、dat&0 x03) 0; dly-) for(i=0; i50000; i+); 31int main(void) int i; / 初始化I/O rGPECON = (rGPECON & (0 x0F22) | (0 x0522); / rGPECON25:22 = 0101b,设置GPE11、GPE12为GPIO输出模式 rGPHCON = (rGPHCON & (0 x338) | (0 x118); / rGPHCON13:8 = 01xx01b,设置GPH4、GPH6为GPIO输出模式 / LED显示控制 while(1) / 控制LED指示0F的16进制数值 for(i=0; i
9、16; i+) LED_DispNum(i); / 显示数值i DelayNS(5); return(0);32 I/O I/O口编程实例口编程实例 举例举例: 2: 2、输入实例:、输入实例: S3C2410AB1BUZZERQ58050VDD33R31KR418GPH10KEY1R122VDD33GPF 4R210K33l程序清单 #include config.h / 定义独立按键KEY1的输入口 #define KEY_CON (14) /* GPF4口 */ / 定义蜂鸣器控制口 #define BEEP (110) /* GPH10口 */ #define BEEP_MASK(BE
10、EP) int main(void) / 初始化I/O rGPFCON = (rGPFCON & (0 x038); / rGPFCON9:8 = 00b,设置GPF4为GPIO输入模式 rGPHCON = (rGPHCON & (0 x0121) | (0 x0120); / rGPHCON21:20 = 01b,设置GPH10为GPIO输出模式 rGPHDAT = rGPHDAT & BEEP_MASK; / 初始状态按键未按下,设置GPH10=0,禁止蜂鸣器发声 34 while(1) if(rGPFDAT & KEY_CON) / 判断GPF4是否为高电平 rGPHDAT = rGPH
11、DAT & BEEP_MASK; / GPF4为高电平,按键未按下,则设置GPH10=0 else rGPHDAT = rGPHDAT | BEEP; / GPF4为低电平,按键已按下,则设置GPH10=1 DelayNS(1); return(0);35第五章第五章 基于基于S3C2410的系统硬件设计的系统硬件设计 l5.1 S3C2410 简介l5.2 最小系统设计l5.3 中断系统设计l5.4 DMA设计l5.5 I/O接口扩展l5.7 PWM定时器l5.8 人机接口设计l5.9 通信接口设计36 5.6 S3C2410A 5.6 S3C2410A的的A/DA/D转换器转换器 S3C2
12、410A的的A/D转换器包含一个转换器包含一个8通道的模拟输入转换器,可以通道的模拟输入转换器,可以将模拟输入信号将模拟输入信号(带有采样保持器)转换成带有采样保持器)转换成10位位数字编码。在数字编码。在AD转换转换时钟为时钟为2.5MHz时,其最大转换率为时,其最大转换率为500KSPS,输入电压范围是,输入电压范围是03.3V。 37 Example of ADC and Touch Screen Interfacel四线电阻式触摸屏接口基础知识l 四线电阻式触摸屏组成及工作原理n图11.2为四线电阻式触摸屏截面图及在X电极对上施加确定的电压后,X方向导电层不同位置电压示意图。n图11.
13、3给出了上导电层X+、X-电极、下导电层Y+、Y-电极的位置。图11.3(a)和图11.3(b)分别表示,确定触点位置时,要先在X+、X-电极对施加电压,Y+、Y-电极对不施加电压;然后在Y+、Y-电极对施加电压,X+、X-电极对不施加电压。 l 四线电阻式触摸屏接口主要操作n接口主要操作包括:有触摸动作时首先控制首先控制X+、X-电极对施加电压,电极对施加电压,Y+电极与电极与A/D转换转换器连接、器连接、Y-电极对地高阻,读电极对地高阻,读A/D转换值得到转换值得到触点的触点的X坐标坐标;然后控制然后控制Y+、Y-电极对施加电电极对施加电压,压,X+电极与电极与A/D转换器连接,转换器连接
14、,X-电极对地高电极对地高阻,读阻,读A/D转换值值得到触点的转换值值得到触点的Y坐标坐标;另外还有检测触摸动作,产生中断请求等操作。41与与A/D转换相关的寄存器转换相关的寄存器 :ADCADC控制寄存器(控制寄存器(ADCCONADCCON) ADCADC触摸屏控制寄存器(触摸屏控制寄存器(ADCTSCADCTSC) ADCADC启动延时寄存器启动延时寄存器(ADCDLY) (ADCDLY) ADCADC转换数据寄存器转换数据寄存器(ADCDATn) (ADCDATn) 42434445464748 5.6.2 A/D 5.6.2 A/D接口编程实例接口编程实例 举例:举例: VDD33W
15、110KW210KVIN1VIN2R722R822VDD33C1260.1uFL810uHVDD33S3C2410AVrefAIN0AIN149l程序清单 #include config.h / 定义用于保存ADC结果的变量 uint32 adc0, adc1; / 定义显示缓冲区 char disp_buf50; / 定义ADC转换时钟 (2MHz) #define ADC_FREQ(2*1000000) 50/* Function name: ReadAdc* Descriptions: ADC转换函数 * Input: ch转换通道(0-7)* Output: 返回转换结果*/uint3
16、2 ReadAdc(uint32 ch) int i;ch = ch & 0 x07;/ 参数过滤 rADCCON = (114)|(PCLK/ADC_FREQ - 1)6)|(ch3)|(02)|(01)|(00);/ PRSCEN=1,使能分频器/ PRSCVL=(PCLK/ADC_FREQ - 1),即ADC转换时钟为ADC_FREQ/ SEL_MUX=ch,设置ADC通道/ STDBM=0,标准转换模式/ READ_START=0,禁止读(操作后)启动ADC/ ENABLE_START=0,不启动ADC rADCTSC = rADCTSC & (0 x03); / 普通ADC模式(非触
17、摸屏)for(i=0; i100; i+);rADCCON = rADCCON | (1锯齿波信号的电平时比较器输出高电平信号,反之输出低电平信号。这样Uc的大小决定了脉冲占空比。当Uc为一模拟信号,随着时间变化时,脉冲占空比也会随着时间变化,变化的规律和Uc一样,也就是实现了Uc对方波的PWM调制。69S3C2410的的PWM的实现原理的实现原理脉冲占空比取决于TCMPBn中的值,脉冲周期决定于TCNTBn 中的值,按照调制信号的大小改变TCMPBn 里的值,就会实现PWM调制。70l全桥PWM逆变器原理图(4)死区控制71 全桥PWM逆变器波形图S1、S4控制信号S2、S3控制信号变压器原
18、边电压变压器原边电流变压器副边电流(负载电压)72The Wave Form When a Dead Zone Feature is Enabled73PWM定时器控制寄存器定时器控制寄存器747576777879808182 5.7.2 PWM 5.7.2 PWM应用举例应用举例 举例:举例: PWMDACR18210KC1271uF/16VJP11PWMS3C2410AKEY1R18122VDD33GPF4/EINT4R3910KTOUT083l程序清单 #include config.h / 定义独立按键KEY1的输入口 #define KEY_CON (14) /* GPF4口 */
19、/* Function name: WaitKey* Descriptions: 等待一个有效按键。本函数有去抖功能。 * Input: 无* Output: 无*/void WaitKey(void) uint32 i; while(1) while(rGPFDAT&KEY_CON) = KEY_CON) ;/ 等待KEY键按下 for(i=0; icycle) duty = cycle; / 设置定时器0,即PWM周期和占空比 / Fclk=200MHz,时钟分频配置为1:2:4,即Pclk=50MHz。 rTCFG0 = 97;/ 预分频器0设置为98,取得510204HzrTCFG1
20、= 0;/ TIMER0再取1/2分频,取得255102HzrTCMPB0 = duty; / 设置PWM占空比rTCNTB0 = cycle;/ 定时值(PWM周期)if(rTCON&0 x04) rTCON = (11); / 更新定时器数据 (取反输出inverter位) else rTCON = (12)|(11);rTCON = (10)|(13); / 启动定时器 85/* Function name: main* Descriptions: 使用PWM输出实现DAC功能,输出电压分别为0.0V、0.5V、1.0V、1.5V、2.0V、2.5V和3.0V。 * Input: 无*
21、Output: 系统返回值0*/int main(void) uint16 pwm_dac; / 独立按键KEY1控制口设置 rGPFCON = (rGPFCON & (0 x038); / rGPFCON9:8 = 00b,设置GPF4为GPIO输入模式 / TOUT0口设置 rGPBCON = (rGPBCON & (0 x030) | (0 x02255) pwm_dac = 0; rTCMPB0 = pwm_dac; return(0);87运行结果:88第五章第五章 基于基于S3C2410的系统硬件设计的系统硬件设计 l5.1 S3C2410 简介l5.2 最小系统设计l5.3 中断
22、系统设计l5.4 DMA设计l5.5 I/O接口扩展l5.6 AD、DA接口设计l5.7 PWM定时器l5.9 通信接口设计89 5.8.1 5.8.1 键盘和键盘和LEDLED的接口原理的接口原理 HA7279A是一片具有串行接口并可同时驱动是一片具有串行接口并可同时驱动8位共阴式数码管或位共阴式数码管或64只独立只独立LED的智能显示驱动芯片。该芯片同时可连接多达的智能显示驱动芯片。该芯片同时可连接多达64键的键键的键盘矩阵,一片即可完成盘矩阵,一片即可完成LED显示及键盘接口的全部功能。显示及键盘接口的全部功能。 HA7279AHA7279A一共有一共有2828个引脚:个引脚:RESET
23、RESET:复位端。通常,该端接:复位端。通常,该端接5V5V电源;电源;DIG0DIG0DIG7DIG7:个:个LEDLED管的位驱动输出端;管的位驱动输出端;SASASGSG:LEDLED数码管的段段的输出端;数码管的段段的输出端;DPDP:小数点的驱动输出端;:小数点的驱动输出端;RCRC:外接振荡元件连接端。:外接振荡元件连接端。HD7279AHD7279A与微处理器仅需条接口线与微处理器仅需条接口线: :CSCS:片选信号(低电平有效);:片选信号(低电平有效);DATADATA:串行数据端。:串行数据端。CLKCLK:数据串行传送的同步时钟输入端,时钟:数据串行传送的同步时钟输入端
24、,时钟的上升沿表示数据有效。的上升沿表示数据有效。KEY:KEY:按键信号输出端。该端在无键按下时为按键信号输出端。该端在无键按下时为高电平;而在有键按下时变为低电平,并一直高电平;而在有键按下时变为低电平,并一直保持到按键释放为止。保持到按键释放为止。 90v HD7279A HD7279A与与S3C2410AS3C2410A的连接原理图的连接原理图 91 键盘和键盘和LEDLED控制的编程实例控制的编程实例 举例:通过按键来控制举例:通过按键来控制LED的显示。的显示。 1键盘中断的初始化键盘中断的初始化 void KeyINT_Init(void)void KeyINT_Init(voi
25、d) rGPFCON=(rGPFCON&0 xF3FF)|(210); rGPFCON=(rGPFCON&0 xF3FF)|(210); rGPECON=(rGPECON&0 xF3FFFFFF)|(0 x0126); rGPECON=(rGPECON&0 xF3FFFFFF)|(0 x0126); /设置设置GPE13GPE13为输出位,模拟时钟输出为输出位,模拟时钟输出 rEXTINT0 &= 0 xff8fffff; rEXTINT0 &= 0 xff8fffff; /外部中断外部中断5 5低电平有效低电平有效 if (rEINTPEND & 0 x20) if (rEINTPEND &
26、 0 x20) /清除外部中断清除外部中断5 5的中断挂起位的中断挂起位 rEINTPEND |= 0 x20;rEINTPEND |= 0 x20; if (rINTPND & BIT_EINT4_7) if (rINTPND & BIT_EINT4_7) rSRCPND |= BIT_EINT4_7;rSRCPND |= BIT_EINT4_7; rINTPND |= BIT_EINT4_7;rINTPND |= BIT_EINT4_7; rINTMSK &= (BIT_EINT4_7); rINTMSK &= (BIT_EINT4_7); /使用外部中断使用外部中断4 47 7 rEIN
27、TMASK &= 0 xffffdf; rEINTMASK &= 0 xffffdf; /外部中断外部中断5 5使能使能 pISR_EINT4_7 = (int)Key_ISR;pISR_EINT4_7 = (int)Key_ISR; 92举例:通过按键来控制举例:通过按键来控制LED的显示。的显示。 2书写中断服务子程序书写中断服务子程序 void _irq Key_ISR( void ) void _irq Key_ISR( void ) int j;int j;rINTMSK |= BIT_ALLMSK; / rINTMSK |= BIT_ALLMSK; / 关中断关中断if (rEIN
28、TPEND & 0 x20)if (rEINTPEND & 0 x20) key_number = read7279(cmd_read);/key_number = read7279(cmd_read);/读键盘指令程序读键盘指令程序 rINTMSK &= (BIT_EINT4_7);rINTMSK &= (BIT_EINT4_7); switch(key_number) switch(key_number) case 0 x04 : key_number = 0 x08; break; case 0 x04 : key_number = 0 x08; break; case 0 x05 :
29、key_number = 0 x09; break; case 0 x05 : key_number = 0 x09; break; case 0 x06 : key_number = 0 x0A; break; case 0 x06 : key_number = 0 x0A; break; case 0 x07 : key_number = 0 x0B; break; case 0 x07 : key_number = 0 x0B; break; case 0 x08 : key_number = 0 x04; break; case 0 x08 : key_number = 0 x04;
30、break; case 0 x09 : key_number = 0 x05; break; case 0 x09 : key_number = 0 x05; break; case 0 x0A : key_number = 0 x06; break; case 0 x0A : key_number = 0 x06; break; case 0 x0b : key_number = 0 x07; break; case 0 x0b : key_number = 0 x07; break; default: break; default: break; Uart_Printf(key is %x
31、 n, key_number);Uart_Printf(key is %x n, key_number); rEINTPEND |= 0 x20;rEINTPEND |= 0 x20;rSRCPND |= BIT_EINT4_7;rSRCPND |= BIT_EINT4_7; rINTPND |= BIT_EINT4_7; rINTPND |= BIT_EINT4_7; 93举例:通过按键来控制举例:通过按键来控制LED的显示。的显示。 3主程序的主主程序的主要功能是根据按要功能是根据按键键值,向键键值,向HD7279A发送不发送不同的处理命令,同的处理命令,程序结构如下。程序结构如下。 vo
32、id Main() void Main() char p;char p; Target_Init(); Target_Init(); /目标初始化目标初始化 while(1) while(1) switch(key_number) switch(key_number) case 0: send_byte(cmd_test); case 0: send_byte(cmd_test); /测试键测试键 break;break; case 1: for(p=0;p8;p+) case 1: for(p=0;p8;p+) /右移右移8 8位位 send_byte(0 xA0);send_byte(0
33、xA0); send_byte(0 xC8+7); send_byte(0 xC8+7); send_byte(p);send_byte(p); long_delay(); long_delay(); Delay(7000); Delay(7000); break; break; /case 2/case 2到到case14case14 case 15: case 15:/最右两个数码管上显示最右两个数码管上显示1515 write7279(decode1+5,key_number/16 write7279(decode1+5,key_number/16* *8);8); write7279(
34、decode1+4,key_number & write7279(decode1+4,key_number & 0 x0f);0 x0f); break; break; default: break; default: break; key_number = 0 xff; key_number = 0 xff; Delay(50); Delay(50); 94 5.8.2 LCD 5.8.2 LCD显示原理显示原理 所谓所谓LCD,是,是Liquid Crystal Display的缩写,即液晶显的缩写,即液晶显示器。示器。LCD液晶显示器主要有两类:液晶显示器主要有两类:STN(Super
35、Twisted Nematic,超扭曲向列型)和超扭曲向列型)和TFT(Thin Film Transistor,薄,薄膜晶体管型)。对于膜晶体管型)。对于S3C2410A的的LCD控制器,同时支持控制器,同时支持STN和和TFT显示器。显示器。 STN与与TFT的主要区别在于:的主要区别在于:从工作原理上看,从工作原理上看,STN主要是增大液晶分子的扭曲角,而主要是增大液晶分子的扭曲角,而TFT为每个像素点设置一个开关电路,做到完全单独的控制每个像为每个像素点设置一个开关电路,做到完全单独的控制每个像素点;素点;从品质上看,从品质上看,STN的亮度较暗,画面的质量较差,颜色不够丰的亮度较暗,
36、画面的质量较差,颜色不够丰富,播放动画时有拖尾现象富,播放动画时有拖尾现象,耗电量小,价格便宜;而耗电量小,价格便宜;而TFT亮度亮度高,画面质量高,颜色丰富,播放动画时清晰,耗电量大,价高,画面质量高,颜色丰富,播放动画时清晰,耗电量大,价格高。格高。 951、 LCD控制器概述市面上出售的LCD有两种类型:u一种是带有驱动控制电路的LCD显示模块,这种LCD可以方便地与各种低档单片机进行接口;u另一种是LCD显示屏,没有驱动控制电路, 大部分大部分ARM处理器中都集成了处理器中都集成了LCD控制器,所以对于控制器,所以对于采用采用ARM处理器的系统,一般使用处理器的系统,一般使用。 96嵌
37、入式处理器与嵌入式处理器与LCDLCD的连接的连接嵌入嵌入式处式处理器理器LCD模块模块数据数据总线总线寄存器选择寄存器选择使能信号使能信号有有LCD控制控制器的嵌入式器的嵌入式处理器处理器LCDLCD控制信控制信号线号线97 S3C2410A S3C2410A的的LCDLCD控制器控制器 S3C2410A中的中的LCD控制器可支持控制器可支持STN和和TFT两种液晶两种液晶显示屏。显示屏。 LCD控制器支持单色、控制器支持单色、4级、级、16级灰度级灰度LCD显示,显示,以及以及8位彩色(位彩色(256色)、色)、12位彩色(位彩色(4096色)色)LCD显示。显示。LCD控制器由控制器由R
38、EGBANK、LCDCDMA、VIDPRCS、TIMEGEN和和LPC3600组成。组成。 支持 3 种STN LCD 显示: 4-bit 双扫描, 4-bit 单扫描, 和8-bit 单扫描 支持二值, 4 级灰度, 16 级灰度,256色 和 4096 色的 STN LCD 典型屏幕尺寸为:640480, 320240, 160160等。256色模式虚拟屏幕尺寸为:40961024, 20482048, 10244096等等(1)STN LCD(2)TFT LCD 支持 1位、2位、4位和8位 调色板模式的TFT LCD 显示 支持16位、24位(16M)非调色板模式的TFT LCD显示
39、典型实际屏幕尺寸为 640480, 320240, 160160等。64K 彩色模式下支持的最大虚拟屏幕尺寸为 20481024983、 LCD控制器的框图寄存器组,由17个寄存器和一个25616的调色板构成,用来设置LCD控制器。专用DMA,用来自动将存储器中的视频数据传送到LCD驱动器中。无需CPU干涉。视频数据产生,(如:4/8比特单扫描或4比特双扫描),然后从端口VD23:0 发送到LCD驱动器。时序产生,用来产生视频控制信号。定时控制生成逻辑单元。994、 LCD接口信号VFRAME/VSYNC/STV : LCD控制器发往驱动器的帧同步信号 ,它表示新的一帧的开始。LCD控制器在一
40、个完整的帧显示后发出该信号,开始新的一帧的显示。VLINE/HSYNC/CPV : LCD控制器发往驱动器的行同步脉冲信号 ,LCD驱动器在收到该信号后,将水平移位寄存器的内容显示到LCD屏上。LCD控制器在一整行数据全部传输到LCD驱动器后,发出一个VLINE信号。VCLK/LCD_HCLK : LCD控制器发往驱动器的像素时钟信号 ,LCD控制器在VCLK的上升沿发送数据,LCD驱动器在VCLK的下降沿采样数据。VD23:0 : LCD 像素数据输出端口 ,也就是平时所说的RGB信号线,采用的是5:6:5的模式。 S3C2410A中的中的LCD控制器一共有控制器一共有33个输出端口,其中个
41、输出端口,其中24个数据信号端口,个数据信号端口,9个控制信号端口。个控制信号端口。 1004、 LCD接口信号VM/VDEN/TP : LCD 驱动器所使用的的AC 偏置信号 。LCD驱动器使用该信号改变行电压和列电压的极性,进而打开或者关闭像素,使像素点显示或熄灭。VM信号可以与帧同步信号或者行同步信号进行同步。LEND/STH : 行终止信号 (TFT)/SEC TFT信号 STHLCD_PWREN : LCD 电源使能信号LCDVF0 : SEC TFT OE信号LCDVF1 : SEC TFT REV信号LCDVF2 : SEC TFT REVB信号1015、 STN LCD控制器操
42、作l定时发生器 (TIMEGEN) TIMEGEN产生产生LCD驱动器所需要的各种控制信号,如:驱动器所需要的各种控制信号,如:VFRAME, VLINE, VCLK, 和和VM。 这些信号是与这些信号是与REGBANK 里面的寄存器里面的寄存器LCDCON1/2/3/4/5 的配置密切相关的。可以的配置密切相关的。可以通过改变这些寄存器的配置使得这些控制信号能够满足各种通过改变这些寄存器的配置使得这些控制信号能够满足各种LCD驱动器的要求。比如:驱动器的要求。比如: (1)VM的切换速率的切换速率 VM 的切换速率由的切换速率由LCDCON1寄存器的寄存器的 MMODE位和位和LCDCON4
43、寄存寄存器的器的MVAL 字段来决定。如果字段来决定。如果MMODE = 0,则则VM信号每帧切换一次。如信号每帧切换一次。如果果MMODE =1 ,则,则VM 每每MVAL7:0个个VLINE切换一次,即:切换一次,即: VM Rate = VLINE Rate / ( 2 * MVAL) ,如下图所示:,如下图所示:102103(2)VFRAME 和和VLINE脉冲脉冲 VFRAME 和VLINE脉冲的产生依赖于LCDCON2/3寄存器的HOZVAL字段和LINEVAL 字段。这两个字段的值由LCD的显示尺寸和显示模式决定: HOZVAL = (水平显示尺寸水平显示尺寸 / 有效有效 VD
44、 数据行数数据行数)- 1 (在彩色显示模式水平显示尺寸= 3 水平像素数;在4位单扫描和4位 双扫描模式,有效 VD 数据行数为4,在8位单扫描模式,有效 VD 数 据行数为8. ) LINEVAL = (垂直显示尺寸垂直显示尺寸) -1 /单扫描模式下单扫描模式下 LINEVAL = (垂直显示尺寸垂直显示尺寸/2) -1 /双扫描模式下双扫描模式下 (3)VCLK 信号速率信号速率 VCLK 信号的速率依赖于LCDCON1寄存器的CLKVAL 字段的设置。VCLK与 CLKVAL(最小为2)的对应关系为: VCLK(Hz)=HCLK/(CLKVAL x 2) 如下表所示: 104(4)帧
45、速率帧速率 帧速率即是VFRAM 信号的频率. 帧速率与LCDCON1/2/3/4寄存器中的WLH1:0(VLINE脉冲宽度),WDLY1:0 (VLINE脉冲之后的VCLK延时长度),HOZVAL,LINEBLANK和LINEVAL等字段,以及VCLK和HCLK有关。帧速率的计算公式为: frame_rate(Hz) = 1/(1/VCLK)(HOZVAL+1)+(1/HCLK) (A+B+(LINEBLANK8)(LINEVAL+1) 其中:其中: A = 2(4+WLH),B = 2(4+WDLY) 105l视频操作 S3C2410 LCD控制器支持单色、2位(4级灰度)、4位(16灰度
46、级)、8位(256级彩色)和12位(4096级彩色) LCD显示。 为了便于用户选择不同的显示模式, S3C2410 LCD控制器采用了。通过这个调色板,用户可以在用户可以在4灰度级模灰度级模式下从式下从16级灰度中选择级灰度中选择4级灰度,构成查找表级灰度,构成查找表。在256级彩色中,8位彩色由3位红(8色)、3位绿(8色)、2位蓝(4色)构成(884= 256),这些红绿蓝色级也是分别在自己的16级中进行选择构成查找表。在16级灰度显示模式下,不需要查找表,16个灰度级都需要。在4096级彩色中不需要查表(红、绿、蓝都是16级, 161616= 4096)。(1)查找表106(2)灰度模
47、式操作 S3C2410 LCD控制器支持两种灰度模块:2位(4级灰度)、4位(16灰度级)。其中,4级灰度模式使用查找表,并且该查找表和彩色中的蓝色共用BLUELUT寄存器中的BLUEVAL15:0。 0级灰度用BLUEVAL3:0来表示(如:这四位的值是3,则表示用16级灰度中的3级来表示4级灰度中的0级)、 1级灰度用BLUEVAL7:4来表示, 2级灰度用BLUEVAL11:8来表示, 3级灰度用BLUEVAL15:12来表示。D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D03级灰度对应级值2级灰度对应级值1级灰度对应级值0级灰度对应级值BLUEVAL107(
48、3)256级彩色模式操作 S3C2410 LCD控制器支持每像素8位的256色彩色模式。每个象素的8位有3位表示红,3位表示绿,2位表示兰,分别利用自己的查找表。各个表分别用REDLUT寄存器中的REDVAL31:0、GREENLUT寄存器中的GREENVAL31:0和BLUELUT寄存器中的BLUEVAL15:0作为查找表的入口。REDVALD31-D28D27-D24D23-D20D19-D16D15-D12D11-D8D7-D4D3-D07级灰度对应级值6级灰度对应级值5级灰度对应级值4级灰度对应级值3级灰度对应级值2级灰度对应级值1级灰度对应级值0级灰度对应级值D31-D28D27-D
49、24D23-D20D19-D16D15-D12D11-D8D7-D4D3-D07级灰度对应级值6级灰度对应级值5级灰度对应级值4级灰度对应级值3级灰度对应级值2级灰度对应级值1级灰度对应级值0级灰度对应级值GREENVAL108(4)4096级彩色模式操作 S3C2410 LCD控制器支持每像素12位的4096色彩色模式。每个象素的12位有4位表示红,4位表示绿,4位表示兰,不再使用查找表。109(5)扫描模式支持 S3C2410 LCD控制器支持3种显示:4位单扫描、4位双扫描和8位单扫描。扫描方式通过PNRMODE(LCDCON16:5)来设置:PNRMODE00011011模式4位双扫描
50、4位单扫描8位单扫描TFT LCD110(A)4位单扫描 从VD3:01次移动4位数据,直到一帧数据移位完毕。如下图所示:4位单扫描单色模式位单扫描单色模式1114位单扫描彩色模式位单扫描彩色模式112(B)4位双扫描 显示控制器分别使用两条扫描线进行数据显示,显示数据从VD3:0获得高扫描数据, VD7:4获得低扫描数据。如下图所示:4位双扫描模式位双扫描模式1134位双扫描彩色模式位双扫描彩色模式114(C)8位单扫描 显示数据从VD7:0获得扫描数据,一次输入8位行数据。如下图所示:8位单扫描单色模式位单扫描单色模式1158位单扫描彩色模式位单扫描彩色模式116(5)显示数据的存放117
51、l在4级灰度模式,2bit视频数据对应一个像素l在16级灰度模式,4bit视频数据对应一个像素l在256色彩色模式,8bit视频数据对应一个像素。8位彩色数据格式如下:l在4096色彩色模式,12bit视频数据对应一个像素,以字为单位的彩色数据格式如下(注意:这时彩色视频数据必须3字对齐,即8像素对齐):118v 与与LCDLCD相关的寄存器相关的寄存器 LCDLCD控制寄存器控制寄存器1 1(LCDCON1LCDCON1)LCDLCD控制寄存器控制寄存器2 2(LCDCON2LCDCON2) LCDLCD控制寄存器控制寄存器3 3(LCDCON3LCDCON3) LCDLCD控制寄存器控制寄
52、存器4 4(LCDCON4LCDCON4)LCDLCD控制寄存器控制寄存器5 5(LCDCON5LCDCON5) 帧缓冲起始地址寄存器帧缓冲起始地址寄存器1 1(LCDSADDR1LCDSADDR1) 帧缓冲起始地址寄存器帧缓冲起始地址寄存器2 2(LCDSADDR2LCDSADDR2)帧缓冲起始地址寄存器帧缓冲起始地址寄存器3 3(LCDSADDR3LCDSADDR3)RGBRGB查找表寄存器(查找表寄存器(REDLUTREDLUT、GREENLUT GREENLUT 、BLUELUT BLUELUT ) 抖动模式寄存器(抖动模式寄存器(DITHMODEDITHMODE) 119 LCD L
53、CD显示的编程实例显示的编程实例 举例:在举例:在LCD上填充一个蓝色的矩形,并画一个红色的圆。上填充一个蓝色的矩形,并画一个红色的圆。 1定义与定义与LCD相关的寄存器相关的寄存器 #define #define M5D(n) M5D(n) (n) & 0 x1fffff)(n) & 0 x1fffff)#define MVAL#define MVAL(13)(13)#define MVAL_USED #define MVAL_USED (0)(0)#define MODE_CSTN_8BIT (0 x2001)#define MODE_CSTN_8BIT (0 x2001)#define
54、LCD_XSIZE_CSTN #define LCD_XSIZE_CSTN (320)(320)#define LCD_YSIZE_CSTN #define LCD_YSIZE_CSTN (240)(240)#define SCR_XSIZE_CSTN #define SCR_XSIZE_CSTN (LCD_XSIZE_CSTN(LCD_XSIZE_CSTN* *2) 2) /虚拟屏幕大小虚拟屏幕大小#define SCR_YSIZE_CSTN #define SCR_YSIZE_CSTN (LCD_YSIZE_CSTN(LCD_YSIZE_CSTN* *2) 2) #define HOZVA
55、L_CSTN#define HOZVAL_CSTN (LCD_XSIZE_CSTN (LCD_XSIZE_CSTN* *3/8-1) 3/8-1) /有效的有效的VDVD数据行号是数据行号是8 8#define LINEVAL_CSTN#define LINEVAL_CSTN(LCD_YSIZE_CSTN-1)(LCD_YSIZE_CSTN-1)#define WLH_CSTN#define WLH_CSTN (0) (0)#define WDLY_CSTN#define WDLY_CSTN(0)(0)#define LINEBLANK_CSTN#define LINEBLANK_CSTN(1
56、6 &0 xff)(16 &0 xff)#define CLKVAL_CSTN#define CLKVAL_CSTN(6) (6) /130hz 50Mhz,WLH=16hclk,WDLY=16hclk,LINEBLANK=16/130hz 50Mhz,WLH=16hclk,WDLY=16hclk,LINEBLANK=16* *8hclk,VD=88hclk,VD=8#define LCDFRAMEBUFFER 0 x33800000 #define LCDFRAMEBUFFER 0 x33800000 /帧缓冲区起始地址帧缓冲区起始地址120举例:在举例:在LCD上填充一个蓝色的矩形,并画一
57、个红色的圆。上填充一个蓝色的矩形,并画一个红色的圆。 2初始化初始化LCD,即对相关寄存器进行赋初值。其中参数,即对相关寄存器进行赋初值。其中参数type用于传递显用于传递显示器的类型,如示器的类型,如STN8位彩色、位彩色、STN12位彩色等。位彩色等。 void LCD_Init(int type)void LCD_Init(int type) rIISPSR=(25)|(20); rIISPSR=(25)|(20); /IIS_LRCK=44.1Khz 384fs,PCLK=50Mhz./IIS_LRCK=44.1Khz 384fs,PCLK=50Mhz. rGPHCON = rGPHC
58、ON & (0 xf18)|(0 x518); rGPHCON = rGPHCON & (0 xf18)|(0 x518); switch(type) switch(type) case MODE_CSTN_8BIT: case MODE_CSTN_8BIT: /STN8/STN8位彩色模式位彩色模式 frameBuffer8Bit=(U32 (frameBuffer8Bit=(U32 (* *)SCR_XSIZE_CSTN / 4)LCDFRAMEBUFFER;)SCR_XSIZE_CSTN / 4)LCDFRAMEBUFFER; rLCDCON1=(CLKVAL_CSTN8)|(MVAL_
59、USED7)|(25)|(31)|0; rLCDCON1=(CLKVAL_CSTN8)|(MVAL_USED7)|(25)|(31)|0; / 8-bit/ 8-bit单扫描,单扫描,8bpp CSTN,ENVID=8bpp CSTN,ENVID=关闭关闭 rLCDCON2=(024)|(LINEVAL_CSTN14)|(06)|0;rLCDCON2=(024)|(LINEVAL_CSTN14)|(06)|0; rLCDCON3=(WDLY_CSTN19)|(HOZVAL_CSTN8)|(LINEBLANK_CSTN0); rLCDCON3=(WDLY_CSTN19)|(HOZVAL_CSTN
60、8)|(LINEBLANK_CSTN0); rLCDCON4=(MVAL8)|(WLH_CSTN0); rLCDCON4=(MVAL8)|(WLH_CSTN22)1); rLCDSADDR1=(U32)frameBuffer8Bit22)1); rLCDSADDR2=M5D(U32)frameBuffer8Bit+(SCR_XSIZE_CSTN) rLCDSADDR2=M5D(U32)frameBuffer8Bit+(SCR_XSIZE_CSTN)* *LCD_YSIZE_CSTN)1);LCD_YSIZE_CSTN)1); rLCDSADDR3=(SCR_XSIZE_CSTN-LCD_XSI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论