在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. BZOJ3894/LuoguP4313 文理分科 (最小割)

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  2. Oracle-查询之函数

    DQL语句:查询语句用于查询表中数据DQL必须包含的两个部分:select 子句 和from 子句select子句:指定要查询的内容,可以指定表中的具体字段,*号,函数,或者表达式from子句:指定数 ...

  3. a 标签 rel 属性值 opener 的作用

    <a> 元素,原英文单词为 anchor 的缩写,所以又称之为锚点元素.锚点元素的 href 属性用来创建通向其他网页.文件.同一页面内的位置.电子邮件地址或任何其他 URL 的超链接. ...

  4. HDFS的读写流程——宏观与微观

    HDFS的读写流程--宏观与微观 HDFS:分布式文件系统,负责存放数据 分布式文件系统:就是将我们的数据放到多台电脑上存储. 写数据:就是将客户端上的数据上传到HDFS 宏观过程 客户端向HDFS发 ...

  5. 你言我语 By Twikoo

    主要做了两件事: 一是前端魔改 二是首页调用(替代原 bber) 注明:以下样式.功能代码基于 Twikoo v1.6.4 前端魔改 "管理面板"按钮同步隐藏输入框.先到twiko ...

  6. windows如何禁止更新

    注意!本方法针对windows专业版本 家庭版本可以直接下载一个windows update blocker软件 windows+r快捷键输入代码如下图 gpedit.msc 进入后需要的路径如下 第 ...

  7. python中的画图神器——turtle模块

    turtle库的基础命令介绍(1)画布画布cancas是绘图区域,可以设置它的大小和初始位置 turtle.screensize(1000,600,'red') 大小的设置 turtle.setup( ...

  8. 轻量级RTSP服务和内置RTSP网关有什么不同?

    好多开发者疑惑,什么是内置RTSP网关,和轻量级RTSP服务又有什么区别和联系?本文就以上问题,做个简单的介绍: 轻量级RTSP服务 为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的 ...

  9. 手撸Router,还要啥Router框架?react-router/vue-router躺一边去

    有没有发现,在大家使用React/Vue的时候,总离不开一个小尾巴,到哪都得带着他,那就是react-router/vue-router,而基于它们的第三方框架又出现很多个性化约定和扩展,比如nuxt ...

  10. KingbaseES 工具sys_dump,sys_restore使用介绍

    说明: KingbaseES V8R6版本中自带数据库备份导出sys_dump,和备份恢复sys_restore工具. sys_dump:把KingbaseES数据库抽取为一个脚本文件或其他归档文件. ...