SPI接口在LCD上的應用

  • 2021 年 5 月 30 日
  • 筆記

​小分辨率的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,分辨率120×160,實際產品以128×160常見;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

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

公眾號:大魚嵌入式