S5PV210之LCD
来源:互联网 发布:linux 修改时区 编辑:程序博客网 时间:2024/06/02 05:46
注意:本人开发板是深圳九鼎创展科技的产品,7寸LCD分辨率是800*480。
#include "main.h"
#define GPF0CON (*(volatile unsigned long *)0xE0200120)
#define GPF1CON (*(volatile unsigned long *)0xE0200140)
#define GPF2CON (*(volatile unsigned long *)0xE0200160)
#define GPF3CON (*(volatile unsigned long *)0xE0200180)
#define GPD0CON (*(volatile unsigned long *)0xE02000A0)
#define GPD0DAT (*(volatile unsigned long *)0xE02000A4)
#define CLK_SRC1 (*(volatile unsigned long *)0xe0100204)
#define CLK_DIV1 (*(volatile unsigned long *)0xe0100304)
#define DISPLAY_CONTROL (*(volatile unsigned long*)0xe0107008)
#define VIDCON0 (*(volatile unsigned long *)0xF8000000)
#define VIDCON1 (*(volatile unsigned long *)0xF8000004)
#define VIDTCON2 (*(volatile unsigned long *)0xF8000018)
#define WINCON0 (*(volatile unsigned long *)0xF8000020)
#define WINCON2 (*(volatile unsigned long*)0xF8000028)
#define VIDOSD0A (*(volatile unsigned long *)0xF8000040)
#define VIDOSD0B (*(volatile unsigned long *)0xF8000044)
#define VIDOSD0C (*(volatile unsigned long *)0xF8000048)
#define SHADOWCON (*(volatile unsigned long*)0xF8000034)
#define VIDW00ADD0B0 (*(volatile unsigned long*)0xF80000A0)
#define VIDW00ADD1B0 (*(volatile unsigned long*)0xF80000D0)
#define VIDTCON0 (*(volatile unsigned long *)0xF8000010)
#define VIDTCON1 (*(volatile unsigned long *)0xF8000014)
//下面注释的参数是本开发板厂家出厂参数
#define HSPW(40) // 1~40 DCLK
#define HBPD (10 -1) // 46
#define HFPD (240 -1) // 16 - 210 -354
#define VSPW(20) // 1~20 DCLK
#define VBPD (10 -1) // 23
#define VFPD (30 -1) // 7 -22 - 147
// FB地址(即显存地址)
#define FB_ADDR (0x23000000)//随便定,除了23,还可以25、27、
#define ROW (480)
#define COL (800)
#define HOZVAL (COL-1)
#define LINeval_r (ROW-1)
#define XSIZE COL
#define YSIZE ROW
// 初始化LCD
void lcd_init(void)
{
// 配置引脚用于LCD功能
GPF0CON = 0x22222222;
GPF1CON = 0x22222222;
GPF2CON = 0x22222222;
GPF3CON = 0x22222222;
// 打开背光 GPD0_0(PWMTOUT0)
GPD0CON &= ~(0xf<<0);
GPD0CON |=(1<<0); // output mode
GPD0DAT &=~(1<<0); // output 0 to enable backlight
// 10: RGB=FIMD I80=FIMD ITU=FIMD
DISPLAY_CONTROL = 2<<0;
// bit[26~28]:使用RGB接口
// bit[18]:RGB 并行
// bit[2]:选择时钟源为HCLK_DSYS=166MHz
VIDCON0 &= ~( (3<<26)|(1<<18)|(1<<2));
// bit[1]:使能lcd控制器
// bit[0]:当前帧结束后使能lcd控制器
VIDCON0 |= ( (1<<0)|(1<<1) );
// bit[6]:选择需要分频
// bit[6~13]:分频系数为5,即VCLK = 166M/(4+1) = 33M
VIDCON0 |= 4<<6 | 1<<4;
// H43-HSD043I9W1.pdf(p13) 时序图:VSYNC和HSYNC都是低脉冲
// s5pv210芯片手册(p1207) 时序图:VSYNC和HSYNC都是高脉冲有效,所以需要反转
VIDCON1 |= 1<<5 | 1<<6;
// 设置时序
VIDTCON0 = VBPD<<16 | VFPD<<8 |VSPW<<0;
VIDTCON1 = HBPD<<16 | HFPD<<8 |HSPW<<0;
// 设置长宽(物理屏幕)
VIDTCON2 = (LINEVAL << 11) | (HOZVAL << 0);
// 设置window0
// bit[0]:使能
// bit[2~5]:24bpp(RGB888)
WINCON0 |= 1<<0;
WINCON0 &= ~(0xf << 2);
WINCON0 |= (0xB<<2) | (1<<15);
#define LeftTopX 0
#define LeftTopY 0
#define RightBotX 799//可以设置得显存空间更大,1920,不过要看内存大小
#define RightBotY 479
// 设置window0的上下左右
// 设置的是显存空间的大小
VIDOSD0A = (LeftTopX<<11) | (LeftTopY << 0);
VIDOSD0B = (RightBotX<<11) | (RightBotY <<0);
VIDOSD0C = (LINEVAL + 1) * (HOZVAL + 1);
// 设置fb的地址(映射空间地址)(像素需要3个点,不过要像素对齐,所以是乘以4)
VIDW00ADD0B0 = FB_ADDR;
VIDW00ADD1B0 = (((HOZVAL + 1)*4 + 0) * (LINEVAL + 1)) &(0xffffff);
// 使能channel 0传输数据
SHADOWCON = 0x1;
}
在编写代码中,发现S5PV210数据手册中P1249出现一个小错误,现截图提醒:
0 0
- S5PV210之LCD
- GEC210(S5PV210)裸机驱动之LCD(1)
- S5PV210之LCD画图、字符串、显示图…
- S5PV210系列 (裸机十七)之 LCD显示器
- s5pv210 hx8369 lcd配制
- S5PV210 -- HX8369 LCD 驱动
- S5PV210 LCD 驱动
- s5pv210 LCD驱动移植
- S5PV210 LCD控制器
- s5pv210 LCD控制器初始化
- S5PV210的LCD控制器
- S5PV210 LCD屏
- S5PV210----裸机LCD驱动
- s5pv210,lcd驱动,x210,驱动
- s5pv210——LCD基础理论
- s5pv210 android hdmi与LCD异步显示之fb2多线程操作驱动修改
- S5pv210 LCD 驱动 时序相关(转)
- TFT LCD在S5PV210平台调试记录
- 分析Linux下静态链接库和动态链接…
- 分析全局变量、局部变量、静态全局…
- restrict关键字用法
- 链表编程实战(一):单链表
- 链表编程实战(二):双链表
- S5PV210之LCD
- S5PV210之LCD画图、字符串、显示图…
- 解决虚拟机用校园网不能上网问题
- ECO: Efficient Convolution Operators for Tracking视频目标跟踪论文笔记(PPT版)
- 设置开发板与ubuntu虚拟机ping通
- tftp的作用和Ubuntu12.04搭建tftp…
- Java获取访问服务端的客户端IP和MAC地址
- 什么是IP地址、子网掩码和网关
- NOR Flash、NAND Flash…