LCD-SPI接口简介

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屏来说,就有些吃力;再大的分辨率,就基本不能胜任了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F401是一种高性能的微控制器,具有丰富的特性和强大的处理能力。它集成了SPI接口,它是一种高速串行通讯接口,常用于外围设备与微控制器之间的通信。 ILI9341是一款广泛应用于液晶显示屏的控制器芯片,它能够控制彩色TFT LCD显示屏的图形和文本。STM32F401与ILI9341之间使用SPI接口进行通信,实现从控制器到显示屏的数据传输。 StemWin1.2.0则是一款图形库软件包,可以在嵌入式系统中实现图形用户界面(GUI)。它为开发者提供了丰富的图形绘制和交互功能,例如按钮、文本框、图像等,可以为用户提供更好的操作体验。 在使用这些组件时,首先需要配置STM32F401的SPI接口。通过对SPI寄存器的设置,可以定义SPI的工作模式、速率、数据位宽等参数。然后,将ILI9341连接到STM32F401的SPI接口,并根据ILI9341的要求进行初始化和配置。通过SPI接口,STM32F401可以向ILI9341发送指令和数据,控制显示屏的输出。 接下来,可以利用StemWin1.2.0库来实现具体的UI界面。开发者可以使用StemWin提供的API函数,调用各种绘制函数、事件处理函数等,实现各种界面元素的绘制和交互。开发者还可以根据需要,自定义界面的布局、样式和动画效果。 通过以上的步骤,可以搭建一个基于STM32F401、ILI9341和StemWin1.2.0的嵌入式系统。这样的系统具有强大的处理能力、高速的数据传输速率和丰富的GUI功能,非常适合用于嵌入式应用领域,例如智能家居控制、工业自动化控制等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值