在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指令(初始化代码)的更多相关文章

  1. [转]编写高性能的Lua代码

    昨天晚上闲来无事,看室友在电脑上挂机玩游戏,用的一个辅助脚本,以为是lua写的脚本在跑,实际调查发现是按键精灵的脚本. 于是在网上找相关Lua开发游戏脚本的案例,看到一个人的博客,内容很不错,学到了很 ...

  2. 编写高性能的Lua代码

    编写高性能的Lua代码 Posted on2014/04/18· 10 Comments 前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏.像<魔兽世界>的插件, ...

  3. 编写高性能的 Lua 代码

    前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏.像<魔兽世界>的插件,手机游戏<大掌门><神曲><迷失之地>等都是用Lua来 ...

  4. 编写高质量 Objective-C 代码

    第一章 熟悉 Objective-C 第一条:了解 Objective-C 起源 Objective-C 是 C 语言动态性扩充.使用"消息结构"而非"函数调用" ...

  5. 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...

  6. 如何编写Angular指令

    [20140917]Angular:如何编写一个指令 *:first-child { margin-top: 0 !important; } body>*:last-child { margin ...

  7. JavaScript手札:《编写高质量JS代码的68个有效方法》(一)(1~5)

    编写高质量JS代码的68个有效方法(一) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...

  8. 编写高效的Android代码

    编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一 ...

  9. 编写高质量JavaScript代码的基本要点记录

    原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...

随机推荐

  1. Apache 首次亚洲在线峰会: Workflow & 数据治理专场

    背景 大数据发展到今天已有 10 年时间,早已渗透到各个行业,数据需 求越来越多,这使得大数据 业务间的依赖关系也越来越复杂,另外也相信做数据的伙伴肯定对如何治理数据也是痛苦之至,再加上现今云原生时代 ...

  2. Apache DolphinScheduler 架构演进 & Roadmap

    <DataFunSummit:大数据存储架构峰会> 2021年4月17日Apache DolphinScheduler PMC chair 代立冬参与 DataFunSummit 分享&l ...

  3. 活动回顾丨ALC Beijing 首场 Meetup:《开源到底有多难?》

    8月16日,ALC Beijing 的首次线下沙龙活动 -- <开源到底有多难?>在微软大厦如期举行.本次沙龙主要是分享开源开发经验.探讨如何让开源项目更加茁壮成长,以及分享 ASF 管理 ...

  4. Python带我起飞——入门、进阶、商业实战_ 入门版电子书籍分享,

    Python带我起飞--入门.进阶.商业实战_ 免费下载地址 内容简介 · · · · · · <Python带我起飞--入门.进阶.商业实战>针对Python 3.5 以上版本,采用&q ...

  5. Luogu3919 【模板】可持久化数组(主席树)

    主席树模板题,注意空间\((n+m) \log(n)\) #include <iostream> #include <cstdio> #include <cstring& ...

  6. 记一次 ClickHouse 性能测试

    前言 在工作场景中,我们会采集工厂设备数据用于智能控制,数据的存储用了 InfluxDB,随着数据规模越来越大,InfluxDB 的性能越来越差,故考虑引入 ClickHouse 分担 InfluxD ...

  7. DTSE Tech Talk丨第3期:解密数据隔离方案,让SaaS应用开发更轻松

    摘要:解读云上前沿技术,畅聊开发应用实践.专家团队授课,答疑解惑,助力开发者使用华为云开放能力进行应用构建.技术创新. 围绕当下许多企业青睐的SaaS应用开发,华为云DTSE技术布道师李良龙为大家带来 ...

  8. Java对象已死吗 深入理解Java虚拟机笔记

    1.引用计数器法 给每个对象设置一个计数器,每当有一个引用就给计数器的值+1,引用时小时就减一,当计数器值为0是就可以回收掉了. 主流虚拟机都没有使用这种算法,循环依赖问题 2.可达性分析: 思路是通 ...

  9. Java Stream 函数式接口外部实例的引用

    Java Function Interface 函数式接口: Stream.empty() .filter(Predicate) .map(Function) .forEach(Consumer); ...

  10. day25--Java集合08

    Java集合08 15.HashTable 15.1HashTable的基本介绍 存放的元素是键值对:即K-V HashTable的键和值都不能为null HashTable的使用方法基本上和Hash ...