LCD驱动程序(二)

发布者:RadiantSoul最新更新时间:2024-07-18 来源: cnblogs关键字:LCD  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

上节我们主要是对fb_info结构体的配置,对fb_info结构体的配置主要分为一下步骤:

static int lcd_init(void)
{
/* 1. 分配一个fb_info */
s3c_lcd = framebuffer_alloc(0, NULL);

/* 2. 设置 */
/* 2.1 设置固定的参数 */
/* 2.2 设置可变的参数 */
/* 2.3 设置操作函数 */
/* 2.4 其他的设置 */

/* 3. 硬件相关的操作 */
/* 3.1 配置GPIO用于LCD */
/* 3.2 根据LCD手册设置LCD控制器, 比如VCLK的频率等 */
/* 3.3 分配显存(framebuffer), 并把地址告诉LCD控制器 */

/* 4. 注册 */
register_framebuffer(s3c_lcd);

return 0;
}

本次主要讲的是硬件相关的操作:

配置GPIO参考LCD原理图、数据手册

配置LCD控制器需要参考LCD数据手册与LCD控制器相关的寄存器对它进行配置

垂直方向的LCD控制器寄存器配置参考图:

水平方向配置LCD控制器寄存器参考图:

/* 3.1 配置GPIO用于LCD */


gpbcon = ioremap(0x56000010, 8);

gpbdat = gpbcon+1;

gpccon = ioremap(0x56000020, 4);

gpdcon = ioremap(0x56000030, 4);

gpgcon = ioremap(0x56000060, 4);


*gpccon = 0xaaaaaaaa; /* GPIO管脚用于VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND */

*gpdcon = 0xaaaaaaaa; /* GPIO管脚用于VD[23:8] */


*gpbcon &= ~(3); /* GPB0设置为输出引脚 */

*gpbcon |= 1;

*gpbdat &= ~1; /* 输出低电平 */


*gpgcon |= (3<<8); /* GPG4用作LCD_PWREN */


/* 3.2 根据LCD手册设置LCD控制器, 比如VCLK的频率等 */


    lcd_regs = ioremap(0x4D000000, sizeof(struct lcd_regs));


    /* bit[17:8]: VCLK = HCLK / [(CLKVAL+1) x 2], LCD手册P14

     *            10MHz(100ns) = 100MHz / [(CLKVAL+1) x 2]

     *            CLKVAL = 4

     * bit[6:5]: 0b11, TFT LCD

     * bit[4:1]: 0b1100, 16 bpp for TFT

     * bit[0]  : 0 = Disable the video output and the LCD control signal.

     */

    lcd_regs->lcdcon1  = (4<<8) | (3<<5) | (0x0c<<1);


    /* 垂直方向的时间参数

     * bit[31:24]: VBPD, VSYNC之后再过多长时间才能发出第1行数据

     *             LCD手册 T0-T2-T1=4

     *             VBPD=3

     * bit[23:14]: 多少行, 320, 所以LINEVAL=320-1=319

     * bit[13:6] : VFPD, 发出最后一行数据之后,再过多长时间才发出VSYNC

     *             LCD手册T2-T5=322-320=2, 所以VFPD=2-1=1

     * bit[5:0]  : VSPW, VSYNC信号的脉冲宽度, LCD手册T1=1, 所以VSPW=1-1=0

     */

    lcd_regs->lcdcon2  = (3<<24) | (319<<14) | (1<<6) | (0<<0);



    /* 水平方向的时间参数

     * bit[25:19]: HBPD, VSYNC之后再过多长时间才能发出第1行数据

     *             LCD手册 T6-T7-T8=17

     *             HBPD=16

     * bit[18:8]: 多少列, 240, 所以HOZVAL=240-1=239

     * bit[7:0] : HFPD, 发出最后一行里最后一个象素数据之后,再过多长时间才发出HSYNC

     *             LCD手册T8-T11=251-240=11, 所以HFPD=11-1=10

     */

    lcd_regs->lcdcon3 = (16<<19) | (239<<8) | (10<<0);


    /* 水平方向的同步信号

     * bit[7:0]    : HSPW, HSYNC信号的脉冲宽度, LCD手册T7=5, 所以HSPW=5-1=4

     */    

    lcd_regs->lcdcon4 = 4;


    /* 信号的极性 

     * bit[11]: 1=565 format

     * bit[10]: 0 = The video data is fetched at VCLK falling edge

     * bit[9] : 1 = HSYNC信号要反转,即低电平有效 

     * bit[8] : 1 = VSYNC信号要反转,即低电平有效 

     * bit[6] : 0 = VDEN不用反转

     * bit[3] : 0 = PWREN输出0

     * bit[1] : 0 = BSWP

     * bit[0] : 1 = HWSWP 2440手册P413

     */

    lcd_regs->lcdcon5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) | (1<<0);


/* 3.3 分配显存(framebuffer), 并把地址告诉LCD控制器 */


s3c_lcd->screen_base = dma_alloc_writecombine(NULL, s3c_lcd->fix.smem_len, &s3c_lcd->fix.smem_start, GFP_KERNEL);

    

    lcd_regs->lcdsaddr1  = (s3c_lcd->fix.smem_start >> 1) & ~(3<<30);

    lcd_regs->lcdsaddr2  = ((s3c_lcd->fix.smem_start + s3c_lcd->fix.smem_len) >> 1) & 0x1fffff;

    lcd_regs->lcdsaddr3  = (240*16/16);  /* 一行的长度(单位: 2字节) */    

    

    //s3c_lcd->fix.smem_start = xxx;  /* 显存的物理地址 */

    /* 启动LCD */

    lcd_regs->lcdcon1 |= (1<<0); /* 使能LCD本身 */

    *gpbdat |= 1;     /* 输出高电平, 使能背光 */    


关键字:LCD  驱动程序 引用地址:LCD驱动程序(二)

上一篇:LCD驱动程序(一)
下一篇:USB设备驱动程序(一)

推荐阅读最新更新时间:2024-11-12 15:01

嵌入式开发(S5PV210)——LCD显示器
1、LCD介绍 1.LCD(Liquid Crystal Display)俗称液晶,这种材料的一大特点就是在电信号的驱动下液晶分子进行旋转,旋转会影响透光性,不同的透光性会透过不同的颜色的光,于是我们便看到显示屏上五颜六色的画面。 2.LCD是被动发光,LCD显示屏有一个背光板发出白光,液晶分子只是决定哪些波长的光透过去被人看到,但液晶本身并不会发光。这有点像月亮,本身不发光,被人们看到发光是反射太阳的光。 3.与之相对就有主动发光,比如CRT显示器和LED显示器。 4.应用领域:液晶显示器使用在电视机、手机、电脑等;户外大屏幕基本是使用LED,因为液晶是被动发光,背光强度有限,在户外光照这么强的境况下,根本看不清。 2、LC
[单片机]
嵌入式开发(S5PV210)——<font color='red'>LCD</font>显示器
华锐光电计划将TFT-LCD液晶面板产能增加至每月5万张
近日,据大河网报道称,华锐光电相关负责人王子寅表示,目前公司产能为每月约3万张大板,下一步计划是尽快将工厂的设计产能提高到每月5万张大板。 其举个例子称,“我们每天生产约1666张大板,3天生产的屏幕拼接起来相当于1个标准足球场的面积,可切割60万片5.5英寸的手机屏。在产品的研发和设计方面,我们将会不断推出消费电子产品,例如,穿戴手表、智能手机、车载显示、工业显示、医疗显示等,提高我们产品显示的色彩和产品刷新率,最终达到行业内标杆水准。” 据了解,华锐光电是2017年作为河南省招商引资重点项目落地港区的,公司引进了韩国LG第5代TFT-LCD液晶面板生产线。在此之前,该省凭借富士康等大型集团及其供应链体系的进驻取得了电子信息产业
[手机便携]
G20周刊 | 利元亨前三季度营收达16.58亿元/配天LCD靶材自动化生产解决方案落地
广告摘要声明广告 01.利元亨前三季度营收达16.58亿元 近日,利元亨发布了2021年第三季度报告。数据显示,第三季度利元亨实现营收6.1亿元,前三季度实现营收16.58亿元,同比增长71.41%;第三季度归母净利润达到5789万元,前三季度实现归母净利润1.57亿元,同比增长71.36%。(详情请点击) 02. 华成工控上榜《2021H1中国驱控一体控制系统出货量排行榜TOP5》 近日,高工机器人产业研究所(GGII)发布《2021H1中国驱控一体控制系统出货量排行榜TOP5》,其中,华成工控荣登榜首。GGII通过调研,统计了业内2021年上半年(1-6月)驱控一体产品的出货量情况。从具体厂商来看,华成工控上半年(1-6月
[机器人]
LCD1602动态显示
仿真元原理图如下: /*------------------------------------- 功能:LCD1602局部动态显示 描述:在屏幕的第二行固定位置显示count: 后面接着动态显示按键次数(00 ~ 99) Author: Zhang Kaizhou Date: 2019-6-5 10:50:22 -------------------------------------*/ #include reg52.h #include string.h #define uchar unsigned char #define uint unsigned int uchar code table0 = { Press
[单片机]
<font color='red'>LCD</font>1602动态显示
51单片机系列——LCD1602显示计算器上按键字符
昨天研究了矩阵按键在proteus7.8上的仿真问题,今天直接上个实例,用LCD1602显示在计算器上按下的按键字符。 仿真图: LCD1602.h #ifndef _LCD1602_H_ #define _LCD1602_H_ #include reg52.h //重定义关键字 #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif /********************************** PIN口定义 ***************************
[单片机]
51单片机系列——<font color='red'>LCD</font>1602显示计算器上按键字符
分体式LCD显示马达控制与保护单元
0  引言   伴随着电子式电动机保护器的大力推广及应用,客户对这种新式的电子式保护装置的应用更加熟悉,同时也对产品的使用提出了更高要求,尤其是参数设定、故障查询等人机交互方面。 1  分体LCD显示方案的提出    前一代ARD3电动机保护器分为一体式、分体72F、分体90F,都采用LED(数码管,以下都以LED代表数码管)显示方式。在现场应用中LED显示方式亮度高,即使在光线不好的地方也可以达到一目了然的效果,使用寿命长,产品价格便宜。   与之相比LCD(液晶,以下都以LCD代表液晶)显示亮度不够,在产品附近才有比较好的显示效果,观看角度不同效果不同,和我们使用笔记本电脑时,显示屏旋转角度不同亮度不同一样。LCD产品价格较LE
[嵌入式]
LCD1602的滚动显示程序
**************************************LCD1602头文件*********************************/ #ifndef _LCD1602_H_ #define _LCD1602_H_ //输入方式设置 #define LCD_AC_AUTO_INCREMENT 0x06 //数据读、写操作后,AC自动增一 #define LCD_AC_AUTO_DECREASE 0x04 //数据读、写操作后,AC自动减一 #define LCD_MOVE_ENABLE 0x05 //数据读、写操作,画面平移 #define LCD_MOVE_DISENABL
[单片机]
大族激光:预计2020年智能机OLED屏将超LCD屏,出货达8.9亿片
近日,大族激光在最新披露的投资者关系活动记录表中称,OLED正逐步取代传统的LCD。 相关数据显示,预计到2020年,OLED在智能手机中的渗透率将超越LCD,整体OLED出货量在8.9亿片,成为主流显示方式。针对OLED显示屏的生产,大族激光显视与半导体装备事业部已成功为客户提供四类解决方案:激光切割、激光修复、激光剥离和自动画面检查。 据悉,显示面板的边角也要足够坚固以保证手机跌落时,面板不会轻易破损,这就要求对面板的边角做一些特殊的设计和处理(如R角,C角,U型挖槽,L型挖槽等。)这些处理会给面板厂和品牌厂带来挑战。因此,激光异形切割有可能成为全面屏面板的一种重要生产工艺。 玻璃异形切割的三种主流方法是刀轮、CNC研
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved