fpga驱动oled iic显示代码_【学术论文】机载彩色OLED显示模组的电路设计

848ab43fb6d5954dae4e0d9948c3196b.gif

摘要

 OLED显示器件具有自发光、响应时间短、功耗低、色域广、工作温度范围宽、抗震性好以及轻薄的特点,已经在中小尺寸显示领域得到了快速的发展。研究了机载彩色OLED显示模组的电路设计,以一款7.7英寸的彩色OLED显示器为显示介质,采用FPGA为主控芯片,实现了视频显示、亮度调节、夜视兼容等功能。

中文引用格式: 陈文明. 机载彩色OLED显示模组的电路设计[J].电子技术应用,2019,45(5):111-114.英文引用格式: Chen Wenming. The circuit design of airborne color OLED display module[J]. Application of Electronic Technique,2019,45(5):111-114.

0 引言

    机载显示模组为飞行员提供由字符、图形和图像组成的各种飞行信号和作战指令,具有重要的作用。机载显示模组向全彩色、高清晰度、高分辨率、广色域、低功耗的方向发展。这促进了机载显示模组的显示介质的更新换代。目前,LCD在机载显示中处于主流地位,已逐渐淘汰了早期的CRT。但液晶也有其缺点,如:响应时间长、低温性能差、功耗高等。随着OLED技术的发展,其性能上的优势越趋明显,已具备一定的应用于机载显示的技术基础。

本文以SUMSUNG公司生产的7.7英寸彩色OLED显示屏为显示介质,进行机载显示模块的电路设计。此屏分辨率为1 280×800,颜色深度为RGB各8 bit,采用MIPI-DSI(4lane)进行视频数据传输和屏内部寄存器数值的传送。

1 显示模块功能要求

    表1为显示模块的主要性能指标,由于对显示介质以及显示分辨率的要求,经过筛选最终选择了SUMSUNG公司的7.7英寸彩色OLED作为显示介质,并通过特定的加固处理,使其满足机载环境的使用要求。由于OLED是电流型自发光器件,在需要显示的像素才会有电流通过而发光,对于不显示的区域,像素没有电流通过,不发光,所以在黑环境下,OLED的对比度能达到100 000:1,对于招标要求的1 000:1的对比度要求在满足的范围之内。在验证阶段对此款OLED的亮度进行了测试,其最大亮度能够达到650 cd/m2,满足亮度调节的要求。对于视频接口、通信方式、电源要求,通过分析以及验证都能够实现。

a1515930b66cb0f41e1d660a72132c76.png

2 电路整体设计

    根据显示模块的功能要求,对相关电路进行设计,电路的总体功能框图如图1所示。主要由以下电路组成:DVI信号解码电路,完成串行差分DVI信号向并行LVTTL信号的转化,以便后续FPGA的处理;RS232接口电路,实现FPGA和上位机的通信;FPGA是电路中的核心器件,实现各功能电路和OLED屏的配置和控制、视频信号采集处理、调光算法的实现、通信功能的实现、OSD功能等;MIPI编码电路将FPGA输出的视频信号转化为MIPI信号, 进行OLED屏的显示和参数的配置;OLED亮度调节电路,配合FPGA的调光算法,控制输出的负电压Vneg的值,来实现昼夜模式下亮度的调节;EEPROM芯片用于存储相关的参数,如昼夜模式下亮度的最大值和最小值、默认亮度值等;电源转化电路通过电压芯片生成需要的电压值,给各功能电路和OLED屏稳定的供电电源。

8e33b9ad3ce66f8fa1599a765340d9d0.png

3 主要功能电路实现

3.1 DVI解码电路设计

    DVI信号具有带宽高、抗干扰能力强、传输距离远的特点,已经成为了一种高分辨率视频传输的主流方案。由于DVI采用的是串行传输方式,并采用8/10编码,因此在接收端要进行视频解码,将串行信号转化为后端易于处理的并行TTL信号,主要包括数字RGB信号、行同步信号(HSYNC)、场同步信号(VSYNC)和像素时钟信号(PCLK)。

    本文采用的是Silicon Image的型号为SIL1161的DVI解码芯片,它最大能够支持UXGA分辨率、像素时钟为165 MHz的视频信号的解码,并且为了扩展芯片的应用环境,其内部的寄存器可以通过IIC接口进行配置以调整时钟的相位及信号的驱动能力。并且能够通过调节均衡器的数值,来实现DVI传输长度的匹配,以提升其抗干扰能力,经过设置,最大能够支持20 m信号的传输。

    为了灵活地对芯片进行控制,将SIL1161的控制接口和PFGA相连,通过FPGA对芯片进行配置,以使其工作在最佳状态。SIL1161的内部寄存器的信息如表2所示。通过FPGA将芯片的第99脚(MODE)和低7脚(I2C_MODE#)拉低,使芯片进入IIC配置模式。然后通过第100脚(SCL)和第3脚(SDA)进行参数配置。

0fd500ea3750e347391431414434a046.png

3.2 亮度调节电路设计

    由于OLED为自发光器件,且其发光亮度与流过其中的电流呈线性比例关系,也即电流越大,亮度越高。为了显示亮度的调节,就要对OLED的电流进行控制。由于OLED的像素驱动电路的特点,能够影响OLED电流的因素主要有加在驱动管G极的灰度电压和D极、S极之间的电压。如果通过改变灰度电压的方式调节电流改变亮度,会影响到OLED显示图像的灰阶层次,所以,为了不影响OLED显示灰阶,同时实现亮度调节功能,本文采用的是调节DS之间的电压的方式。具体的实现为,通过固定D极的正电压,调节S端的负电压Vneg的大小来调节亮度。

    由于亮度调节需要的电压范围为:-3.3 V~-6.4 V,而系统的供电电压为+5 V,因此选用的电压芯片为LT3759HMSE。其输入电压范围为+1.6 V~+42 V,具有Boost/SEPIC/Inverting电压转化功能。为了实现输出电压可调节的功能,采用具有IIC接口的数字电位器AD5252BRU1来改变反馈电阻的阻值,以实现电压的调节。具体的电路原理如图2所示。

a0b3bd0fba8a0afd7f346d799fd07250.png

3.3 MIPI接口电路

    从2003年MIPI联盟正式推出MIPI协议以来,由于MIPI协议的巨大优势,已经在移动产业中得到了广泛的推广和应用,在处理器、大容量数据传输、无线通信、显示屏等产业中得到广泛的应用。本项目选用的OLED显示屏就是MIPI接口。由于MIPI接口具有特定的协议和编码方式,需要采用接口芯片将数字视频信号转化为MIPI协议信号。本项目采用的是晶门科技的SSD2828系列接口芯片。

    通过SPI接口控制SSD2828的工作模式,可以配置其进入命令模式(command mode)或者视频模式(video mode)。在命令模式下,通过MIPI接口对OLED屏内部寄存器进行配置,实现对上电时序的控制、扫描方向、gamma曲线等功能的配置;配置完成后进入视频模式,此时主要用于视频图像的传输。在视频传输模式下,也可以发送OLED寄存器控制命令,在SSD2828的控制下,在视频的消隐区将命令进行传输,从而对显示画面不造成任何的影响。SSD2828的控制部分由FPGA完成,具体的控制过程在FPGA逻辑部分详细介绍。

3.4 FPGA逻辑设计

    FPGA是整个电路的控制核心,主要完成对外界的通信、视频图像的采集和处理、亮度调节的实现、对OLED的控制等功能。主要的内部逻辑结构如图3所示。

48aadb6fe9d8cc3de875993fadd1c375.png

    在这里,主要介绍亮度调节模块的实现以及MIPI接口和OLED控制模块的实现。

3.4.1 亮度调节模块

    为了满足机载环境下的使用要求,显示模块的亮度调节范围被分为昼模式区域和夜模区域两个部分。并且两部分需要对应到一定的调光曲线,也即根据不同的输入调光命令,产生相应的亮度值。所以,首先通过实验的方式,得到输入的电压Vneg和亮度之间的关系,然后通过映射的方式,根据输入的调光命令,控制输出电压的电压值。这个映射过程在FPGA内部完成,然后根据映射结果,通过IIC接口控制亮度调节电路的反馈电阻,以达到控制输出电压的目的。

    通过对测试数据的分析,根据要求的调光曲线制作对应的LUT,使得输入0~255级调光级数都对应不同的数字电位器数值。采用LUT的方式能够将复杂的转化算法变为简单的查找表,实现方式简单,延迟小。为了适应每块屏之间的差异,设置了可调节的最小值、最大值以及比例系数寄存器作为偏移量调节,使得每一块屏的亮度都在要求的范围之内。公式表示为:

    73fd3719a3d590c01103ff6c0e0f9e92.png

    其中Dreg( )为输出的用于设置数字电位器的数值;Dmin为最小值;Dmax为最大值;K为比例系数;DLUT( )为查找表数据,根据昼夜模式的不同,分为两个LUT;Lcom为调光级数,共256级。

    以上的寄存器都可以通过界面设置,使亮度值达到要求的范围。所有最终设置的寄存器值都被存储到外部的EEPROM中,在FPGA上电的时候被读出。

3.4.2 MIPI和OLED控制模块

    此模块主要通过SPI接口对SSD2828进行配置,以实现对OLED的控制和视频的显示功能。此模块可以分为两层:底层的SPI模块以及上层的控制模块。模块如图4所示。其中SPI 模块实现数据的SPI传输,上层模块是一个状态机,控制需要传输的数据以及其顺序。

5e8a5cc96be7dafe514c35547bc6876f.png

    通过控制SSD2828的内部寄存器实现对芯片的配置,使其进入需要的工作模式。通过向寄存器Generic Packet Drop Register 发送地址和数据,可以实现对OLED屏内的寄存器的配置。其在SSD2828芯片中的地址为0xBF。MIPI发送数据控制模块的实现,采用状态机的方式。整个模块的状态流转如图5所示。

99f28c7a9b0e826d33f59f1044de42da.png

4 显示模块测试结果

    根据以上电路设计,完成电路板调试和FPGA代码调试,实现了OLED的正常显示。制作成OLED显示模块的实物如图6所示。

2e67ecb16e175fe889735cfd806c1c91.png

    为了验证模组的功能和性能,搭建实验测试平台。平台由信号发生器、稳压电源、测试台FPM520等构成。主要测试数据如表3所示。

de33a7217dad25741280f381edf3e098.png

    从表3的测试数据可以知,彩色OLED模组的各项性能参数和协议要求的参数相匹配,满足要求。而且在重量、对比度、功耗等指标上,OLED显示模组比同尺寸的LCD显示模组要优越很多,也极大地突出了OLED的优势。

5 结论

    本文根据彩色OLED模组的功能要求,设计了此模组的驱动电路。详细介绍了电路的整体设计方案以及各个具体电路的实现方式,并且对FPGA内部的主要功能模块——亮度控制模块和MIPI控制模块的显示方式进行了具体的介绍。最后,对整个OLED显示模组的性能进行了测试,测试结果表明各项性能均满足协议要求。并且其在重量、对比度、功耗指标上有明显的优势,满足了机载显示模组向轻型化、低功耗、高显示质量的发展要求。本文设计为彩色OLED在机载显示器的应用起到了一定的佐证作用。

参考文献

[1] 张雷,吴华夏,胡俊涛,等.一种OLED显示器参数温度自适应设计[J].光电工程,2011,3(2):127-131.

[2] 韩红霞.基于FPGA的视频解码芯片I2C总线配置[J].微计算机信息,2009,25(12-2):13-14.

[3] KAMATH P.MIPI将彻底改变移动产品设计方式[J].集成电路应用,2012(2):1-2.

[4] 熊文彬.基于FPGA的OLED显示系统[D]. 成都:电子科技大学,2011.

作者信息:

陈文明1,2

(1.中航华东光电有限公司,安徽 芜湖241002;2.特种显示技术国家工程实验室,安徽 芜湖241002)

 2bb11fefc14de13f063d3e7a174e0f55.gif

a607e4f515702190a99735ed26167a7f.gif

8d8bf65d38f34c491faba2a3c72c4acd.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的FPGA驱动OLED IIC显示代码示例: ```verilog module oled_iic_driver( input clk, //时钟信号 input reset, //复位信号 output reg [7:0] data_out, //输出数据信号 output reg sda, //IIC SDA信号 output reg scl //IIC SCL信号 ); //定义IIC传输状态 parameter IDLE = 2'b00; //空闲状态 parameter START = 2'b01; //起始状态 parameter WRITE = 2'b10; //写状态 parameter READ = 2'b11; //读状态 //定义OLED地址 parameter OLED_ADDR = 8'h78; //定义IIC传输计数器 reg [3:0] cnt; //定义IIC传输状态寄存器 reg [1:0] state; //定义写入数据缓冲区 reg [7:0] data_in; //初始化 initial begin cnt = 4'b0000; state = IDLE; data_in = 8'b00000000; end //状态机 always @(posedge clk) begin if(reset) begin cnt <= 4'b0000; state <= IDLE; data_in <= 8'b00000000; sda <= 1'b1; scl <= 1'b1; end else begin case(state) IDLE: begin sda <= 1'b1; scl <= 1'b1; if(cnt == 4'b0000) begin state <= START; cnt <= 4'b0001; end end START: begin sda <= 1'b0; if(cnt == 4'b0001) begin scl <= 1'b0; cnt <= 4'b0010; end else begin cnt <= cnt + 1; end end WRITE: begin sda <= data_out[cnt]; if(cnt == 4'b1000) begin scl <= 1'b0; cnt <= 4'b0001; end else begin cnt <= cnt + 1; end end READ: begin sda <= 1'b1; if(cnt == 4'b1000) begin scl <= 1'b0; cnt <= 4'b0001; end else begin cnt <= cnt + 1; end end default: begin sda <= 1'b1; scl <= 1'b1; end endcase end end //数据输入 always @(posedge clk) begin if(reset) begin data_in <= 8'b00000000; end else begin case(state) IDLE: begin data_in <= 8'b00000000; end START: begin data_in <= OLED_ADDR; end WRITE: begin data_in <= data_in << 1; data_in[0] <= data_out[cnt]; end READ: begin data_in <= data_in << 1; end default: begin data_in <= 8'b00000000; end endcase end end endmodule ``` 请注意,这只是一个示例代码,你需要根据你的OLED显示器和FPGA开发板进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值