STM32F429 LCD程序移植


     STM32F429自帶LCD驅動器,這一具有功能給我等糾結於屏幕驅動的程序員帶來了很大的福音。有經驗的讀者一定有過這樣的經歷,用FSMC驅動帶由控制器的屏幕時候,一旦驅動芯片更換,則需要重新針對此驅動芯片做寄存器配置等等,一系列繁瑣的操作。但是,如果MCU自帶LCD驅動器,情況就不一樣了,特別是加載了STemwin之后,不同廠家屏幕,只要其分辨率一樣,則可以直接替換,最多是觸摸屏的芯片不一樣,做些觸摸驅動。如果分辨率不同,則只需要更改分辨率就可以了,其硬件接口是一樣的。

     本文是從野火的5寸800*480分辨率屏幕程序移植到原子哥的apollo的7寸1024*600分辨率上,用429驅動這么高分辨率是件比較容易興奮的事情,由於底層驅動方式不同,直接影響刷屏速度,野火的底層驅動寫得還算是比較完善,就是在STemwin上沒直接使用開放觸摸屏接口。

     首先,查看下野火的開發板上觸摸屏引腳和APOLLO板區別,經過研究發現,其管腳基本通用,部分管腳重定義到別的引腳,軟件上只需要做簡單的條件編譯即可,如下:

                                     

       另外值得注意的事,通過比較LCD的管腳定義,很明顯,APOLLO硬件上只保留了RGB565引腳,所以野火程序驅動上得從RGB888改為RGB565,其主要代碼集中在文件GUIDRV_wf.c中,直接替換。

                                           

      其次,看下兩塊板子之間SDRAM引腳區別,做過觸摸屏顯示的童鞋肯定知道,屏幕顯示的緩存,是靠外部的SDRAM,如果SDRAM驅動不好,則觸摸屏肯定沒法使用。比較之后,因為都是SDRAM 不管是ISSI的還是Winbond的,其接口定義都是一模一樣。唯一一點區別,之前用的野火的程序使用的是4M大小,而驅動1024*600分辨率,這個大小不夠,得升級到8M,更改下代碼,同時更改下管腳映射(跟LCD管腳方法一樣,不贅述)。

                                               

行地址寬度改為9,列地址寬度改為13。

       野火的SDRAM配置在bank2上,其起始地址為:0xD0000000,而APOLLO起始地址為:0xC0000000,程序上做出相應的更改;

       

       另外,因為增大了SDRAM,在GUIConf.c文件中也做相應的堆棧更改

        

      通過以上兩個措施,屏幕基本可以顯示,其效果如下,只顯示一半。

 

 

         網上該情況的資料比較少,也很難發現原因,原因可能有幾個方面:SDRAM只用了現存的一半,導致另一半沒刷出來;屏幕驅動有問題;

        1) 通過對SDRAM全部8M數據,讀取寫入測試,無問題,說明不是SDRAM導致該問題發生;

        2)屏幕顯示方式不對,RGB565沒有設置好,經過仔細盤查,RGB設置無問題;

        3)屏幕的時序方式可能需要更改,將野火的時序方式換成APOLLO,申請的效果出現了,可以整面刷屏了。

         

           

        自此,可以說移植成功了。

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM