LcdTools如何编写MIPI指令(初始化代码)
在LcdTools帮助文档中查看MIPI读写指令描述,如下图


编写LCM初始化代码就是配置LCM Driver IC寄存器值,一般只需用MipiWrite()指令写参数即可;下面介绍MipiWrite()指令中参数如何填写
<数据模式> 用于标识MIPI写数据的类型,也称数据标识,简称DI,指令中用“GEN”或“Gen”来表示Generic模式,用“DCS”来表示DCS模式,不用关系包长短,PX01会自动识别;哪些数据模式需用“GEN” “DCS”呢?如下面说明
GEN模式:数据操作类型为03h 13h 23h 29h模式的均用“GEN”;


DCS模式:数据操作类型为05h 15h 39h模式的均用“DCS”。


<寄存器> 需配置参数的寄存器地址,通常为1个字节,表示方法用十进制或十六进制数都可以,一般建议用十六进制数表示,表示方法0x加参数,如0xAA;
<数据...> 寄存器配置值,数据个数范围0~4096,没有数据的时候表示纯命令,如0x11 x029命令就不带数据;表示方法用十进制或十六进制数都可以,一般建议用十六进制数表示;
例子:
MipiWrite(Gen,0xB6, 0x33,0xDB,0x80,0x12,0x00); //以Genric模式往寄存器0xb6写入5个参数。
MipiWrite(DCS,0x29); //开启显示,display on
除了MIPI写指令还会用到一些其他指令,比如延时Delay()、屏复位控制SetLcmRst()、电源开关控制SetOutVCI()等等,具体用法可以查询LcdTools帮助文档,上面有详细介绍。
那拿到别人提供的初始化代码怎么移植到LcdTools平台呢?其实只要遵循一点:初始化代码就是配置Driver IC寄存器参数!可能提供出来的初始化代码写法五花八门,但最终目的是一样的,我们从中提取出需要的数据转成LcdTools指令即可。每家的写法都不一样,有些是按自己的PG平台封包指令编写,有些就是直接用写SSD2828的格式来表示,下面我们举几个例子来说明。
(1)IC原厂测试治具指令格式1

如上图所示,每行为一条指令,Delay 50为延时时间,通常情况下单位都是ms;其他的都是寄存器值配置,第一个带R开头为寄存器地址,如RB9,即B9H,寄存器B9,十六进制,后面的参数为寄存器配置值;所以上面的指令在LcdTools上编写方式如下图:

(2)IC原厂测试治具指令格式2

LCD_nRESET 赋值表示控制LCM_RST拉高或者拉低,LcdTools有响应指令对应,SetLcmRst();
Delayms()延时控制,单位mS,LcdTools对应指令Delay();
LCD_ILI9881C_CMD()表示写命令,即寄存器地址,后面跟随的指令LCD_ILI9881C_INDEX()即为该寄存器写入的数据;
上面用LcdTools实现方法如下图:

(3)IC原厂测试治具指令格式3

描述方法和(2)基本一致,只是寄存器和参数的指令描述名称有些差异,不难理解,用LcdTools实现如下图:

(4)IC原厂测试指令格式4

这中指令中,从描述中可以看出屏复位用GPIO指令实现,GPIO4为RST信号;MIPI写格式中,第一个参数为数据类型,如0x39为DCS格式,前面已经有给出对应表格。用LcdTools实现上述代码如下图:

(5)IC原厂测试指令格式5

和(1)类似,纯数据描述型,LcdTools实现如下:

(6)IC原厂测试指令格式6

HW_Reset()从字面看出是硬件复位的意思,也就是对屏进行复位,可以用LcdTools默认生成的复位指令实现;write(Command,0x--)就是写命令即IC寄存器地址,write(Parameter,0x--)就是写数据,用LcdTools实现如下:

(6)直接用SSD2828实现指令实现初始化格式


这种代码格式是直接写SSD2828寄存器的方式,没有进行数据封装,看起来有点费劲,不过如果了解2828寄存器作用,理解起来也很容易;
如上面的指令,WriteAddr()表示写2828寄存器地址,WriteData()表示写寄存器参数;0xB7寄存器用于设定MIPI操作模式,对于B7寄存器配置不需要关心,LcdTools会自动实现;0xBC寄存器用于设置MIPI写数据包大小,包括MIPI命令和数据的总个数,这个寄存器有两个字节,低字节在前,高字节在后,最大为4096;0xBF寄存器用于声明开始写MIPI数据,后面跟随写入的数据都会从MIPI发出,所以上面例子中代码用LcdTools实现如下图:

后面的MIPI指令照此编写即可。
以上介绍了几种常见的初始化代码格式,做抛砖引玉之用,实际应用中需参考Drvier IC资料,了解寄存器功能后对初始化代码编写方式更容易理解,欢迎交流!
LcdTools如何编写MIPI指令(初始化代码)的更多相关文章
- [转]编写高性能的Lua代码
昨天晚上闲来无事,看室友在电脑上挂机玩游戏,用的一个辅助脚本,以为是lua写的脚本在跑,实际调查发现是按键精灵的脚本. 于是在网上找相关Lua开发游戏脚本的案例,看到一个人的博客,内容很不错,学到了很 ...
- 编写高性能的Lua代码
编写高性能的Lua代码 Posted on2014/04/18· 10 Comments 前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏.像<魔兽世界>的插件, ...
- 编写高性能的 Lua 代码
前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏.像<魔兽世界>的插件,手机游戏<大掌门><神曲><迷失之地>等都是用Lua来 ...
- 编写高质量 Objective-C 代码
第一章 熟悉 Objective-C 第一条:了解 Objective-C 起源 Objective-C 是 C 语言动态性扩充.使用"消息结构"而非"函数调用" ...
- 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...
- 如何编写Angular指令
[20140917]Angular:如何编写一个指令 *:first-child { margin-top: 0 !important; } body>*:last-child { margin ...
- JavaScript手札:《编写高质量JS代码的68个有效方法》(一)(1~5)
编写高质量JS代码的68个有效方法(一) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...
- 编写高效的Android代码
编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一 ...
- 编写高质量JavaScript代码的基本要点记录
原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...
随机推荐
- 总结-一本通提高篇&算竞进阶记录
当一个人看见星空,就再无法忍受黑暗 为了点亮渐渐沉寂的星空 不想就这样退役 一定不会鸽の坑 . 一本通提高篇 . 算竞进阶 . CDQ & 整体二分 . 平衡树 . LCT . 字符串 . 随 ...
- Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)
我bingoyes再高精用STL就饿死,死外边! string真的爽... 斯特林数模板题:\(S(n,m) = S(n-1,m-1)+S(n-1,m)*n\) #include <iostre ...
- Docker 08 部署Elasticsearch
参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...
- Excel 逻辑函数(二):AND 和 OR
前言 AND 函数是且:OR 函数是或.AND 函数中的条件必须都满足才返回 TRUE:OR 函数中的条件只要满足一个就返回 TRUE.AND 和 OR 的参数最多允许有 30 个. AND [题目] ...
- [WPF]WPF设置单实例启动
WPF设置单实例启动 使用Mutex设置单实例启动 using System; using System.Threading; using System.Windows; namespace Test ...
- 虚拟机kali端口映射外网vps
前言:我们常用的kali系统一般都是在虚拟机里面运行,这样在真实环境中外网是访问不到你的kali攻击机的,这时候我们就需要给kali映射一个外网vps. 一.在vps启动frp 服务端 安装frp并解 ...
- P4767 [IOI2000]邮局 - 平行四边形不等式优化DP
There is a straight highway with villages alongside the highway. The highway is represented as an in ...
- day33-线程基础03
线程基础03 6.用户线程和守护线程 用户线程:也叫工作线程,当线程的任务执行完或者通知方法结束.平时用到的普通线程均是用户线程,当在Java程序中创建一个线程,它就被称为用户线程 守护线程(Daem ...
- token总结
token 总结 1. token 和SessionID 的区别 Token机制相对于Cookie机制又有什么好处呢? 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的 ...
- Java 多线程:线程池
Java 多线程:线程池 作者:Grey 原文地址: 博客园:Java 多线程:线程池 CSDN:Java 多线程:线程池 工作原理 线程池内部是通过队列结合线程实现的,当我们利用线程池执行任务时: ...