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通过函数管理作用域.在 ...
随机推荐
- WebGPU的计算着色器实现冒泡排序
大家好~本文使用WebGPU的计算着色器,实现了奇偶排序. 奇偶排序是冒泡排序的并行版本,在1996年由J Kornerup提出.它解除了每轮冒泡间的串行依赖以及每轮冒泡内部的串行依赖,使得冒泡操作可 ...
- React报错之Functions are not valid as a React child
正文从这开始~ 总览 产生"Functions are not valid as a React child. This may happen if you return a Compone ...
- PHP随机图片API
相比上一个版本代码缩短了 此版本为图片专用 查看代码 <?php $img=file('img.txt');//txt文件 $url=array_rand($img);//imgtxt文档里面图 ...
- 在 C# CLR 中学习 C++ 之了解 extern
一:背景 在 CLR 源码中有很多的 extern 和 extern "C" 这样的关键词,比如下面这些代码: extern size_t gc_global_mechanisms ...
- aardio 编程语言快速入门 —— 语法速览
本文仅供有编程基础的用户快速了解常用语法.如果『没有编程基础』 ,那么您可以通过学习任何一门编程语言去弥补你的编程基础,不同编程语言虽然语法不同 -- 编程基础与经验都是可以互通的.我经常看到一些新手 ...
- DFS算法-求集合的所有子集
目录 1. 题目来源 2. 普通方法 1. 思路 2. 代码 3. 运行结果 3. DFS算法 1. 概念 2. 解题思路 3. 代码 4. 运行结果 4. 对比 1. 题目来源 牛客网,集合的所有子 ...
- Linux下自动删除过期备份和自动异地备份
每天自动删除过期备份 首先编写一个简单的Shell脚本DeleteExpireBackup.sh: #!/bin/bash # 修改需要删除的路径 location="/database/b ...
- 助力培养高质量AI人才,璞公英乐学平台在日本深受好评!
璞公英乐学平台(原名"璞睿魔数")自进入日本市场以来,受到日本用户的广泛好评.近日,日本AI门户网站AIsmiley在发刊的杂志<AI人才育成指南>中对璞公英乐学平台做 ...
- 进阶:spring-bean生命周期流程
Bean的生成过程 主要流程图 1. 生成BeanDefinition Spring启动的时候会进行扫描,会先调用org.springframework.context.annotation.Clas ...
- Python数据科学手册-Pandas:层级索引
一维数据 和 二维数据 分别使用Series 和 DataFrame 对象存储. 多维数据:数据索引 超过一俩个 键. Pandas提供了Panel 和 Panel4D对象 解决三维数据和四维数据. ...