ARM920T处理器S3C2440A驱动RGB接口TFT LCD的研究
1 引言
随着科技的进步,TFT LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。带触摸屏的TFT LCD模组在系统应用中不仅能为人机界面提供高质量的画面显示,而且能提供更直观、方便的交互性输入。TMT035DNAFWU1是深圳天马微电子股份有限公司生产的8.89 cm(3.5 in)TFT LCD模组,该模组内置了LCD驱动器,集成了四线电阻式触摸屏和背光电路。S3C2440A 是三星公司设计的一款基于ARM920T内核的32位嵌入式RISC(reduced instructions set computer)微处理器,它的最高工作频率可达533 MHz,内部集成了通用的LCD控制器、8通道10位ADC和触摸屏接口,且具备高性能、低功耗的优点,适用于智能手机、便携式媒体播放器、手持导航仪等领域。本文基于S3C2440A嵌入式系统,以TMT035DNAFWU1为显示设备,设计了TFT LCD驱动电路,并完成Linux下驱动显示效果的调试。
2 TFT LCD接口时序
TMT035DNAFWU1的显示分辨率为320×240,采用24位数字RGB接口,可以显示16.7 M颜色。
RGB接口是为TFT LCD模组提供高品质显示而设计的接口,该接口可以高速、低功耗地完成动画显示,其中包含4个重要的控制信号VSYNC、HSYNC、DCLK 和VDEN,分别用于帧、行、像素的数据传输。
图1为TMT035DNAFWU1模组RGB接口时序示意图。
图1 RGB接口时序图
3 S3C2440A LCD控制器介绍
S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块,其控制器框图如图2所示。
图2 S3C2440A LCD控制器框图
3.1 控制总框图
LCD控制器主要由REGBANK、LCDCDMA两大部分组成,用于产生必要的控制信号和传输数据信号,如图2所示。REGBANK有17个可编程寄存器组和256×16的调色板存储器,用来设定LCD控制器。LCDCDMA 是一个专用的DMA(Direct Memory Access),自动从帧存储器传输视频数据到LCD控制器,视频数据可以不经CPU处理直接显示在屏上。TIMEGEN 由可编程逻辑器件组成,产生VFRAME/VSYNC、VLINE/HSYNC、VCLK/DCLK、VM/VDEN信号等,以支持不同的LCD驱动器的接口时序和速率。LPC3600与LCC3600是专用LCD控制器,在此不做详细介绍。
3.2 TFT控制器介绍
通过对REGBANK 寄存器组中的LCDCON1/2/3/4/5进行配置,TIMEGEN产生可编程控制信号来支持不同类型的LCD驱动器。
VSYNC和HSYNC脉冲与LCDCON2/3的HOZVAL和LINEVAL设置相关,HOZVAL和LINEVAL的值由LCD屏的分辨率决定,如下公式:
HOZVAL=(Horizontal display size)-1 (1)
LINEVAL=(Vertical display size)-1 (2)
VCLK的频率取决于LCDCON1中CLKVAL的设置,在LCDCON1中配置,VCLK和CLKVAL的关系如下(CLKVAL的最小值是0):
VCLK(Hz)=HCLK/[(CLKVAL+1)×2] (3)
HCLK为S3C2440A 中PLL时钟发生器产生的时钟信号。
VSYNC的频率即为帧频,它与LCDCON1/2/3/4均有关,计算公式如下:
Frame Rate=1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)1×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]} (4)
公式(1)~(4)各参数数值的设置方法在§5.2中给出。
4 驱动电路设计
除数据传输信号接口外,TFT LCD模组的驱动电路还包括提供给模组的电源电路、VGL、VGH、VCOM 电压电路等。根据TFT LCD模组的接口和S3C2440A 内嵌的控制器输出管脚,完成LCD显示的控制线路设计。电路接口设计如图3所示。
图3 TFT LCD显示接口电路设计
VCOM 电压信号由TFT LCD模组上SOURCEDRIVER IC输出的POL信号提供。POL信号经过VCOM BUFFER电路,产生VCOM电压信号提供给TFT LCD模组。TFT LCD模组采用行翻转方式驱动,设计的VCOM BUFFER 电路能够完成VCOM电压的交流电压成分和直流电压成分的调节。通过调节VCOM BUFFER电路,使VCOM 中心点电压及其幅值达到应用的要求,有效地消除TFT LCD显示闪烁问题并改善显示质量。
5 Linux下驱动程序软件设计
5.1 帧缓冲设备
帧缓冲为Linux 2.2.XX以上版本内核中的一种驱动程序接口。该接口采用mmap系统调用,将显示设备抽象为帧缓冲区,允许上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制操作。帧缓冲设备属于字符设备,采用“文件层-驱动层”的接口方式。
5.2 LCD驱动设计
TFT LCD驱动程序设计的主要工作包括:初始化S3C2440A 的LCD控制器LCDCON1~5,通过写寄存器设置显示模式和颜色数,然后分配LCD显示缓冲区。根据TMT035DNAFWU1接口时序及显示要求,屏幕显示分辨率Horizontal display size=320,Vertical display size=240,VCLK=6.4 MHz,而HCLK=133 MHz,故CLKVAL=9。缓冲区大小为:点阵行数×点阵列数×用于表示一个像素的比特数/8。缓冲区通常分配在大容量的片外SDRAM 中,起始地址保存在LCD控制寄存器中,需要分配的显示缓冲区为150 kB。最后是初始化一个fb_info结构,填充其中的成员变量,并调用fbmem.C里的register_framebuffer(struct fb_info *fb info)将fb_info登记入内核。
5.3 RGB接口显示参数调整
S3C2440A 的LCD 控制寄存器主要有:LCDCON1~5。LCDCON1可以对LCD的类型、数据位数、是否需要VDEN输出及DCLK进行设置;LCDCON2主要对VBPD、VFPD、VSPW进行设置;LCDCON3及LCDCON4对HBPD、HFPD、HSPW 进行设置;LCDCON5可以对DCLK、HSYNC、VSYNC 的极性做设置。图4为RGB接口显示工作原理示意图,各个参数在实际显示中的作用效果见图4所示。
图4 RGB接口显示工作原理
图4中,最终显示区域(DISPLAY AREA)是由像素时钟信号(DCLK)、行同步信号(HSYNC)、帧同步信号(VSYNc)、数据使能信号(VDEN/ENABLE)共同作用的结果,其大小及位置由各参数实际配置来确定,其中HSPW、HBPD及HFPD确定显示区域的行有效数据信息,VSPW、VBPD和VFPD确定显示区域中帧有效数据信息。
基于Linux下驱动显示程序,以下为调试成功的部分源代码:
/******s3c2440fb.c******/
#define H_SW 35;
#define H_FP 15;
#define H_BP 30;
#define V_SW 5;
#define V_FP 5;
#define V_BP 10;
……
static struct s3c2440fb_mach_info xxx_stn_info __initdata={
pixclock:PIXEL_CLOC, hpp: PIXEL_BPP,
xres:H_RESOLUTION, yres: V_RESOLUTION,
hsync_len: H_SW, vsync_len : V_SW,
left_margin: H_BP, upper_margin:V_BP,
right_margin:H_FP, lower_margin:V_FP,
sync:0, cmap_static:1,
reg:{
lcdcon1: LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(12),
lcdcon2: LCD2_VBPD(V_BP) | LCD2_VFPD(V_FP) | LCD2_VSPW(V_SW),
lcdcon3: LCD3_HBPD(H_BP) | LCD3_HFPD(H_FP),
lcdcon4: LCD4_HSPW(H_SW),
lcdcon5: LCD5_FRM565 | LCD5_INVVLINE | LCD5_INVVFRAME | LCD5_HWSWP | LCD5_PWREN,
},
};
在实际的驱动程序编写过程中,不同的TFTLCD模组的参数会有所不同,因此需要根据实际数据的有效位置进行相关的参数调整。图5为RGB接口参数配置调整前后的系统显示对比效果图。如果软件初始化设置中,未能正确地分配HSPW、HBPD和HFPD,行有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的整体左右偏移,如图5(a)所示,液晶显示器显示画面向左偏移。同理,未能正确地配置VSPW、VBPD和VFPD,帧数据中有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的上下偏移。
5.4 触摸屏驱动设计
设置触摸屏接口为等待中断模式(INT_TC中断),如果中断发生,立即激活相应的AD转换。转换模式一般选择分离的X/Y轴坐标转换模式或者自动(连续的)X/Y轴坐标转换模式来获取触摸点的X/Y坐标。在得到触摸点的X/Y轴坐标值后,返回到等待中断模式。触摸屏的驱动流程如图6。
图6 触摸屏控制流程图
触摸屏设备在Linux系统中也被定义为一个字符设备,需要对触摸屏设备驱动程序中的全局变量struct TS_DEV进行设置,该变量用来保存触摸屏的相关参数:等待处理的消息队列、当前采样数据、上一次采样数据等信息,变量定义如下:
typedef struct{
unsigned int penStatus;
/* PEN_UP,PEN_DOWN,PEN_SAMPLE */
TS_RET buf[MAX_TS_BUF];
/*环形缓冲区*/
unsigned int head,tail;
/* 环形缓冲区的头、尾 */
wait_queue_head_t wq;
spinlock_t lock;
}TS_DEV ;
根据触摸屏对应TFT LCD的分辨率大小,对环形缓冲区的大小进行初始化配置。
6 结论
分析了RGB接口的TFT LCD模组接口工作时序,以ARM920T内核的S3C2440A处理器为核心,加外围电路构建了相应的驱动电路,完成Linux显示驱动程序开发,实现了系统清晰稳定的显示。带触摸屏的TFT LCD模组驱动电路设计及显示效果调节方法为各种手持数码电子产品、导航仪等嵌入式系统设计提供了一套完整的解决方案。
作者:纪宁宁,孙灵燕
来源:[http://www.jdzj.com]机电之家·机电行业电子商务平台!
基于S3C2440A的TFT LCD驱动电路接口设计
Jenny / 2009-07-21
本文基于S3C2440A嵌入式系统,以TMT035DNAFWU1为显示设备,探讨TFT LCD驱动电路的设计及其在Linux下驱动显示效果的调试。该带触摸屏的TFT LCD模组驱动电路设计及显示效果调节方法将为各种手持数码电子产品、导航仪等嵌入式系统设计提供了一套完整的解决方案。
一、TFT LCD接口时序
TMT035DNAFWU1的显示分辨率为320×240,采用24位数字RGB接口,可以显示16.7 M颜色。
RGB接口是为TFT LCD模组提供高品质显示而设计的接口,该接口可以高速、低功耗地完成动画显示,其中包含4个重要的控制信号VSYNC、HSYNC、DCLK 和VDEN,分别用于帧、行、像素的数据传输。
图1为TMT035DNAFWU1模组RGB接口时序示意图。
图1 RGB接口时序图
二、S3C2440A LCD控制器介绍
S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块,其控制器框图如图2所示。
RGB2
图2 S3C2440A LCD控制器框图
1、控制总框图
LCD控制器主要由REGBANK、LCDCDMA两大部分组成,用于产生必要的控制信号和传输数据信号,如图2所示。REGBANK有17个可编程寄存器组和256×16的调色板存储器,用来设定LCD控制器。LCDCDMA 是一个专用的DMA(Direct Memory Access),自动从帧存储器传输视频数据到LCD控制器,视频数据可以不经CPU处理直接显示在屏上。TIMEGEN 由可编程逻辑器件组成,产生VFRAME/VSYNC、VLINE/HSYNC、VCLK/DCLK、VM/VDEN信号等,以支持不同的LCD驱动器的接口时序和速率。LPC3600与LCC3600是专用LCD控制器,在此不做详细介绍。
2、TFT控制器介绍
通过对REGBANK 寄存器组中的LCDCON1/2/3/4/5进行配置,TIMEGEN产生可编程控制信号来支持不同类型的LCD驱动器。
VSYNC和HSYNC脉冲与LCDCON2/3的HOZVAL和LINEVAL设置相关,HOZVAL和LINEVAL的值由LCD屏的分辨率决定,如下公式:
HOZVAL=(Horizontal display size)-1 (1)
LINEVAL=(Vertical display size)-1 (2)
VCLK的频率取决于LCDCON1中CLKVAL的设置,在LCDCON1中配置,VCLK和CLKVAL的关系如下(CLKVAL的最小值是0):
VCLK(Hz)=HCLK/[(CLKVAL+1)×2] (3)
HCLK为S3C2440A 中PLL时钟发生器产生的时钟信号。
VSYNC的频率即为帧频,它与LCDCON1/2/3/4均有关,计算公式如下:
Frame Rate=1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)1×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]} (4)
公式(1)~(4)各参数数值的设置方法在§5.2中给出。
三、驱动电路设计
除数据传输信号接口外,TFT LCD模组的驱动电路还包括提供给模组的电源电路、VGL、VGH、VCOM 电压电路等。根据TFT LCD模组的接口和S3C2440A 内嵌的控制器输出管脚,完成LCD显示的控制线路设计。电路接口设计如图3所示。
RGB3
图3 TFT LCD显示接口电路设计
VCOM 电压信号由TFT LCD模组上SOURCEDRIVER IC输出的POL信号提供。POL信号经过VCOM BUFFER电路,产生VCOM电压信号提供给TFT LCD模组。TFT LCD模组采用行翻转方式驱动,设计的VCOM BUFFER 电路能够完成VCOM电压的交流电压成分和直流电压成分的调节。通过调节VCOM BUFFER电路,使VCOM 中心点电压及其幅值达到应用的要求,有效地消除TFT LCD显示闪烁问题并改善显示质量。
四、 Linux下驱动程序软件设计
1、帧缓冲设备
帧缓冲为Linux 2.2.XX以上版本内核中的一种驱动程序接口。该接口采用mmap系统调用,将显示设备抽象为帧缓冲区,允许上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制操作。帧缓冲设备属于字符设备,采用“文件层-驱动层”的接口方式。
2、 LCD驱动设计
TFT LCD驱动程序设计的主要工作包括:初始化S3C2440A 的LCD控制器LCDCON1~5,通过写寄存器设置显示模式和颜色数,然后分配LCD显示缓冲区。根据TMT035DNAFWU1接口时序及显示要求,屏幕显示分辨率Horizontal display size=320,Vertical display size=240,VCLK=6.4 MHz,而HCLK=133 MHz,故CLKVAL=9。缓冲区大小为:点阵行数×点阵列数×用于表示一个像素的比特数/8。
缓冲区通常分配在大容量的片外SDRAM 中,起始地址保存在LCD控制寄存器中,需要分配的显示缓冲区为150 kB。最后是初始化一个fb_info结构,填充其中的成员变量,并调用fbmem.C里的register_framebuffer(struct fb_info *fb info)将fb_info登记入内核。
3、RGB接口显示参数调整
S3C2440A 的LCD 控制寄存器主要有:LCDCON1~5。LCDCON1可以对LCD的类型、数据位数、是否需要VDEN输出及DCLK进行设置;LCDCON2主要对VBPD、VFPD、VSPW进行设置;LCDCON3及LCDCON4对HBPD、HFPD、HSPW 进行设置;LCDCON5可以对DCLK、HSYNC、VSYNC 的极性做设置。图4为RGB接口显示工作原理示意图,各个参数在实际显示中的作用效果见图4所示。
RGB4
图4 RGB接口显示工作原理
图4中,最终显示区域(DISPLAY AREA)是由像素时钟信号(DCLK)、行同步信号(HSYNC)、帧同步信号(VSYNc)、数据使能信号(VDEN/ENABLE)共同作用的结果,其大小及位置由各参数实际配置来确定,其中HSPW、HBPD及HFPD确定显示区域的行有效数据信息,VSPW、VBPD和VFPD确定显示区域中帧有效数据信息。
基于Linux下驱动显示程序,以下为调试成功的部分源代码:
/******s3c2440fb.c******/
#define H_SW 35;
#define H_FP 15;
#define H_BP 30;
#define V_SW 5;
#define V_FP 5;
#define V_BP 10;
……
static struct s3c2440fb_mach_info xxx_stn_info __initdata={
pixclock:PIXEL_CLOC, hpp: PIXEL_BPP,
xres:H_RESOLUTION, yres: V_RESOLUTION,
hsync_len: H_SW, vsync_len : V_SW,
left_margin: H_BP, upper_margin:V_BP,
right_margin:H_FP, lower_margin:V_FP,
sync:0, cmap_static:1,
reg:{
lcdcon1: LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(12),
lcdcon2: LCD2_VBPD(V_BP) | LCD2_VFPD(V_FP) | LCD2_VSPW(V_SW),
lcdcon3: LCD3_HBPD(H_BP) | LCD3_HFPD(H_FP),
lcdcon4: LCD4_HSPW(H_SW),
lcdcon5: LCD5_FRM565 | LCD5_INVVLINE | LCD5_INVVFRAME | LCD5_HWSWP | LCD5_PWREN,
},
};
在实际的驱动程序编写过程中,不同的TFTLCD模组的参数会有所不同,因此需要根据实际数据的有效位置进行相关的参数调整。图5为RGB接口参数配置调整前后的系统显示对比效果图。如果软件初始化设置中,未能正确地分配HSPW、HBPD和HFPD,行有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的整体左右偏移,如图5(a)所示,液晶显示器显示画面向左偏移。同理,未能正确地配置VSPW、VBPD和VFPD,帧数据中有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的上下偏移。
4、触摸屏驱动设计
设置触摸屏接口为等待中断模式(INT_TC中断),如果中断发生,立即激活相应的AD转换。转换模式一般选择分离的X/Y轴坐标转换模式或者自动(连续的)X/Y轴坐标转换模式来获取触摸点的X/Y坐标。在得到触摸点的X/Y轴坐标值后,返回到等待中断模式。触摸屏的驱动流程如图6。
RGB5
图6 触摸屏控制流程图
触摸屏设备在Linux系统中也被定义为一个字符设备,需要对触摸屏设备驱动程序中的全局变量struct TS_DEV进行设置,该变量用来保存触摸屏的相关参数:等待处理的消息队列、当前采样数据、上一次采样数据等信息,变量定义如下:
typedef struct{
unsigned int penStatus;
/* PEN_UP,PEN_DOWN,PEN_SAMPLE */
TS_RET buf[MAX_TS_BUF];
/*环形缓冲区*/
unsigned int head,tail;
/* 环形缓冲区的头、尾 */
wait_queue_head_t wq;
spinlock_t lock;
}TS_DEV ;
根据触摸屏对应TFT LCD的分辨率大小,对环形缓冲区的大小进行初始化配置。
温馨提示:龙人计算机嵌入式研发中心拥有强大的嵌入式研发团队,根据客户的委托设计要求,研发人员能实现多种产品的嵌入式设计,同时还能提供项目开发的全程技术支持与完整解决方案。此外,针对各个嵌入式研发及应用领域,龙人提供基于各系列芯片的优质开发板产品,如果您有相关产品需求或研发方案合作,欢迎与龙人计算机嵌入式研发中心联系。
咨询电话:+83662100,83346939
基于三星S3C2440A的Micro2440视觉处理平台的构建
时间:2010-04-13 11:43:38 来源:电子技术应用 作者:李红岩 邱联奎
嵌入式机器人系统通常需要高速、功能接口丰富的处理器系统,而最新的Micro2440开发板采用了三星S3C2440A处理器,该处理器基于ARM920T内核,工作频率400 MHz,0.13 μm的工艺制造,具有高性价比、低功耗、高性能的特点[1],同时内部集成了LCD、CMOS摄像头等接口模块,能够高速快捷地完成视频信号处理,而且丰富的外围接口提供了系统良好的扩展特性。另外Micro2440核心板可以与底板分离单独运行,为进一步缩小体积预留了空间。无论是基于图像的处理还是视频流的处理,首先都需要完成视觉平台的构建,本文在Micro2440开发板的基础上实现了视觉处理平台,完成了图像、视频的处理和显示功能,并提出了基于颜色通道的背景差分法,完成目标物体中心的实时检测。 1 系统整体流程 该平台设计首先完成了基本的硬件初始化,而CMOS摄像头驱动以及相应的图像处理作为一个单独的模块进行加载运行。该嵌入式系统的加载启动任务是由BootLoader(BootLoader是嵌入式系统加电后运行的第一段程序)来完成的。BootLoader分为两个阶段:第一阶段通常由汇编语言实现完成部分硬件的初始化,创建C语言运行环境;第二阶段继续进行初始化完成MMU、LCD显示等设置。在系统完成基本硬件的初始化工作后,便可以启动摄像头进行图像、视频的采集处理,系统结构如图1所示。
BootLoader的第一阶段启动的流程依次为:ARM启动或重启→设置中断向量→禁止看门狗、中断→设置时钟→Sdram初始化→复制RO/RW段到Sdram→ZI段清零→堆栈初始化→跳转到main函数。第二阶段则完成了以下操作:main函数→端口初始化→设置中断请求→设置主频→串口初始化→设置MMU→打开Cache→LCD初始化。ARM系统MMU的设计为了便于实现,采用了2段式的虚拟地址分配方式,每个页(Section)的大小设置为1MB;同时为了减少对S3C2440地址的修改,采用了虚拟地址与物理地址相同的地址分配方式。 2 LCD设计 Micro2440开发板配有240×320/NEC3.5英寸T- FT真彩液晶屏,正确设置后能够显示清晰的图像、视频。S3C2440A的LCD控制器支持的屏幕大小包括480×640、240×320以及160×160等尺寸,能够产生VFRAME、VLINE、VCLK、VM等控制信号。这些控制信号的使用需要配置S3C2440A的C端口为LCD控制。同时LCD的数据线VD[0]~ VD[7]也由C端口控制,VD[8]~VD[23]则由D端口控制,需要设置做为LCD数据线。由于使用的是TFT真彩液晶屏,需要把LCD控制寄存器设置为TFT模式,这里设置为TFT的16BPP(Bits Per Pixel)模式;同时还需要对LCDCON5进一步设置为5:6:5或5:5:5:1格式,这里设置RGB格式为5:6:5格式,此信号在OV9650传输如图2所示[2]。以便和摄像头的视频输出格式相一致,否则需要进行格式的转化。在设置完帧缓存地址后,写入数据,便可以实现图像的显示,格式转换过程如图3所示。
3 摄像头驱动设计 Micro2440开发板的配套摄像头型号为OV9650,该摄像头具有130万像素,输出视频格式为YCbCr格式,同时S3C2440A的CAMIF(Camera Interface) 提供了ITU-R BT.601/656 8位标准输入的支持[3],最大可采样4 096×4 096像素的图像[4],在Preview模式下支持输出RGB 16/24 bit格式,这对于数字图像的处理带来了便利条件。S3C2440A的CAMIF与OV9650的连接如图4所示。
OV9650驱动流程如下:设置Camera全局控制寄存器,并复位→配置S3C2440A的J端口→使能OV9650的Normal模式→设置接口时钟→通过I2CSCL,I2C-SDA与SID_C, SID_D信号建立S3C2440A与OV9650的通信→设置OV9650的寄存器组→初始化3C2440A摄像头接口,包括捕获图像的宽、高、偏移、输入格式、输出格式、缓冲区地址等→将OV9650将LCD缓冲区地址更改到Camera的缓冲区地址,以显示Camera图像→清除中断→设置中断处理函数→开始捕获图像。 其中,OV9650与S3C2440A的通信采用了两线制的SCCB (Serial Camera Control Bus) [5],通过该接口可实现各种图像增强和控制功能,如自动曝光、自动增益、自动白平衡控制等,以及控制图像色彩、饱和度、锐化、镜头校准等[6]。S3C2440A控制端口产生SCCB的启动、停止等控制信号,SCCB 协议中开始条件定义为:在SID_C 为高电平时, SID_D出现一个下降沿,则SCCB开始传输;停止条件定义为:在SID_C为高电平时, SID_D出现一个上升沿,则SCCB停止传输;在数据传输时,SID_C为高电平时,需要SID_D上的数据的稳定,以便传输,如图5所示。
以写一位数据传输为例,基本流程为:将数据放在SID_D上→启动SID_C进行传输→延时传输后停止SID_C;同理,传输8位数据则需循环8次。类似地,读取时基本流程为:启动SID_C→读取SID_D→停止SID_C。一个完整的数据传输的写周期顺序为:写从设备的ID→写设备寄存器的地址→将此寄存器中写入数据。
4 图像处理设计 在获得摄像头采集的图像后,常常需要对捕获的图像进行处理,并把处理的结果实时地显示出来。本文通过设计在帧中断处理函数中进行图像处理,可以很好地进行处理后图像的动态显示。此时需要将OV9650获得的图像的buffer地址设置到一临时空间中,完成处理后再送入LCD的buffer地址中进行显示;否则,Camera和图像处理函数同时写LCD的buffer地址,将出现LCD显示不正确的情况。图像处理流程如图6所示。
5 图像获取结果 图7分别是在室内环境下,桌面上一个普通乒乓球在摄像头视频显示的结果(左)和在动态处理后摄像头视频显示(右)的截图,其中视频的下方同时显示了一横条图片。图像处理函数完成了视频在绿色通道中的同步显示。经验证,图像处理的结果良好,色彩正常,并且无明显滞后等异常现象。
6 运动目标检测 获取OV9650图像后,在此系统平台上完成了对运动物体的目标检测,取得了良好效果。常用的运动目标检测方法有:光流法、帧差分法以及背景差分法[7]。光流法大多计算复杂,占用CPU时间较多;帧差分法常常检测目标不够完整;因而针对嵌入式平台采用了运算速度较快的背景差分法。实验首先采用了基于灰度图像的背景差分法,但效果不够理想:设f(i,j)为一帧视频图像序列;Rf、Gf、Bf为其中的任一像素的红绿蓝分量,i,j为像素的横坐标和纵坐标。B(i,j)为背景图像序列,同样地,RB、GB、BB为其中的红绿蓝分量,依据以下公式计算灰度值(类似黑白摄像头获得的灰度值): 背景差为: fB(i,j)=f(i,j)-B(i,j)。此系统中RGB格式为5:6:5格式,红绿蓝分量均取5位,绿色分量舍弃了最低位。获得的差分图像分别以红色显示和二值化获得的结果如图8所示。
如图8(右)所示,由于灰度图像的背景差分法获得的像素值普遍较低,因而屏幕亮度较暗,在室内光线中LCD屏幕显示很不清晰;图8(左)为进行二值化后背景差分法的图像,也仅能够得到小球的部分区域,效果不够理想。于是本文针对于彩色图像提出了基于颜色通道的背景差分法,可以获得理想的效果。设P为颜色通道(这里红色通道取值为0xF800),则基于颜色通道的背景差分法用如下公式计算:
背景差为: fB(i,j)=f(i,j)-B(i,j)。若取阀值T则:fB(i,j)=fB(i,j)-T。获得的差分图像分别在红色通道中显示和二值化所得的结果如图9所示。可见图9左图二值化后可获得乒乓球的圆形轮廓,十分清晰;而且在红色通道中的图像显示轮廓明亮,说明数值强度大抗干扰能力强。在获得图像后并自动计算出形心位置,在横轴和纵轴以白色直线显示中心位置,在以240×320分辨率输出时,平均速率达30帧/s,实现了对运动目标中心的实时检测,如图9右图所示。实验结果表明, 此基于Micro2440的视觉处理平台上能够很好地进行图像及视频的显示及处理。
本文基于Micro2440的视觉处理平台具有以下特点: (1)Micro2440平台提供了丰富的外围接口,方便功能扩展,S3C2440A自带有CAMIF(Camera Inter-face) 模块,无需接口转化电路,核心板与底板分离可以进一步缩小体积;(2)CPU工作频率 400 MHz,处理速度较快,OV9650高达130万像素,分辨率高。 在每完成一帧的视频采集后,能够及时地进行图像处理,并且图像处理的结果能够在LCD上同步显示;同时轻松转换便可以方便地得到标准24位BMP图像,为进一步数字图像处理提供了良好的平台。
模组LCD控制器-S3C2440A驱动RGB接口TFT LCD的研究
电力市场电网西北电网采取有效措施推动市场发经济我国货币货币政策应扩张扩张再扩张总线控制器系统基于DSP的运动控制太阳能控制器功率太阳能LED街灯的功放增益功率初学者入门 浅谈专业设备管网模块浅析自动灭火系统质变压器电动机线路无功补偿的优化系统控制器控制系统罗克韦尔自动总线接口芯片基于MC8051软核的星载燃油电流压力汽车燃油泵的检测与电脑正常故障三菱越野车隔日不能蔚然成风优盘方方面面Zippo组合电脑 LCD,模组,控制器,接口,电路随着科技的进步,TFT LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。带触摸屏的TFT LCD模组在系统应用中不仅能为人机界面提供高质量的画面显示,而且能提供更直观、方便的交互
随着科技的进步,TFT LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。带触摸屏的TFT LCD模组在系统应用中不仅能为人机界面提供高质量的画面显示,而且能提供更直观、方便的交互性输入。TMT035DNAFWU1是深圳天马微电子股份有限公司生产的8.89 cm(3.5 in)TFT LCD模组,该模组内置了LCD驱动器,集成了四线电阻式触摸屏和背光电路。S3C2440A 是三星公司设计的一款基于ARM920T内核的32位嵌入式RISC(reduced instructions set computer)微处理器,它的最高工作频率可达533 MHz,内部集成了通用的LCD控制器、8通道10位ADC和触摸屏接口,且具备高性能、低功耗的优点,适用于智能手机、便携式媒体播放器、手持导航仪等领域。本文基于S3C2440A嵌入式系统,以TMT035DNAFWU1为显示设备,设计了TFT LCD驱动电路,并完成Linux下驱动显示效果的调试。
TMT035DNAFWU1的显示分辨率为320×240,采用24位数字RGB接口,可以显示16.7 M颜色。
RGB接口是为TFT LCD模组提供高品质显示而设计的接口,该接口可以高速、低功耗地完成动画显示,其中包含4个重要的控制信号VSYNC、HSYNC、DCLK 和VDEN,分别用于帧、行、像素的数据传输。
图1为TMT035DNAFWU1模组RGB接口时序示意图。
图1 RGB接口时序图
3 S3C2440A LCD控制器介绍
S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块,其控制器框图如图2所示。
图2 S3C2440A LCD控制器框图
3.1 控制总框图
LCD控制器主要由REGBANK、LCDCDMA两大部分组成,用于产生必要的控制信号和传输数据信号,如图2所示。REGBANK有17个可编程寄存器组和256×16的调色板存储器,用来设定LCD控制器。LCDCDMA 是一个专用的DMA(Direct Memory Access),自动从帧存储器传输视频数据到LCD控制器,视频数据可以不经CPU处理直接显示在屏上。TIMEGEN 由可编程逻辑器件组成,产生VFRAME/VSYNC、VLINE/HSYNC、VCLK/DCLK、VM/VDEN信号等,以支持不同的LCD驱动器的接口时序和速率。LPC3600与LCC3600是专用LCD控制器,在此不做详细介绍。
3.2 TFT控制器介绍
通过对REGBANK 寄存器组中的LCDCON1/2/3/4/5进行配置,TIMEGEN产生可编程控制信号来支持不同类型的LCD驱动器。
VSYNC和HSYNC脉冲与LCDCON2/3的HOZVAL和LINEVAL设置相关,HOZVAL和LINEVAL的值由LCD屏的分辨率决定,如下公式:
HOZVAL=(Horizontal display size)-1 (1)
LINEVAL=(Vertical display size)-1 (2)
VCLK的频率取决于LCDCON1中CLKVAL的设置,在LCDCON1中配置,VCLK和CLKVAL的关系如下(CLKVAL的最小值是0):
VCLK(Hz)=HCLK/ (3)
HCLK为S3C2440A 中PLL时钟发生器产生的时钟信号。
VSYNC的频率即为帧频,它与LCDCON1/2/3/4均有关,计算公式如下:
Frame Rate=1/{×} (4)
公式(1)~(4)各参数数值的设置方法在§5.2中给出。
4 驱动电路设计
除数据传输信号接口外,TFT LCD模组的驱动电路还包括提供给模组的电源电路、VGL、VGH、VCOM 电压电路等。根据TFT LCD模组的接口和S3C2440A 内嵌的控制器输出管脚,完成LCD显示的控制线路设计。电路接口设计如图3所示。
图3 TFT LCD显示接口电路设计
VCOM 电压信号由TFT LCD模组上SOURCEDRIVER IC输出的POL信号提供。POL信号经过VCOM BUFFER电路,产生VCOM电压信号提供给TFT LCD模组。TFT LCD模组采用行翻转方式驱动,设计的VCOM BUFFER 电路能够完成VCOM电压的交流电压成分和直流电压成分的调节。通过调节VCOM BUFFER电路,使VCOM 中心点电压及其幅值达到应用的要求,有效地消除TFT LCD显示闪烁问题并改善显示质量。
智能卡机顶盒CA-技术课堂:数字电视技术100问(1) 地址服务器MAC-解析服务器虚拟化对网络配置有何湖水系统水源-南方地区开式湖水源热泵应用及模图片新闻一丝薄巾遮住无限风景(组图) 纸张成本系数快速计算印刷品用纸成本的方法设计图公司程序NC编程更自动化
|