小解析度的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/
公眾號:大魚嵌入式