​小分辨率的LCD,比如QQVGA,QCIF,QVGA等,广泛应用于功能手机和穿戴设备(比如手表)上。这类小分辨率的LCD,除了支持并行接口(比如i80),一般也会支持串行接口。在实际产品中广泛运用的串行接口就是SPI,由于其频率一般可以达到几十MHz,可以满足小分辨率LCD的性能要求。

SPI接口应用在LCD上,主要是以下两种模式:

  • 3-wire 9-bit 模式

  • 4-wire 8-bit 模式

比如某厂商的 LCD datasheet 中有如下描述:

说明该 LCD 支持 3-wire 9-bit 和 4-wire 8-bit 模式,而两种模式下又分别有两种不同的接口,构成四种接口方式:

  • 3-wire 9-bit 接口 I,数据输入输出共用一根线(SDA)。

  • 4-wire 8-bit 接口 I,数据输入输出共用一根线(SDA)。

  • 3-wire 9-bit 接口 II,数据输入(SDI )和 输出(SDO) 是独立的线。

  • 4-wire 8-bit 接口 II,数据输入(SDI )和 输出(SDO) 是独立的线。

其中后两种接口,3-wire 用到了 SCL / SDI / SDO / CSX 四根线,4-wire 用到了 SCL / SDI / SDO / CSX / DCX 五根线,所以所谓的 3-wire,4-wire 并不是指信号线的总数目,而是指有没有 DCX 线。LCD 用 DCX 来区分传输的数据是 Data 还是 Command。4-wire 模式下,用 DCX 信号线的电平高低来指示;3-wire 模式下,用 SDA 信号线上的 D/C bit 来表示,传输实际数据前会先传输一个 D/C bit 数据位,比 8-bit 多了一个bit,所以称作 9-bit。

3-wire 9-bit 模式

3-wire 9-bit 模式下,D/C bit 包含在数据流中,如果 SPI 控制器直接支持3-wire 9-bit 模式,会自动产生 D/C bit。D/C bit 为0时,表示Command;D/C bit 为1时,表示 Data。

图一 3-wire写寄存器

图二 3-wire读寄存器

图三 3-wire写图像数据(RGB565)

4-wire 8-bit 模式

4-wire 8-bit模式下,由D/CX信号线的电平高低指示Command和Data。低电平时,表示Command;高电平时,表示Data。由于数据流中不再包含D/C bit,都是实际要传输的数据,所以传输效率相比 3-wire要高一些。

图四 4-wire写寄存器

图五 4-wire读寄存器

图六 4-wire写图像数据(RGB565)

SPI LCD 性能预估

假定主控SPI clock最高为48MHz,驱动一款QQVGA、RGB565格式的屏幕,接口为3-wire 9-bit。

QQVGA,分辨率120x160,实际产品以128x160常见;RGB565格式,每个像素占用16 bit;3-wire 9-bit 每传输一个16 bit的像素数据,额外需要两次D/C bit;算起来每传输一个像素数据需要18 bit。

这样算下来 48000000 / (128*160*18) = 130 fps

理论刷屏可以达到130帧每秒,帧率很高了。

但是还需要结合具体LCD的datasheet去确认该LCD所能支持的最大SPI clock。如下是某款LCD的 Timing Characteristics,表明它支持的SPI clock最小周期为66ns,换算成支持的最大频率大约为15MHz。

所以实际情况应该是:

15000000 / (128*160*18) = 40 fps

40帧每秒的刷屏效果也是不错的。计算出来的是理论值,实际数据会有一定偏差。

同样的clock指标下,对于QVGA屏来说,就有些吃力;再大的分辨率,就基本不能胜任了。

-----------------------------------------------------------------------------------------------------------------------

作者:bigfish99

博客:https://www.cnblogs.com/bigfish0506/

公众号:大鱼嵌入式

SPI接口在LCD上的应用的更多相关文章

  1. spi接口的ds1302时钟芯片控制在lcd1602上显示

    spi接口的ds1302时钟芯片控制在lcd1602上显示                                                                        ...

  2. NUC980 运行 RT-Thread 驱动 SPI 接口 OLED 播放 badapple

    badapple 是什么,上网随便查了下,没看出个究竟,不过有个关于这个挺火的标签或者主题 < 有屏幕的地方就有 badapple >,网上有很多人用很多方式播放 badapple 动画, ...

  3. STC8H开发(十): SPI驱动Nokia5110 LCD(PCD8544)

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  4. 高通APQ8074 spi 接口配置

    高通APQ8074 spi 接口配置 8074 平台含有两个BLSP(BAM Low-Speed Peripheral) , 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C, SPI, ...

  5. 自定义AXI总线形式SPI接口IP核,点亮OLED

    一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...

  6. SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)

    SPI接口扫盲   douqingl@gmail.com   为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的.wikipedia英文版[注释 ...

  7. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  8. flash读写学习笔记与spi接口及简单测试验证(三)

    FPGA中的视频图像资源,以及想要永久存储的程序都是要存储在flash中,flash是FPGA一个不可缺少的部分,flash的种类有很多,根据winbond公司的128Mbit Qual SPI接口的 ...

  9. linux驱动基础系列--Linux下Spi接口Wifi驱动分析

    前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 .主要是想对spi接口的wifi驱动框架有一个整体的把 ...

随机推荐

  1. Vue和Node.js交互之token

    博主最近工作的时候,公司后台使用的JAVA,在做登陆时总会传来一个token然后我存在了本地存储中或Vuex中,之后每一次请求把它带在请求头上,然后就好奇想要自己做一个后台服务器然后做一个完整的登陆的 ...

  2. 1016 Phone Bills

    A long-distance telephone company charges its customers by the following rules: Making a long-distan ...

  3. 1.Java开发环境搭建

    Java开发环境搭建 date: 2021-4-7 19:17:30 JDK安装 下载所需的JDK版本,点此下载JDK8的安装包 挑选对应的系统版本 配置环境变量 打开高级系统设置,找到系统变量 在系 ...

  4. Unity基础-脚本生命周期

    理解Unity脚本的生命周期对游戏开发很重要,这篇文章对生命周期做一个记录和总结.Unity的脚本生命周期(消息),也就是在脚本运行时,自动并且按顺序执行的一系列函数.在unity官网中有对生命周期详 ...

  5. Webuploader 简单图片上传 支持多图上传

    简介: 通过webuploader 实现简单的图片上传功能,支持多张图上传 官方文档传送门:http://fex.baidu.com/webuploader/getting-started.html# ...

  6. 【JVM】空间分配担保机制

    抛几个问题: 1.谁进行空间担保? JVM使用分代收集算法,将堆内存划分为年轻代和老年代,两块内存分别采用不同的垃圾回收算法,空间担保指的是老年代进行空间分配担保 2.什么是空间分配担保? 在发生Mi ...

  7. 【SpringBoot】Springboot1.5.9整合WebSocket

    一.WebSocket介绍 1.WebSocket是什么? WebSocket是协议,是HTML5开始提供的基于TCP(传输层)的一种新的网络协议, 它实现了浏览器与服务器全双工(full-duple ...

  8. [转载] 关于Win7 x64下过TP保护的一些思路,内核层过保护,驱动过保护

    首先特别感谢梦老大,本人一直没搞懂异常处理机制,看了他的教程之后终于明白了.在他的教程里我学到了不少东西.第一次在论坛发帖,就说说Win7 x64位下怎么过TP保护.如果有讲错的地方,还望指出.说不定 ...

  9. 【JavaScript】JS从入门到深入(复习查漏向

    [JavaScript]JS从入门到深入(复习查漏向 pre 精细得学过一遍JS后才发现,原来之前CTF中有些nodejs的题目以及一些游戏题的payload就变得很好理解了. 基础知识 ECMASc ...

  10. maven下载Oracle jar包

    Oracle的jar包由于是收费的,所以当我们使用maven去下载时下载不下来,对于这种情况,可以用以下方式去处理: oracle官网下载应用地址:https://www.oracle.com/dow ...