(南京观海微电子)——OLED驱动与调试

news2025/1/20 7:16:52

一、OLED DDIC分类

OLED DDIC的技术方向可以分为3类:带Ram【内存】的IC、Ram-less IC和TDDI【显示&触控集成的IC】

1、带Ram的OLED DDIC

OLED DDIC有两个Ram,分别是Demura Ram和Display Ram。

1、带Ram的OLED DDIC

1-1)Demura Ram:屏幕产家会对面板的显示不均等问题进行补偿,补偿的数据存储在Flash IC内,在正常显示时,OLED DDIC会从Flash IC通过SPI协议Reload对应的自己内部的Demura Ram,用于显示的效果补偿。

1-2)Display Ram:系统传输的图片数据会先存在显示Display Ram内,显示时在通过从Display Ram调用。这种显示方式称为Command mode。在显示静态画面时,系统不要持续送图,显示IC自己刷新Ram即可,在静态画面的场景更省功耗,显示效果较优。

1-3)需要注意的是Display Ram的大小也直接决定了显示IC能支持的帧率和分辨率大小,“3每个颜色的bit位OLED IC的压缩倍率”,即可以计算出所需要占用的Ram大小;比如1280✘2800的分辨率,RGB共计3个颜色,是8个bit,DDIC的VESA选择1/3压缩,因此计算出来的Ram大小为:1280✘2800✘8✘3✘1/3=28672000bit=28.7Mbit。【有关OLED显示屏幕能支持的分辨率和帧率计算,这个后面再发光详细讨论】。

1-3)缺点:Ram的大小基本占到到了IC空间上的75%,因此IC的size会比较大,并且Ram较高。

综上,带Ram的OLED DDIC因为功耗低,显示效果好,是目前各家终端量产的主力。

2、OLED Ramless DDIC

2-1)Ram:Ramless是保留了demura Ram,而砍掉了display Ram。

2-2)驱动:主机需要支持送图给OLED DDIC,即只能跑vedieo模式,在视频场景上,预计功耗和带Ram的相差不大,但是静态场景,功耗会较高。虽然国产厂商推出,在AOD【息屏显示】的场景下,可以借用其demura ram去作为AOD的display,在AOD模式下跑无demura效果的commad mode,这样可以降低AOD模式下的功耗水平;但是Vedio mode和command mode的互相切换,以及有无demura效果对实际用户的使用场景影响,需要调试确认,保守的话,不考虑功耗,全程跑vedio 模式是可以的。

2-2)产能&成本:因为减少了Display Ram,IC的size降低接近一半,同一片晶圆的切片量预估可以提升40%,在结合晶圆价格,可以推算出来相同制程的Ram和Ramless的DDIC,成本约有1.5美金的价差。也正是这个价差,以及连任正非老爷子都要喊着活下去的大环境,各家终端,均在重点关注Ramless的验证和量产导入。目前主要进展最为迅速的是“性价比之王”和“非洲之王”两个终端。

综上,Ramless OLED DDIC除了便宜没有什么好处,是后续降本的趋势。

3、TDDI

OLED显示屏的显示和驱动集成芯片,据说前期是华为与Novatek一同开发,华为被制裁后,Novatek将此芯片变成公版,21年下半年即已经出样,目前各家屏厂和终端均基本完成了验证。

3-1)成本:LCD的触控前期也是采用外挂方案,但是已经与LCD的触控pattern是设计在自己的驱动背板内的,因此LCD的TDDI的panel可以减少光照的mask,成本降低显著,收益明显。OLED的触控当前都是“外挂互容”,驱动上面,很难将触控集成在驱动电路内,现在推出来的OLED TDDI芯片也是针对外挂的,因此panel上面并没有省到任何成本。IC制程上,现在量产的触控IC的模拟和数字部分采用的制程不一样,模拟部分用的110nm相对落后的制程,和显示ic合二为一以后,全部采用先进的40nm或者28nm制程的,成本上会有上升。因此针对OLED TDDI在成本维度上并没有实现“1+1<2”反而会“1+1≥2”;

3-2)触控性能:当前在量产的是外挂式的互容方案,而Novatek目推出的自容方案,理论上对比现有的触控的信噪比会有提升,但是基于笔者验证结果看,其触控性能也仅仅是相对于现在外挂式的性能相当,甚至还会略差;后续厂家也有厂家在检讨互容方案,这个可以期待一下;

3-3)外观:同样因为是“外挂自容”方案,相对于“互容”方案,以经验4mm左右需要一个通道,自容方案的触控走线明显增多,直接导致产品的下边框增加,在笔者所在公司,手机的性能全部要给外观让步【注:实际大部分人买手机也确实因为颜值】,这个是产品经理无法接受的,因此产品并不care;

3-4)功耗收益:OLED TDDI相比较与现在量产的外挂的触控IC,触控部分的制程迭代到了28nm,因此在功耗上是有降低的,也是目前笔者能想到的唯一收益。

3-5)量产情况:虽然在手机上目前并未量产OLED TDDI,但是在小尺寸的OLED手表上面已经量产了;当前流行的上下折叠手机的副屏,各家基本在3寸左右,对整机堆叠空间要求极高,是有明确的需求的,但是目前选用手机的TDDI的话,IC的size过大并且成本高,不利于堆叠;选用手表的OLED TDDI,其对应的通道数又无法支持对应的触控需求,因此上下折叠副屏依然选择手表的DDIC和TPIC。

二、调试方式

1.串口调试

通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息

2.显示屏调试

直接将显示屏连接到单片机,将调试信息打印在显示屏上(本节)

3.Keil调试模式

借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能

二、硬件电路

7脚就不放上来了

四脚的OLED一般采用I2C的通信协议,上图中的SCL和SDA需要接在32的I2C通信的引脚上(但本节up主教的是GPIO口模拟的I2C通信)

此次接线为:SCL接PB8,SDA接PB9

三、驱动函数

偷懒,直接截图(doge)

使用之前,先初始化一下;函数的第一个为第几行,第二个为第几列

四、代码实现

1.准备驱动函数

OLED驱动函数模块在up提供的程序源码的1-4内,点进去,再次点击4针脚的文件(7脚就选7脚),将里面的三个文件复制粘贴到我们新建的4-1OLED显示屏的hardware文件夹内,并在Keil软件内添加

(1)OLED.c文件只需要更改引脚配置部分和下方初始化的部分(如图),看你自己把SCL和SDA这两个引脚接在了哪两个端口上

我们本次接线外设为GPIOB,端口是8和9

为啥配置为开漏输出:因为标准I2C是有上拉电阻的,没有信号总线高电平,所以要配置成开漏(强制滴)

(开漏输出:仅低电平可以驱动;前面写过的文章3-1GPIO输出)

(2)OLED_Front.h:字库,定义字符的点阵数据,也就是不同的字符有哪些地方需要点亮

2.主函数

(1)老规矩现在main函数最前头include一下OLED.h

(2)在主函数while循环之前进行初始化:OLED_Init();

(3)

①OLED_ShowChar:显示一个字符,第一个参数为第几行,第二参数为第几列,第三个参数为有单引号括起来的字符

②OLED_ShowString:显示字符串,第一、二个参数同上,第三个参数为有双引号括起来的字符串(注意字符串不要超过屏幕了,否则字符串会覆盖或者说字符串乱了,是不会给你第二行接着现实的,自己可以试试)

同时该函数可以用于清除部分,在你想清掉的地方显示空格字符就可以了(OLED_Clear函数局部版)

③OLED_ShowNum:显示无符号十进制数字(全是正的),第一、二个参数同上,第三个参数为数字,第四个参数为显示数字数量

注:若第四个参数大于实际第三个参数的数量,则会在数字前头补0显示(例如,我要显示12345,但是我第四个参数填的6,则OLED显示为012345)如果小于,则会把多余的高位的数据切掉(例如,我还是要显示12345,但是我第四个参数填的4,则OLED显示为2345),这个同样也适用于下面两个函数

④OLED_ShowSignedNum:显示无符号十进制数字,参数和上一个一样,不同的是可以显示负数,第三个参数直接写负数就行(正数不用加正号哦,显示屏显示时会加上正号的,例如,第三个参数写66,显示屏显示为+66)

⑤OLED_ShowHexNum和OLED_ShowBinNum,参数和上面的一样,分别显示十六进制的数和二进制的数(第三个参数都写0x0001,第四个参数:第一个函数写4,第二个函数写16;第一个函数显示为0001,第二个函数显示为0000 0000 0000 0001)

⑥OLED_Clear:清屏;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

取消Vscode在输入符号时自动补全

取消Vscode在输入符号时自动补全 取消Vscode在输入符号时自动补全问题演示解决方法 取消Vscode在输入符号时自动补全 问题演示 在此状态下输入/会直接自动补全, 如下图 笔者想要达到的效果为可以正常输入/而不进行补全, 如下图 解决方法 在设置->文本编辑器->建议, 取消…

C语言第十一弹---函数(下)

​ ✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 函数 1、嵌套调用和链式访问 1.1、嵌套调用 1.2、链式访问 2、函数的声明和定义 2.1、单个文件 2.2、多个文件 2.3、static 和 extern 2.3.1、static…

STM32+ESP8266 实现物联网设备节点

目录 一、硬件准备 二、编译环境 三、源代码地址 四、说明 五、测试方法 六、所有测试工具和文档 本项目使用stm32F103ZEesp8266实现一个物联网的通信节点,目前支持的协议有mqtt,tcp。后续会持续更新,增加JSON,传感器&#…

MySQL 聚集与非聚集索引

文章目录 1.聚集索引1.1 介绍1.2 优点1.3 缺点 2.非聚集索引3.区别参考文献 MySQL 中,根据索引树叶结点存放数据行还是数据行的地址,可以将索引分为两类: 存放数据行:聚集索引存放数据行地址:非聚集索引 InnoDB 使用聚…

VSCode 1.85.0更新的3个实用功能

1、单个文件可直接拖拽为独立窗口 当单文件过长,直接分成两个视图就不用上下频繁滚动 2、将终端移动到编辑器区域 此时,终端也可像文件一样拖拽为独立窗口 3、文件夹目录粘性头部 默认关闭,需要设置 "workbench.tree.enableStickyScro…

【Linux】编写第一个小程序:进度条

文章目录 1. 预备知识1.1 简单认识几个函数1.1.1 sleep()1.1.2 fflush()1.1.3 usleep()1.1.4 memset() 1.2 缓冲区1.3 回车与换行 2. 编写入门版的进度条2.1 基本逻辑2.2 美化效果2.3 代码实现2.4 执行效果 3. 编写升级版的进度条3.1 代码实现3.2 执行效果 1. 预备知识 1.1 简…

php项目中laravel框架下用postman调用接口实战总结

一.项目接口实战总结: 1.传参赋值错乱问题,如下: SQLSTATE[HY093]: Invalid parameter number (SQL: select count(*) as aggregate from cars where company_id 3345 and status ! 7 and user_id in (2148, 2060, 2061, 2432, 2136, 1970, 1987, 202…

Spark Exchange节点和Partitioning

​Exchange 在explain时,常看到Exchange节点,这个节点其实就是发生了数据交换 此图片来自于网络截取 BroadcastExchangeExec 主要是用来广播的 ShuffleExchangeExec 里面决定了数据分布的方式和采用哪种shuffle 在这里可以看到好几种不同的分区器 shuf…

shell 脚本 点菜啦

#!/bin/bash sum0 PS3"请输入(1-6):" MENU" 宫保鸡丁 酸菜鱼 鱼香肉丝 佛跳墙 水煮肉片 点菜结束 "select menu in $MENU do case $REPLY in 1) echo $menu 价格是20 let sum20 ;; 2) echo $menu 价格是60 let sum60 ;;3) echo $menu 价格是25 let sum25 ;…

在linux上进行编译调试

1.相关疑问 1. 为什么在代码里使用了一个未定义过的函数(如add()),在编译阶段不会报错,在链接阶段会报错呢? 答:先说几个代码编译的结论: 单个\.c源文件文件被编译成机器码文件时&#xff0c…

如何把openwrt的ipk软件包安装到ubuntu上

前提:都是arm64的架构的软件包。 下载openwrt的ipk软件包 1. 从https://pkgs.org/ 查找下载软件包: 本文以swconfig软件包为例,下载swconfig和相关的依赖软件包: swconfig_12_aarch64_cortex-a72.ipk libuci20130104_2021-10-2…

认识与探索大模型时代的RPA应用及进化(上)

AI Agent当前仍然处于技术爬坡与实验阶段,特别是在企业领域,真正的成熟应用还处于广泛探索与原型验证阶段,离成熟还尚待时日。而同时另外一种在最近几年广受欢迎的自动化解决方案-RPA(机器人流程自动化)也在LLM时代不断…

python使用迭代生成器yield减少内存占用的方法

嗨喽,大家好呀~这里是爱看美女的茜茜呐 在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。 其实这本没有必要,因为这些参量很有可能是一次性使用的, 甚至很多场景下这些参量是不需要同时存储在内存中的&…

IM-CNN

SHAP means ‘Shapley additive explanation’ 辅助信息 作者未提供代码

基于ncurse的floppy_bird小游戏

1. 需求分析 将运动分解为鸟的垂直运动和杆的左右运动。 2. 概要设计 2.1 鸟运动部分 2.2 杆的运动 3. 代码实现 #include <stdio.h> #include <ncurses.h>#include <stdlib.h> #include <time.h>int vx 0; int vy 1;int bird_r; int bird_c;int…

HTML5和CSS3的新特性

HTML5的新特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等 1&#xff0c;HTML5新增的语义化标签 <header> 头部标签 <nav> 导航标签 <article> …

1 月 28日算法练习-前缀和

小郑的蓝桥平衡串 思路&#xff1a;把 L 看成 1&#xff0c;Q 看成 -1&#xff0c;利用前缀和来得到输入串的前缀子串中LQ 的和&#xff0c;利用前缀和差的性质得到子串&#xff0c;通过枚举看它是否平衡。 将L看做1&#xff0c;Q看做&#xff0d;1&#xff0c;只有当某个区间…

Django实战

一、开发登录表单 def login_form(request):html <html><body><form method"post">用户名:<input name "username" type"text"></input></br>密码&#xff1a;<input name "password" type…

ARM常用汇编指令

文章目录 前言一、处理器内部数据传输指令MOV&#xff1a; 将数据从一个寄存器复制到另一个寄存器。MRS&#xff1a; 将特殊寄存器(CPSR,SPSR)中的数据传给通用寄存器。MSR&#xff1a; 将通用寄存器中的数据传给特殊寄存器(CPSR,SPSR)。 二、存储器访问指令LDR:用于从内存中加…

5G赋能智慧文旅:科技与文化的完美结合,打造无缝旅游体验,重塑旅游业的未来

一、5G技术&#xff1a;智慧文旅的强大引擎 5G技术的起源可以追溯到2010年&#xff0c;当时世界各国开始意识到4G技术已经达到了瓶颈&#xff0c;无法满足日益增长的移动通信需求。2013年&#xff0c;国际电信联盟&#xff08;ITU&#xff09;成立了5G技术研究组&#xff0c;开…