2022年12月26日 星期一

[MIPI Panel] ST7701S and JD9161Z DSI Init Flow and Example Code

最近有使用一些MIPI LCD的經驗, 目前看起來最麻煩的就是一開始的MIPI DSI Init Flow, 只要能夠正確地初始化螢幕後, 之後顯示圖形就算是比較輕鬆一點的工作.


由於之前並沒有任何相關的MIPI DSI經驗, 所以這次在ST7701S和JD9161Z LCD Driver的初始化花了一些時間和冤枉路, 所以特別記錄一下相關的初始化流程, 以免後來遇到MIPI DSI Panel又忘記了.


Panel Spec:

LCD Driver: ST7701S or JD9161Z

Interface: MIPI DSI

Size: 2.1 inch

Resolution: 480 x 480

Lane number: 2


目前市面上有支援MIPI DSI Interface的MCU並不多, 因為MCU單價非常高, 大概就是ST/NXP/GeneralPlus等大廠才會有.


MIPI Panel點不亮的主要原因: MIPI_DSI_GenericWrite function裡面的參數不能使用原廠提供的程式.


  • 基本上MIPI_DSI_GenericWrite function會根據不同資料長度, 會有不同的txDataType, 但ST7701S和JD9161Z只能使用kDSI_TxDataGenLongWr的txdataType, 才會正常顯示畫面, 也就是不管資料長度多短, 我們都必須指定資料長度參數為Long.


  • 因此我們必須修改原廠的MIPI_DSI_GenericWrite function才能正常使用.

    • MIPI_DSI_DCS_Write function不需要修改, 維持原狀.


Power-On Flow:



ST7701S Init Flow:

#define DEMO_LCDIF_HSW 24
#define DEMO_LCDIF_HFP 240
#define DEMO_LCDIF_HBP 180
#define DEMO_LCDIF_VSW 4
#define DEMO_LCDIF_VFP 40
#define DEMO_LCDIF_VBP 30


JD9161Z Init Flow:

#define DEMO_LCDIF_HSW 10
#define DEMO_LCDIF_HFP 50
#define DEMO_LCDIF_HBP 50
#define DEMO_LCDIF_VSW 2
#define DEMO_LCDIF_VFP 19
#define DEMO_LCDIF_VBP 17


DSI Analyzer Example:
底下是 status = ST7701S_MIPI_DSI_GenericWrite(dsiDevice, (const uint8_t[]){0xCCU, 0x10U}, 2); 的DSI Analyzer波型, 可以看到只有寫入2 Bytes Data, 但我們還是使用Long data type(0x29).



ST7701S DSI Analyzer Signal:


JD9161Z DSI Analyzer Signal:


Test Result:






沒有留言:

張貼留言