SPI接口在LCD上的应用
小分辨率的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上的应用的更多相关文章
- spi接口的ds1302时钟芯片控制在lcd1602上显示
spi接口的ds1302时钟芯片控制在lcd1602上显示 ...
- NUC980 运行 RT-Thread 驱动 SPI 接口 OLED 播放 badapple
badapple 是什么,上网随便查了下,没看出个究竟,不过有个关于这个挺火的标签或者主题 < 有屏幕的地方就有 badapple >,网上有很多人用很多方式播放 badapple 动画, ...
- STC8H开发(十): SPI驱动Nokia5110 LCD(PCD8544)
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- 高通APQ8074 spi 接口配置
高通APQ8074 spi 接口配置 8074 平台含有两个BLSP(BAM Low-Speed Peripheral) , 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C, SPI, ...
- 自定义AXI总线形式SPI接口IP核,点亮OLED
一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...
- SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)
SPI接口扫盲 douqingl@gmail.com 为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的.wikipedia英文版[注释 ...
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...
- flash读写学习笔记与spi接口及简单测试验证(三)
FPGA中的视频图像资源,以及想要永久存储的程序都是要存储在flash中,flash是FPGA一个不可缺少的部分,flash的种类有很多,根据winbond公司的128Mbit Qual SPI接口的 ...
- linux驱动基础系列--Linux下Spi接口Wifi驱动分析
前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 .主要是想对spi接口的wifi驱动框架有一个整体的把 ...
随机推荐
- 破解class文件的第一步:深入理解JAVA Class文件
摘要: java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的. j ...
- vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令
目录 1,前言 2,.env文件的作用 3,配置.env文件 4,配置启动命令 5,获取.env中的全局变量 5,实际用处 1,前言 分享一下vue项目中利用.env文件存储全局环境变量,以及利于项目 ...
- Python学习笔记-PuLP库(3)线性规划实例
本节以一个实际数学建模案例,讲解 PuLP 求解线性规划问题的建模与编程. 1.问题描述 某厂生产甲乙两种饮料,每百箱甲饮料需用原料6千克.工人10名,获利10万元:每百箱乙饮料需用原料5千克.工人2 ...
- 2.1.3- 体会css样式
css初始 css样式规则 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- Pyqt5 combobox
起因 combobox的使用和介绍 两个combobox 联动 开始 介绍 Combobox是Qt中的下拉复选框, 注意:在添加列表选项时,可以一个个添加,也可以直接使用列表一次性添加多个: 添加多个 ...
- Linux 究级基础入门命令整理
Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...
- 手动脱ORiEN壳实战
作者:Fly2015 ORiEN这种壳之前没有接触,到底是压缩壳还是加密壳也不知道,只能试一试喽.需要脱壳的程序是吾爱破解脱壳练习第7期的题目. 首先对加壳程序进行查壳,这一步也是程序脱壳的必要的一步 ...
- LA4851餐厅(求好的坐标的个数)
题意: 有一个m*m的格子,左下角(0,0)右上角(m-1,m-1),网格里面有两个y坐标相同的宾馆(A,B),每个宾馆里面有一个餐厅,一共用n个餐厅,第1,2个都在宾馆里,3,4...在 ...
- Dalvik模式下System.loadLibrary函数的执行流程分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78212010 Android逆向分析的过程中免不了碰到Android so被加固的 ...
- 远程分支git换地址了,本地重新关联
由于本人把github远程仓库的名字修改了所以做了以下步骤修改 步骤:两步 (1)先把之前关联的git清除掉 git remote rm origin (2)再关联新的地址 git remote ad ...