完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
文中基于对微处理器S3C2440A的显示控制模块和高性能视频D/A芯片ADV7120的研究,提出了一种便携式视频展示台的设计方案。本方案采用130万像素的OV9650摄像头采集实物、文档、图片或者过程的图像数据,利用S3C2440自带的LCD控制器来产生符合VGA显示要求的时序逻辑,ADV7120将数字RGB信号转换成VGA显示需要的模拟彩色信号。通过TFT—LCD扫描显示的时序与VGA扫描显示时序的匹配来驱动VGA显示。测试结果表明,方案切实可行,达到正常显示色彩信息的要求。
|
|
相关推荐
3个回答
|
|
视频展示台是将实物、文稿、图片和过程等信息转换为图像信号输出在投影机、显示器上展示出来的一种演示设备。便携式视频展示台由于具有体积小,易于携带等优点,被广泛用于教学、大型会议及产品展示等场合,具有较大的研究前景。本视频展示台的设计采用三星基于ARM9内核的S3C2440A芯片,运用模块化的设计原则;具有体积小、便携带、低功耗、易维护性等特点,整个系统的设计由两部分构成,分别是实物、图片、文档或者过程等图像采集部分和VGA传输显示部分。此视频展示台的显示分辨率为800x600。
1 视频展示台系统结构设计 本便携式视频展示台采用三星S3C2440A处理器,其CPU的工作频率可达400 MHz,可以很好的处理图像数据。它的外设包括:LCD控制器、CAMIF单元、UART接口、IICBUS接口、USB主从接口等。系统采用具有极快读写速度的2片32 MB的SDRAM来保证linux操作系统的流畅运行,采用具有掉电保护功能的128 MB的Nancmash来存放操作系统和驱动程序。此外,130万像素的ov9650摄像头用来采集视频图像数据,ADV 7120将数字RGB信号转换成VGA显示需要的模拟彩色信号,显示分辨率为800x600。电源管理模块能够提供多种供电,包括芯片内核电压采用1.8 V供电,芯片的IO口部分采用3.3 V供电。为了给实物、文档、图片或者演示过程提供照明光源,在ov9650摄像头旁边加了一圈led小灯。下图1是方案的硬件电路设计框图。 |
|
|
|
2 视频图像采集模块
2.1 视频采集硬件接口及其分析 视频采集模块是本便携式视频展示台的一个重要组块之一。本模块采用摄像头接口控制单元CAMIF和IIC总线来控制和传输OV9650摄像头采集实物、图片、文档或者过程等视频数据。选择CMOS传感器是因为它有功耗低、编程方便、成本低等优点。其主要引脚及功能描述如下:CAMCLKOUT是CPU输出的采样时钟,帧同步信号VSYNC、行同步信号HREF、像素时钟信号PCLK由OV9650内部产生,输入到S3C2440A芯片中,用于对图像采集进行控制。摄像头在每个PCLK脉冲过程中依次采集一个字节的数据,直到一帧图像数据采集完成。 摄像头采集的数据经过处理后进入帧缓冲区,帧缓冲区由4个Ping Pong存贮器组成,因此图像帧的读写操作可以同时进行。然后通过预览DMA连到AHB总线上,通过AHB总线将数据送往内存。整个过程由linux操作系统来控制,如图2所示。 2.2 视频采集驱动设计 file_operations结构是Linux2.6内核提供的一个标准化的文件操作实现接口。定义ov9650_ops为file_operations结构。编写用于上层软件接口函数: struct file_operations ov9650_ops= { open:ov9650_open, release:ov9650_release, read:ov9650_read, write:ov9650_write, iocfl:ov9650_ioctl, }; 通过这些调用函数,应用程序就可实现对CMOS摄像头的打开、关闭、视频数据的读取、内部寄存器的设置等进行操作。在启动驱动程序时,系统首先调用已经定义的ov9650摄像头驱动程序的入口函数init(ov9650_init)对摄像头进行初始化,初始化的主要内容是复位、通过IIC配置相关摄像头寄存器、摄像头采样时钟配置以及中断配置等,然后等待进一步命令。应用程序使用结束后,系统调用已经定义的ov9650出口函数exit(ov9650_exit)退出。 |
|
|
|
3 VGA显示模块
3.1 LCD控制器接口和VGA接口描述 本便携式视频展示台的另一个重要组块是VGA显示模块。S3C2440A带有LCD控制器,可以很方便地控制驱动扫描式接口的TFT显示。其主要功能引脚有:像素时钟信号引脚VCLK/LCD,场同步信号引脚VFRAME/VSYNC,行同步信号引脚VLINE/HSYNC,VD[23:0]是LCD数据输出端口。当把VSYNC、HSYNC、VCLOCK等信号参数设定好,并把帧内存(frame memory)的地址告诉LCD控制器后,LCD控制器即可通过DMA自动获取帧内存中的图像数据。 VGA接口使用模拟RGB通道,逐点、逐行扫描。VGA接口信号为模拟信号,其关键信号有5个,分别是行同步信号,场同步信号,红色模拟信号,绿色模拟信号和篮色模拟信号。电子枪从左至右,从上而下的进行扫描,每行结束时,用行同步信号进行同步。扫描完所有的行后用场同步信号进行场同步。 通过比较LCD扫描式接口时序和VGA时序可知,LCD控制器驱动TFT显示的行场同步信号时序和VGA行场同步信号时序很像。只是信号的极性VGA是负极性,LCD信号是正极性,这个通过调整Linux内核显示模块来调整LCD的时序以适应SVGA时序即可。因此,可以利用高性能视频D/A转换芯片ADV7120将S3C2440A自带的LCD扫描式接口转换为VGA接口,然后用带有VGA接口的显示器显示。此外,LCD控制器用于控制数据信号的使能的引脚VDEN在D/A转换模块中可用来控制信号转换的使能,LCD控制器的VCLK可用作D/A转换模块的时钟信号。 3.2 高性能视频D/A转换芯片ADV7120 ADV7120的输入及控制信号非常简单:3组8位的数字视频数据输入端,用以连接LCD控制器的数据输出接口VD[23:0],数据输入端采用标准TTL电平接口;4条视频控制信号线包括复合同步信号SYNC、消隐信号BLANK、白电平参考信号REF WHITE和像素时钟信号CLOCK,外接一个123V数模转换参考电压源和1个输出满度调节。 ADV7120的输出信号只有4条:3条模拟RGB信号和同步参考电流输出信号Isync。VGA接口的行场同步信号和LCD扫描式接口的行场同步信号是一致的,因此LCD控制器接口中的行场同步扫描信号HSYNC和VSYNC直接接到VGA接口。LCD控制器和VGA接口是由硬件实现的两种接口的电器转接,不需要写任何驱动程序,这是在嵌入式系统平台上扩张VGA接口最方便的方案,也是本便携式视频展示台体积小,易携带性设计的基础。 3.3 VGA驱动设计方案 3.3.1 LCD帧缓冲设备驱动结构 帧缓冲是Linux为显示设备提供的一个接口,它把一些显示设备描述成一个缓冲区,允许应用程序通过FrameBuffer定义好的接口访问这些图形设备,而不用去关心具体的硬件细节。对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色值,对应的颜色就会自动的在屏幕上显示。LCD控制器驱动是VGA设备驱动的核心,是一个标准的linux2.6内核下的framebuffer设备驱动。在VGA驱动设计的过程中首要的是配置LCD控制器。而在配置LCD控制器中最重要的一步则是帧缓冲区(FrameBuffer)的指定。因此,驱动帧缓冲是实现是整个驱动开发过程的重点。帧缓冲驱动需要完成的的工作主要有5个部分:编写初始化函数,编写成员函数,读写,映射,输入输出控制。 1)初始化LCD控制器 通过写寄存器,设置显示模式和颜色数,然后分配LCD显示缓冲区。缓冲区大小为:点阵行数×点阵列数×用于表示一个像素的比特数/8。缓冲区通常分配在大容量的片外SDRAM中,起始地址保存在LCD控制寄存器中。文中采用的LCD显示方式为800x600,需要分配的显示缓冲区为960 KB。最后是初始化一个fb_info结构,填充其中的成员变量,并调用register_framebuffer(&tb_info),将fb_info登记入内核。 2)编写成员函数 该函数主要用于编写fb_info()结构体中指针fb_ops()对应的底层操作函数,主要是3个函数: 以上这些函数都是用来获取fb_info()中的成员变量的,当应用程序调用ioctl()操作时将会调用这些函数。 读写函数就是用来读写屏幕缓冲区,地址映射操作可以将文件的内容映射到用户空间,这样用户就可以通过读写这段地址来访问缓冲区了。输入输出操作就是设备文件ioctl()读取和设置显示设备的参数,具体的ioctl()的实现由底层驱动程序来完成。 3.3.2 根据VGA时序设定LCD控制器寄存器 本便携式视频展示台选择SVGA显示,像素时钟信号VCLK为40 MHz,分辨率为800x600,帧频率为60 Hz,16位真色彩显示,SVGA时序如下图所示。 根据图3、图4所示SVGA显示时序的特点,对LCD控制器中的控制寄存器进行如下配置。 1)LCDCON1寄存 CLKVAL:确定VCLK频率的参数。公式为VCLK=HCLK/[(CLKVAL+1)x2],在本设计中S3C2440A的HCLK=100MHz,VCLK=40 MHz,故需设置CLKVAL=0.25,设置BPPMODE=0xC,即选择TFT 16位模式。 2)LCDCON2寄存器 VBPD:确定帧同步信号和帧数据传输前的时延,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图4所示,VBPD=p/c=0.6 ms/20 μs=30。 VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延时,是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,VFPD=r/c= 0.026 ms/20μs=10。 LINEVAL:确定显示的垂直方向大小,LINEVAL=YSIZE-1=599。 VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值,VSPW=o/c=0.1 ms/20μs=5。 3)LCDCON3寄存器 HBPD:确定行同步信号和行数据传输前的延时,描述行数据传输前延迟时间内VCLK脉冲个数,HBPD=bxVCLK=2.2μsx40 MHz=88。 HOZAL:确定显示的水平方向尺寸。这里HOZAL=XSIZE-1=799。 HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,HFPD=dxVCLK=1 μsx40 MHz=40。 4)LCDCON4寄存器 HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数,HSPW=axVCLK=3.2μsx40 MHz=128。 5)LCDCON5寄存器 BPP24BL:确定数据存储格式。此处设置BPP24BL=0x0,即选择小端模式存放。 FRM565:确定16位数据输出格式。设置FRM565=0x1,即选择5:6:5的输出格式。 4 结束语 文中根据市场对视频展示台的大量需求现状,提出了基于ARM9的S3C2440的便携式视频展示台的设计方案。与用CPLD/FPGA来实现VGA显示的系统相比,本方案节约成本和资源,且接口电路简单,应用灵活、可靠。由本方案做成的视频展示台体积小,易于携带。本方案经过Linux软件测试论证,方案切实可行,对实物、图片、文档或者过程的显示效果清晰,无抖动。 |
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:06 , Processed in 1.027312 second(s), Total 55, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号