|
這是我接手的第一個小項目,也是第一次我寫的代碼真正排上用場,雖然不超過50行。但遇到的阻礙,我想確實硬件廠商善意的刁難。這個項目最大的收獲是弄清楚我與軟件工程師最大的不同吧!給我職業(yè)生涯上的第一個教訓(xùn)。下面言歸正傳(驅(qū)動見51hei論壇附件TFT資料)。 (一)ili9486顯示屏簡介
ili9486支持262144種色彩,有320RGB*480個像素點,內(nèi)部GRAM345600Bytres(320*480*18bit),有全彩(262K_colors,65K_colors)和idle(8_colors)兩種顯示模式,支持8種總線,用IM2,IM1,IM0決定,見下圖
00000000.png (47.26 KB, 下載次數(shù): 233)
下載附件
2015-9-13 01:21 上傳
支持16bit-RGB(5,6,5)和18bit-RGB(6,6,6)兩種色彩格式,也用單一純色格式(in idle mode)。
(二)常用命令
顯示屏的需求,最多的還是在怎樣滿足我們的顯示要求,比如橫屏,豎屏,顏色格式,刷屏速度等等。這里只稍微講一下在此次項目中用到的命令,慢慢補(bǔ)充。
1)與坐標(biāo)原點相關(guān)的命令:
1.Display Function Control(B6h)
命令主要參數(shù):GS,SM,SS
2.Memory Access Control (36h)
命令主要參數(shù):MX,MY,MV,BGR(色彩模式RGB or GBR),MH,ML
2)設(shè)置指針位置
1.Set Page Address (2Bh)
設(shè)置指針X起點, 默認(rèn)情況為0~13F(B5= 0),受36h的第五位(B5)影響0~1DF(B5 = 1)
2.Set Column Address (2Ah)
設(shè)置指針Y起點, 默認(rèn)情況為0~1DF(B5= 0),受36h的第五位(B5)影響0~13F(B5 = 1)
3)設(shè)置像素格式
1. Interface Pixel Format(3Ah)
設(shè)置是16bit或則18bit的像素。DPI設(shè)置接口像素格式,DBI設(shè)置CPU像素格式
4)連續(xù)寫
1.Memory Write Continue (3Ch)
要在使用Memory Write (2Ch)后使用此命令,最多能連續(xù)讀取65535個字節(jié)。
(三)與uCUI接口相關(guān)函數(shù)
000000001.png (125.92 KB, 下載次數(shù): 229)
下載附件
2015-9-13 01:21 上傳
接口函數(shù)在GUI/LCDDriver文件夾下LCD_Dummy.c以及Config目錄下LCDConfig.h。
1. LCD_Dummy.c主要是接口相應(yīng)顯示屏
1--void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) 設(shè)置像素點,要使用自己的函數(shù)實現(xiàn)設(shè)置像素點功能。下面一個簡單的例子:
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{
LCD_Setpixel(xPhys, yPhys,PixelIndex);//底層TFT相關(guān)的函數(shù)(可以轉(zhuǎn)換XY的值,達(dá)到想要的效果)
}
2--void LCD_L0_DrawVLine (int x, int y0, int y1)//畫橫線
3--void LCD_L0_DrawHLine (int x0, int y, int x1)//畫豎線
注:這兩個函數(shù),可以不用替換,uCGUI默認(rèn)情況下給一個坐標(biāo),畫一個像素點(速度慢,但準(zhǔn)確,無差錯)。如果你覺得你使用自己的函數(shù)更加快速,可進(jìn)行替換(ili9486有自動移動指針的功能,可以只送一個起始點,然后送數(shù)據(jù),指針會自動加也會自動換行(列),而不用送坐標(biāo)地址)
4--LCD_L0_DrawBitmap(...)//畫位圖
5--DrawBitLine16BPP(...)//畫位圖主要功能函數(shù)
注:這兩個函數(shù)底層功能函數(shù)與2,3兩個函數(shù)類似,但色彩不同。自行替換時要注意相關(guān)參數(shù)。
2.LCDConfig.h需修改如下項
#define LCD_XSIZE (480) /* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE (350) /* Y- resolution of LCD, Logical coor. */
#define LCD_BITSPERPIXEL (16) //像素點位數(shù)
#define LCD_CONTROLLER -1 // -1表示不在GUI_Init()里面初始化顯示屏
#define LCD_SWAP_RB 1 // 1--BGR 0--RGB
#define LCD_MIRROR_X (1) //0 If active: X ->-X /1--翻轉(zhuǎn)X軸起點
#define LCD_MIRROR_Y (0) //0 If active: Y -> -Y /1--翻轉(zhuǎn)Y軸起點
#define LCD_SWAP_XY 1 //0 If active: X <->Y/1--調(diào)換XY的值
(四)FAQ
1.顯示顏色不對,而圖像輪廓正確
1)這個問題最常見的是RB調(diào)換,TFT顯示屏常見的像素格式為BGR(5,6,5),而一般的windows的格式為RGB(5,6,5),這個問題只要轉(zhuǎn)換Memory Access Control(36h)命令BGR參數(shù)即可。
2)第二個可能原因是由于高低字節(jié)的問題,這款ili9486的顯示屏為低字節(jié)在前,高字節(jié)在后,可以在送數(shù)據(jù)到顯示屏之前將數(shù)據(jù)轉(zhuǎn)換一下。
3)如果以上步驟沒有將顏色的問題解決,考慮顯示屏質(zhì)量問題或者屏幕焊接問題(換塊顯示屏試試)。
2.背景圖顯示不正確,沒有完整的圖像
1)這個問題主要是取圖像大小時出錯,如果要鋪滿整個屏幕的話,圖像一定要與顯示屏規(guī)格相同,例如:ili9486是320*480,所以你的圖像大小也要為320*480或者橫屏480*320,不能多也不能少,否則不會正確顯示圖像。
3.圖像無法整屏顯示,或者是整屏顯示需要更多的像素點
1)這個問題很有可能是總線模式選擇錯誤,ili9486支持多種縱向模式8、9、16、18以及3/4SPI等等,總線模式取決于IM[2:0]的選擇,詳細(xì)內(nèi)容請參考相關(guān)數(shù)據(jù)手冊。
2)還有一個可能是數(shù)據(jù)在傳輸?shù)倪^程中丟失了(因為傳輸速度過快/頻率太高),可以每傳送一次數(shù)據(jù),延時一段時間,觀察有沒有出現(xiàn)漏點的情況(對比色要鮮明),或者調(diào)整頻率,讓送數(shù)據(jù)的速度變慢些(不太建議這樣做,因為頻率low,可能導(dǎo)致其他問題出現(xiàn),頻率high也是)。
4.屏幕總是白屏,而無法顯示其他內(nèi)容
1)這問題最有可能是因為屏幕的顯示模式不正確,極有可能處在idle模式下,加入命令0x0011(退出idle模式,進(jìn)入normal模式)可解決。
5. 顏色抖動現(xiàn)象
1)這個問題最有可能的是電路上的問題,可以嘗試重新焊接一下。
(五)測試
1.顏色測試:讓顯示屏顯示出三原色的三種純色,三種顏色正確,基本不會出現(xiàn)顏色問題,若出現(xiàn)顏色問題,考慮硬件上的問題。
2.刷屏測試:用320*480個像素點刷屏,如果能鋪滿整屏,總線模式正確。反之模式不正確。
注意:
3.5_TFT彩色LCD模塊 驅(qū)動芯片型號為SSD2119
3.2_TFT彩色LCD模塊 驅(qū)動芯片型號為ILI9320
2.8_TFT彩色LCD模塊 驅(qū)動芯片型號為ST7781、ILI9325、ILI9328、或ILI9331。具體是哪種控制芯片可以在UCGUI程序里初始化LCD程序的讀ID函數(shù)里下個斷點即可看到器件ID號。
驅(qū)動程序全兼容這些控制芯片,要想詳細(xì)了解控制芯片請查看目錄下的對應(yīng)芯片數(shù)據(jù)手冊,ILI9328的數(shù)據(jù)手冊請參考ILI9325的。兩個是一樣的,只是讀到的ID不一樣,驅(qū)動程序也是相同的。
SSD2119 讀到的ID為 0x9919
ILI9320 讀到的ID為 0x9320
ILI9325 讀到的ID為 0x9325
ILI9328 讀到的ID為 0x9328
ILI9331 讀到的ID為 0x9331
ST7781 讀到的ID為 0x7783
LGDP4531 讀到的ID為 0x4531
用戶可以自己提取對應(yīng)驅(qū)動芯片的初始化文件用到自己的工程中。
TFT相關(guān)資料,包含多種液晶屏幕驅(qū)動及說明文檔
--TFT.zip
(13.43 MB, 下載次數(shù): 620)
2015-9-9 19:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|