LCD驅動調試中部分常見問題的分析及解決辦法
LCD點不亮——無法正確完成初始化:
LCD點不亮問題的原因有很多,但出現這個問題後,首先應該判斷LCD是否正確完成初始化。最簡單的判斷方法就是測量LCM的FPC上的電容兩端電壓。(具體的值可以和模組供應商溝通)
如果經過上一步,檢測出沒有正確完成初始化,接下來首先和模組、IC一起確認初始化代碼是否有問題。
確認好代碼以後還是點不亮,說明是模組無法進行初始化,而不是初始化出錯。重新理一遍流程:上電->初始化。上電這個步驟一般不會有問題,如果沒有遵循正確的上電時序和RESET的流程的話也比較好排查。
那麽還能存在哪些問題呢?
在上電成功以後,BB會通過LCD串行總線發送LCD的初始化數據,如果這個環節出現問題,那肯定初始化不能成功。在這個過程中能出現問題的就只有SPI的通訊控制這一塊了,(通常LCD的通訊接口有CPU和串行總線接口等,手機中較常用的就是串行總線接口,串行總線接口又以SPI接口居多),其實造成SPI通訊不符合LCD模組驅動芯片的要求的原因也是多種多樣的:
1、 雖然都是SPI接口,但是,不同的LCD模組,在控制信號的要求上往往都會有細小的不同,有時候,CPU的SPI接口甚至都無法產生LCD模組所要求的特定波形時序。有些LCD模組可能還會有特定的勢能信號來控制SPI接口工作與否。
2、 多數LCD驅動芯片其實都是具有讀取寄存器和ID號的功能的,但是很多模組在封裝的時候往往沒有吧芯片的SPI接口的SDO信號線引出來。導致無法通過讀取寄存器和ID的方式來判斷SPI總線上的通信協議是否正確。
那麽,如果確定了是SPI通訊控制不滿足要求的話,就可以通過修改SPI的讀寫控制來適配LCD模組IC的要求。
如果CPU所提供SPI接口實在沒有辦法配置到完全和LCD模組要求的時序波形相同,可以采用CPIO口模擬SPI信號的方式來初始化LCD。
最後,如果模組能夠將SDO引出就盡量引出,不僅方便調試,而且可以很方便的做不同IC的LCD自適應的兼容。
初始化成功,LCD點不亮
有的時候LCD點不亮,通過上面講的方法,測量LCM的FPC上的電容的電壓確認初始化正常。即有時候初始化已經成功了,但是LCD還是沒有被點亮。這個時候就要仔細的對照LCD模組的規格書來檢查了,是否是一些非常規的原因,例如串口和RGB數據接口相互影響或者別的什麽原因。
見過別人講的一個案例:某廠商的一款LCD驅動芯片,初始化成功了以後LCD還是點不亮,經查發現,在RGB接口上寫入數據前,要通過串口對某一寄存器寫入特殊值,但實際上在初始化的代碼中已經包含了對該寄存器寫值,即使寫入這一特殊值以後RGB數據口上仍然寫入不了數據。最後發現,對暖氣修改以後,不能再寫其它的寄存器,否則就會出現問題。當然這也是極個別的現象,不過當你在調試過程中遇到此類問題無法解決的時候,不妨在這個方向上進行檢查。
LCD圖像錯位
LCD顯示在水平方向發生位移,或者在上面或底部有一條幾個像素的彩色、白色或黑色條紋。一般來說,出現這種情況,都是因為初始化參數設置不對,和行同步或者場同步信號有關。
顯示位置有位移或者錯位,就檢查LCD模組和CPU上的LCD控制器的行同步與場同步信號的寬度、前後延時、極性的匹配。最可能的就是回掃的前後延時時間不匹配。
另外,這種情況通常錯位不會很多,如果出現錯位了一半的圖像之類的情況,通常就是別的原因造成的了。而且有時候,有的LCD的行信號、場信號的設置還和LCD驅動芯片的部分電壓參數的取值設置有關。
LCD大片圖片錯位、疊加、重復
LCD顯示上大範圍的圖像出現錯位、疊加或者重復,出現這種情況一般不會是行同步或者場同步信號的延時引起的,基本可以排除這方面的影響。可以間檢查下抽樣等功能的參數是否正常,還有就是因為LCD的硬件平臺不同,而在時序或者時鐘頻率上存在差異引起的。碰見這種情況首先應該做的就是先仔細計算DMA傳輸參數。其它的情況要具體問題具體分析。
UBOOT過程中LCD不顯示
開機的時候在UBOOT過程中LOGO不顯示,只有背光亮。這種情況出現的時候如果其它都正常,不妨檢查下FLASH的配置。我碰見這個問題的原因最後是FLASH的MCP沒有設置正確。FLASH換小以後MCP只有CS0這一片封裝,而在配置文件裏還是沿用以前的CS0和CS1兩片的配置,從而可能會引起各種意想不到的問題。
開機LCD亮的瞬間有花屏
出現這種問題,一般都是由於LCD在初始化完成後刷新第一副圖像未完全準備好的時候背光已經亮了。解決的辦法就是在UBOOT時候背光亮之前的延時相應的加長一點。
LCD驅動調試中部分常見問題的分析及解決辦法