基于OMAP-L138处理器的OLED驱动开发及实现

时间:2022-10-29 06:12:43

基于OMAP-L138处理器的OLED驱动开发及实现

引言

随着用户对微处理器的多核协作、更高集成度外设、更低热量耗散以及更低总体系统成本的需求,TI公司推出了新一代的低功耗OMAP-L138双核处理器。OMAP-L138可广泛应用于通信、工业、医疗诊断和音视频嵌入式设备,ARM核擅长用于操作系统的移植及丰富图形人机界面的开发,而DSP核擅长于复杂算法的运算,两核的协同工作可大大增强嵌入式设备的数据处理能力,增强用户的使用体验。OLED屏的驱动实现是构成良好的人机交互接口的重要组成部分,介绍了OMAP-L138的特点及LCD接口,实现了OLED屏的在Linux2.6及U-Boot中的驱动开发,在系统上电后快速显示START LOGO的功能。

OMAP-L138的特点及LCD接口

OMAP-L138的特点[1]如下:

(1)内部集成了375/456-MHz A R M 9 2 6 E J - S R I S C M P U及375/456-MHz C674x定/浮点VLIW DSP,可满足系统的非实时多任务及实时高强度数据处理的应用需求

(2)强大丰富的外设资源:

主要包括:1个EMAC控制器;1个USB2.0接口和1个USB1.1接口;2个I2C接口;1个McASP;两个McBSP;2个SPI接口;4个64位通用定时器;实时时钟(RTC);1个可配置的16位HPI;144个可配置的GPIO管脚;3个UART接口;2个eHRPWM和3个eCAP;1个EMIFA口,可接16位SDRAM/NOR Flash/NAND Flash;1个EMIFB口,可接16位的DDR2(最高频率150MHz)或16位mDDR(最高频率133MHz)[2];2个MMC/SD/SDIO;1个LCD控制器;1个SATA控制器;1个uPP接口;1个VPIF接口;众多外设可以通过PSC(电源及睡眠控制)和管脚复用控制,根据系统需求灵活配置;

(3)高效的缓存机制。其中ARM核内部有16KB的L1程序Cache和16KB的数据Cache,以及8KB中断向量表存储RAM;DSP核采用二级缓存结构,包括32KB的L1程序Cache、32KB的数据Cache和高达256KB可灵活配置的L2 Cache,L2可以被ARM核访问;此外在两核之间还有128KB的片内SHARE RAM,可用于ARM核和DSP核高速交换数据,而不影响各自的运行。

(4)低功耗设计。采用1.2V内核电压,1.8V或3.3V可配置I/O接口电压,不同使用情况下总功耗为440mW,待机模式功耗为15mW,在深度睡眠模式下功耗仅为6mW。

OMAP-L138的LCD控制器里面包含两个独立的控制器,分别是Raster(光栅)控制器和LIDD控制器。两个控制器独立工作,但是每次只能有一个处于活动状态。光栅控制器用于控制同步的LCD接口。它提供时序

控制和不间断的图形数据刷新到显示屏显示。通过可配置的时序控制支持多种不同型号不同尺寸的单色和全彩显示屏显示,内置调色板、灰度色标/序列化器。图形数据在帧缓冲中处理和存储,帧缓冲为系统中的一个连续的内存块。内置的DMA引擎提供图形数据给光栅引擎,再输出到外部的LCD设备显示;LIDD控制器用于控制异步的LCD接口,它提供完全可配置的时序控制信号(CS,WE,OE,ALE)和输出数据[3]。该驱动开发主要使用光栅控制器。

系统采用维信诺公司生产的

O L E D屏,此屏为240*320像素,262K色,采用18位编码方式的AMOLED点阵显示屏。它具有高亮度,自散热,高对比度,细边框,宽视角,工作温度范围很宽等优点。此屏除了与OMAP-L138的RGB LCD接口连接外,还需增加SPI口连接,用于OLED屏内驱动芯片的初始化,而背光控制则通过控制其供电电源使能完成。LCD控制器支持16位/像素的编码方式,采用成RGB565(5位红、6位绿、5位蓝)模式连接,具体连接如图1所示。

OLED屏在Linux2.6内核的驱动开发

OLED屏驱动本质上属于字符设备驱动,Linux为此类显示设备提供了

观测效果,刷新频率为60Hz,像素时钟为4.608MHz,不反转像素时钟极性,最终确定LCD控制器的具体参数如下:width=240,height=320,hfp=2,hbp=2,hsw=3,vfp=8,vbp=6,vsw=2。

U-Boot中添加OLED屏的初始化及显示LOGO功能

OLED屏除了具有普通16位RGB接口的一般特性外,还需连接其SPI口,用于对屏内部驱动芯片S6E63D6进行初始化,可以实现接口类型配置、背光供电电压、屏的亮度等调节。另外还增加了一个GPIO引脚控制背光供电电路使能,用于控制背光的打开及关闭。采用OMAP-L138的SPI1与OLED的SPI口连接,其SPI驱动时序要求如图4所示。

驱动芯片S6E63D6内包含数十个寄存器,可以划分为数个寄存器组,初始化过程中密切相关的寄存器组包括:显示控制、电源控制、Gamma控制寄存器组[5]。根据S6E63D6的SPI通信要求,先传输寄存器地址,后传输寄存器值。每次传输3个字节,首字节写入0x70或0x72以表示此次传输的是地址还是寄存器值,后两个字节对应传输地址或寄存器值。依据SPI口通信时序要求配置OMAP-L138的SPI1驱动[6];根据传输协议,封装好writeRegAddr和writeRegData函数,从而对各寄存器组进行初始化。在U-Boot当中,将S6E63D6的初始化封装成oled_init函数放在OMAP-L138对应平台的board_init函数当中执行。S6E63D6的初始化步骤为:(1)设置入口模式寄存器;(2)关闭备用模式;(3)设置Gamma控制寄存器组;(4)设置RGB565接口模式;(5)打开显示屏。

完成屏内驱动芯片S6E63D6初始化后,还需要对OMAP-L138的LCD控制器进行初始化,主要是对Raster模式下对各控制寄存器进行配置,参数与Linux下基本一致。对LCD控制器的初始化封装成LCDC_init函数放在U-Boot/lib_arm/board.c中的start_ armboot里面执行。

用户希望系统上电后第一时间能看到显示屏的动作,以确定系统工作是否正常,所以OLED屏的初始化完成后,将开机LOGO图片数据输出到LCDC_init中设置frame bufer所在的内存地址,通过DMA机制自动传输图像数据到就OLED屏显示,就实现了开机显示图像功能。

结语

本文详细介绍了维信诺的262K色OLED屏在OMAP-L138平台的驱动开发具体方法,该屏在系统应用过程中显示图像清晰细腻,QT/E等图形界面应用程序运行良好,可流畅播放视频文件,有很宽的观赏视角,其在苛刻的气候条件下使用仍然表现出良好的稳定性,可用于手持终端、车载系统等通信、工业领域,对双核微处理器平台的嵌入式系统开发具有重要意义。

参考文献:

[1] OMAP-L138 C6-Integra DSP+ARM Processor (Rev. D)[Z].Texas Instruments,2011

[2] 付建伟,王厚军,曾浩.一种数字示波器的微处理器硬件设计[J].世界电子元器件,2010,(09)

[3] TMS320C674x/OMAP-L1x Processor Liquid Crystal Display Controller (LCDC) User’s Guide[Z].Texas Instruments,2010

[4] 宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2008[5] S6E63D6 MOBILE DISPLAY DRIVER IC Rev.1.10[Z]. Samsung Electronics,2007

[6] TMS320C674x/OMAP-L1x Processor Serial Peripheral Interface (SPI) User’s Guide[Z].Texas Instruments,2010

上一篇:基于锁相环的L波段频率源设计与实现* 下一篇:智能计算开启崭新生活序幕