S3C6410驱动I80接口LCD
来源:互联网 发布:网络mg老虎机破解方法 编辑:程序博客网 时间:2024/06/02 00:47
RGB屏只需显存组织好数据。启动显示后。LCD-DMA会自动把显存通过RGB接口送到LCM。
而MCU屏则需要发送画点的命令来修改MCU内部RAM。(即不能直接MCU屏RAM)
所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢.
MCU管脚的控制脚有5个
- CS 片选信号
- RS (置1为写数据,置0为写命令)
- /WR (为0表示写数据)
- /RD (为0表示读数据)
- RESET 复位LCD( 用固定命令系列 0 1 0来复位)
- SYS_CSx 对应CS
- SYS_OE 对应RD
- SYS_WE对应WR
- SYS_RS对应RS
- 这里没有对应RESET,直接采用某一个IO口来代替。
在mini6410中 这里采用VD[21]即GPJ5来充当RESET脚 - 数据脚 输出VDOUT[17:0],与RGB管脚不一样的是,MCU-LCD还带有 VDIN[17:0],即显存中的数据可以通过命令读取出来。
我们测试是采用学生公司的MCU LCM,爱诺信2.8"的mcu屏。因为接口不是完全兼容,因此只能用采用复杂连线板来匹配。开发板使用的是mini6410。
这个LCM按其管脚要求配置成 16bpp(565)。这是LCM一侧的跳线配置。
相应的,在S3C6410一侧使用VD[0-15]
因此在S3C6410 一侧,采用VD[0-15]来与其对接
- RESET : 这里使用VD[21]来当RESET线,即 GPJ5的output脚.
- CS0: 这里复用了HSYNC信号脚,即使用GPJ8
- OE: 在引脚上悬空,即始终为高,这样不影响结果。
- WE: 复用了VCLK信号脚,即采用 GPJ11脚
- RS 复用了VDEN信号脚,即采用 GPJ10脚
I80 硬件波形分析
---------------------------------------------------------
启动波形
根据I80的要求,每次如果需要RESET LCD屏,需要用软件发送 101序列。
这是MCU-LCD IC里的RESET波形图
这里我们实测LCD屏的启动波形
MCU-LCD初始化屏幕,一般出现如下画面表示硬件连线正确,并且初始化成功.
写入波形
在MCU-LCD中,用RS脚来区别是向MCU屏发送命令还是数据。而且通常每一种MCU屏有一组初始化命令,它具体的序列取决了不同硬件,所以不同型号的MCU-LCD屏初始化命令序列是不一样的,这个要由生产厂家来提供。
参考S3C6410提供的I80标准波形,在写入时,WE必须是低电平,RS取决于写入命令还数据。CS是片选有效,是低电平有效。
//MCU屏要求,每次Reset要求送一个 1,0,1的波形
void LCD_MCU_Reset()
{
#ifdef LCD_TYPE_MCU_NOAIS28
rGPJCON = (rGPJCON & ~(0x3<<10)) | (0x1<<10);
rGPJDAT |= (0X1<<5);
Delay(100);
rGPJDAT &= ~(0X1<<5);
Delay(100);
rGPJDAT |= (0X1<<5);
Delay(100);
#endif
}
LCD_MCU_Write_Register(0x00E3,0x3008);
LCD_MCU_Write_Register(0x00E7,0x0012);
LCD_MCU_Write_Register(0x00EF,0x1231);
LCD_MCU_Write_Register(0x0001,0x0100);
LCD_MCU_Write_Register(0x0002,0x0700);
LCD_MCU_Write_Register(0x0003,0x1030);
LCD_MCU_Write_Register(0x0004,0x0000);
LCD_MCU_Write_Register(0x0008,0x0207);
LCD_MCU_Write_Register(0x0009,0x0000);
LCD_MCU_Write_Register(0x000A,0x0000);
LCD_MCU_Write_Register(0x000C,0x0000);
LCD_MCU_Write_Register(0x000D,0x0000);
LCD_MCU_Write_Register(0x000F,0x0000);
LCD_MCU_Write_Register(0x0010,0x0000);
LCD_MCU_Write_Register(0x0011,0x0007);
LCD_MCU_Write_Register(0x0012,0x0000);
LCD_MCU_Write_Register(0x0013,0x0000);
Delay(10);
LCD_MCU_Write_Register(0x0010,0x1490);
LCD_MCU_Write_Register(0x0011,0x0227);
Delay(10);
LCD_MCU_Write_Register(0x0012,0x001A);
Delay(10);
LCD_MCU_Write_Register(0x0013,0x0700);//1000
LCD_MCU_Write_Register(0x0029,0x0001);// 0015
LCD_MCU_Write_Register(0x002B,0x000C);
Delay(10);
LCD_MCU_Write_Register(0x0020,0x0000);
LCD_MCU_Write_Register(0x0021,0x0000);
LCD_MCU_Write_Register(0x0030,0x0000);
LCD_MCU_Write_Register(0x0031,0x0607);
LCD_MCU_Write_Register(0x0032,0x0305);
LCD_MCU_Write_Register(0x0035,0x0000);
LCD_MCU_Write_Register(0x0036,0x1604);
LCD_MCU_Write_Register(0x0037,0x0204);
LCD_MCU_Write_Register(0x0038,0x0001);
LCD_MCU_Write_Register(0x0039,0x0707);
LCD_MCU_Write_Register(0x003C,0x0000);
LCD_MCU_Write_Register(0x003D,0x000F);
LCD_MCU_Write_Register(0x0050,0x0000);
LCD_MCU_Write_Register(0x0051,0x00EF);
LCD_MCU_Write_Register(0x0052,0x0000);
LCD_MCU_Write_Register(0x0053,0x013F);
LCD_MCU_Write_Register(0x0060,0xa700);
LCD_MCU_Write_Register(0x0061,0x0001);
LCD_MCU_Write_Register(0x006A,0x0000);
LCD_MCU_Write_Register(0x0080,0x0000);
LCD_MCU_Write_Register(0x0081,0x0000);
LCD_MCU_Write_Register(0x0082,0x0000);
LCD_MCU_Write_Register(0x0083,0x0000);
LCD_MCU_Write_Register(0x0084,0x0000);
LCD_MCU_Write_Register(0x0085,0x0000);
LCD_MCU_Write_Register(0x0090,0x0010);
LCD_MCU_Write_Register(0x0092,0x0600);
LCD_MCU_Write_Register(0x0093,0x0003);
LCD_MCU_Write_Register(0x0095,0x0110);
LCD_MCU_Write_Register(0x0097,0x0000);
LCD_MCU_Write_Register(0x0098,0x0000);
LCD_MCU_Write_Register(0x0007,0x0133);
#define LCD_MCU_START_WRITE() rI80IFCONB0 |=(1<<9)
void LCD_MCU_Write_Cmd(unsigned short cmd)
{
rLDI_CMD0 = cmd;
//等Normal command 变为0
while(!( (rI80IFCONB0& (1<<9)) == 0));
rLDI_CMDCON0 = (rLDI_CMDCON0 & (0x0)) |((0x01)<<0); //01 : Normal Command Enable
rLDI_CMDCON1 = (rLDI_CMDCON1 & (0x0)) |((0x0)<<0); //Command 0 RS control,送命令
LCD_MCU_START_WRITE();
Delay(10);
}
void LCD_MCU_Write_Data(unsigned short data)
{
rLDI_CMD0 = data;
//等Normal command 变为0
while(!( (rI80IFCONB0& (1<<9)) == 0));
rLDI_CMDCON0 = (rLDI_CMDCON0 & (0x0)) |((0x01)<<0); //01 : Normal Command Enable
rLDI_CMDCON1 = (rLDI_CMDCON1 & (0x0)) |((0x1)<<0); //Command 0 RS control ,送数据
LCD_MCU_START_WRITE();
Delay(10);
}
- S3C6410驱动I80接口LCD
- S3C6410驱动I80接口LCD
- S3C6410驱动I80接口LCM
- 2416 RBG 接口 LCD 换成 I80 接口 LCD 驱动修改 EBOOT 部分
- 2416 RBG 接口 LCD 换成 I80 接口 LCD 驱动修改 NK 部分
- LCD的接口- I80(MCU)接口
- EBI (外部总线接口) 控制I80接口LCD屏
- Real6410/S3C6410裸机LCD驱动
- s3c6410 LCD在uboot下的驱动
- S3C6410裸机驱动5'TFT LCD
- S3C6410裸机驱动5'TFT LCD
- s3c6410 LCD驱动的分析过程(1)
- S3C6410裸机驱动5'TFT LCD
- Lcd接口开发板,s3c6410开发平台
- LCD驱动接口函数(转)
- 基于S3C6410&WINCE6.0的LCD驱动详解
- 基于S3C6410&WINCE6.0的LCD驱动详解
- 基于S3C6410&WINCE6.0的LCD驱动详解
- 安卓系统中动态添加字符串
- jstl之core
- POJ1088--滑雪
- source insight 选择一种最接近的语言
- CSS样式表
- S3C6410驱动I80接口LCD
- django+uwsgi+apache2
- PendingIntent用法
- 关于Doxygen的使用
- 自己写非阻塞代理服务器 proxy 之python版
- NUMA互联技术--价值
- jquery 解析处理 json数据
- 1、iPhone游戏开发必备
- vc静态加载dll和动态加载dll