100ask_imx6ull開發板絕對是最2的IMX6ULL開發板!
爲什麼這麼說呢?
因爲它有別家的:
2倍的裸機文檔!
2倍的裸機實驗!
卻是2分之1的價格!
自從去年我們發佈了後,
開啓了一個新模式:
0利潤開發板吸引客戶,
入門視頻全部免費服務大衆,
獨家視頻才收費。
硬件質量久經考驗,即使是最專業的硬件工程師,也認可我們的設計和用料;
之前,資料缺乏是唯一槽點,
但是,
從4月20號,這一切都改變了!
600頁裸機文檔已經發布,
近30板上、板外模塊,
每一章節都是韋老師修改,保證質量;
來,看看我們的文檔,
就說LCD吧,
如果一上來,就是這個圖,你看得懂那些信號是什麼鬼?
可能很多人都知道:HSYNC是行同步信息,VSYNC是列同步信號。
同步?行?列?
什麼鬼東西嘛,請說些小白能聽懂的話。
我們是善於講課的老師,我們這樣教你:
跟着韋老師,媽媽再也不用擔心我的嵌入式學習了!
2倍的裸機文檔/實驗:
LED、RAM重定位、時鐘、UART、GPIO按鍵、UND/SWI異常、
GPT定時器、EPIT定時器、EMMC卡、
TF卡、LCD、電容屏、
I2C、SPI、紅外遙控器、DHT11溫溼度、DS18B20溫度模塊、SR501人體紅外模塊、
SR04超聲波、步進電機、OLED顯示屏、
SPI DAC、AT24C02、GPS、
光敏,ADC,CAN、485。
2分之1的價格:標配369起(轉發朋友圈),我們不掙硬件錢,所以當然0利潤。
下面分享100ASK_IMX6ULL裸機文檔第15章LCD編程之100ASK_IMX6ULL硬件原理
內容包括
1.1 LCD硬件工作原理簡介
1.2 RGB接口的LCD硬件連接信號
1.3 TFT材質液晶屏接口簡介(7寸1024600TN-RGB)
1.3.1 LCD關鍵特性
1.3.2 行時序
1.3.3 列時序
1.3.4 DE模式
1.3.5 RGB數據的存放形式
下面分別羅列。
1.1 LCD硬件工作原理簡介
假設上圖是一個LCD屏幕,屏幕中一個一個密密麻麻的黑點稱之爲像素點,每一行有若干個點,試想下有一個電子槍,電子槍位於某一個像素點的背後,然後向這個像素髮射紅,綠,藍三種原色,這三種顏色按不同的比例組合成任意一種顏色。電子槍在像素點的背後,一邊移動一邊發出各種顏色的光,電子槍從左往右移動,到右邊邊緣之後就跳到下一行的行首,繼續從左往右移動,如此往復,一直移動到屏幕右下角的像素點,最後就跳回原點。
問題1:電子槍如何移動?
答: 有一條像素時鐘信號線(DCLK),連接屏幕,每來一個像素時鐘信號(DCLK),電子槍就移動一個像素。
問題2:電子槍打出的顏色該如何確定?
答:有三組紅,綠,藍信號線(RGB),連接屏幕,由這三組信號線(RGB)傳遞顏色
問題3:電子槍移動到LCD屏幕右邊邊緣時,如何得知需要跳到下一行的行首?
答:有一條水平同步信號線(HSYNC),連接屏幕,當接收到水平同步信號(HSYNC),電子槍就跳到下一行的最左邊
問題4:電子槍如何得知需要跳到原點?
答:有一條垂直同步信號線(VSYNC),連接屏幕,當接收到垂直同步信號線(VSYNC),電子槍就由屏幕右下腳跳到左上角(原點)
問題5:電子槍如何得知三組信號線(RGB)確定的顏色就是它是需要的呢?
答:有一條RGB數據使能信號線(DE),連接屏幕,當接收到數據使能信號線(DE),電子槍就知道這時由這三組信號線(RGB)確定的顏色是有效的,可以發射到該像素點。
下圖是開發板,LCD控制器,LCD屏幕的框圖
之前提到的像素時鐘(DCLK), 三組紅,綠,藍信號線(RGB),水平同步信號線(HSYNC),垂直同步信號線(VSYNC),RGB數據使能信號線(DE)都是從LCD控制器發出的,只要開發板支持LCD顯示,它肯定就會有一個LCD控制器。
問題6:RGB三組信號線上的數據從何而來?
上圖是RGB數據來源框圖,內存中劃出一部分區域,這塊區域被稱爲Framebuffer。在Framebuffer裏面我們會構造好每一個顏色所對應的像素。Framebuffer中的值會被LCD控制器讀出來,通過RGB三組線傳給電子槍,電子槍再把它轉換成紅綠藍三種顏色打到屏幕上。在屏幕上的每一個像素,在Frambuffer裏面都有一個對應存儲空間,裏面存有屏幕上對應像素的顏色。
LCD控制器會周而復始的從Framebuffer中取出一個個像素的顏色值,發給電子槍,同時需要和DCLK,VSYNC,HSYNC,DE這些信號配合好。
1.2 RGB接口的LCD硬件連接信號
本次實驗編程的屏幕屬於RGB接口的顯示屏,RGB接口的顯示屏至少具備以下信號:
① 像素時鐘信號(DCLK)
用於同步LCD上的DE,VS,HS,RGB信號線。
② RGB數據信號(R[0:7] ,G[0:7],B[0:7])
三組信號線組成,分別代表R(紅色),G(綠色),B(藍色),這三組信號中的每一組都會有8根信號,三組共同組成24根線來控制顏色數據。
有些LCD只需要16位顏色(RGB565),可以只使用8條紅色數據線中的高5位,其餘3位懸空;只使用8條綠色數據線中的高6位,其餘2位懸空;只使用8條藍色數據線中的高5位,其餘3位懸空。
③ RGB數據使能信號(DE)
RGB接口的 LCD 有兩種驅動模式:DE 模式和 HV 模式。
在HV模式下,需要用到HS與VS來控制刷新。比如對於分辨率爲1024x600RGB的LCD,LCD控制器發出HS信號後,就會發出1024個DCLK,在每個DCLK上傳輸像素數據;當發出600個HS信號後,就會發出一個VS信號。
在DE模式下,需要用到DE信號來控制刷新,比如對於分辨率爲1024x600RGB的LCD,LCD控制器發出DE信號後,就要發出1024個DCLK,在每個DCLK上傳輸像素數據;當發出600個DE信號,刷新完一幀數據後,又從第1行開始掃描。
編寫LCD程序時,一般都會兼容兩種模式,所以程序中會設置這3個信號:數據使能信號(DE),垂直同步信號(HS),水平同步信號(VS)。
④ 水平同步信號
電路中常用HS或HSYNC表示,詳細說明下一小節會說明。
⑤ 垂直同步信號(幀同步或場同步)
電路中常用VS或VSYNC表示,相信說明下一小節會說明。
⑥ LCD背光電源控制信號
所謂背光,就是在LCD顯示屏的背部有很多的燈珠,用它們來照亮屏幕。
背光電路可以用GPIO引腳控制,輸出高低電平表示亮滅,只有亮滅兩種狀態;也可以用PWM引腳來控制,它可以輸出佔空比不同的方波,根據佔空比來調節LCD的亮度,更加精細。
100ASK_IMX6ULL開發板的LCD接口定義(在資料光盤/05_Hardware(原理圖)->Base_board->100ask_imx6ull_v1.1.pdf)),就包含了上面所述的幾種信號類型,如下圖:
1.3 TFT材質液晶屏接口簡介(7寸1024600TN-RGB)
嵌入式設備中一般都採用TFT材質的液晶屏,如遇到別的材質的屏幕,操作方法也是相似的,可能稍微有些差異,針對差異去做修改即可,7寸1024600TN-RGB液晶屏幕接口引腳如下圖,一些關鍵的引腳做了註釋。
1.4 LCD關鍵特性
1.4.1 行時序
接下來我們查看下100ASK_7.0寸LCD手冊時序圖(在資料光盤/06_Datasheet(數據手冊)->Extend_modules->7寸LCD模塊.zip->7.0-13SPEC(7寸1024600TN-RGB).pdf):
如上圖所示,從最小的像素開始分析,電子槍每次在CLK下降沿採集數據,即從數據線上得到數據,併發射到顯示屏上,然後移動到下一個位置。DATA數據線上的數據來源就是前面介紹的FrameBuffer。就這樣從一行的最左邊,一直移動到一行的最右邊,完成了一行的顯示。
電子槍當打完一行的最後一個數據後,就會收到Hsync行同步信號,如上圖可知該LCD的Hsync有效脈衝爲低脈衝,根據時序圖,一個行週期可以大致分爲四部分組成:
① thp:horizontal pulse
Hsync信號的脈衝,thpw稱爲脈衝寬度,這個時間不能太短,太短電子槍可能識別不到。
② thb:horizontal back porch
③ thf:horizontal front porch
Hsync信號發出後,電子槍從最右端移動到最左端,這是需要時間的:這個移動的時間就是thb。
從Hsync結束到DE開始的區間被稱爲行掃描的後肩(back porch),從DE結束到Hsync開始稱爲前肩(front porch)。
④ thd:horizontal data
thd爲數據有效區,假設一行的有效像素個數爲x。
1.4.2 列時序
同理,電子槍被Hsync驅動,一行一行地從上面移動到最下面時,它會收到一個Vsync信號(上圖中標爲VSD):你應該回到原點去了。如上圖可知該LCD的VSD有效脈衝爲低脈衝,然後就讓電子槍移動回最上邊。VSD中的tvpw是脈衝寬度,tvb是移動時間,tvfp表示顯示完最下一行像素,再過多久VSD纔來,tvd爲數據有效區,tv爲打完一幀所需要的時間。假設一共有y行,則LCD的分辨率就是x*y。
電子槍打完一幀的最後一個數據後,就會收到Vsync行同步信號。根據時序圖,一幀的週期可以大致分爲四部分組成:
① tvp:vertical pulse
Vsync信號的脈衝,tvpw稱爲脈衝寬度,這個時間不能太短,太短電子槍可能識別不到。
② tvb:vertical back porch
③ tvf:vertical front porch
Vsync信號發出後,電子槍從最底端移動到最上端,這是需要時間的:這個移動的時間就是tvb。
在電子槍移動的過程中,Hsync信號會一直有,但是RGB上沒有有效的數據。假設一幀信號裏,含有有效數據的第1個Hsync信號發生時間稱爲T1;一幀裏,最後一行有效數據的下一個Hsync信號發生的時間稱爲T2。
從Vsync結束到T1的這段時間,被稱爲列掃描的後肩(back porch),從T2到Vsync開始稱爲前肩(front porch)。
④ tvd:vertical data
tvd爲數據有效區,假設一幀數據裏的有效行數爲y。
LCD的分辨率是:x*y。
1.4.3 DE模式
RGB數據有效信號(DEN),高電平表示數據有效。
根據以上信息大致瞭解幾個關鍵信號的時序和極性,後面章節會詳細介紹。
再根據上圖,我們就可以確定像素時鐘是51.2Mhz。
1.4.4 RGB數據的存放形式
前面的LCD硬件接口圖裏用到了24條數據線:R0-R7、G0-G7、B0-B7,每個像素的顏色佔據3*8=24位。硬件上LCD的數據引腳連接是固定的,但是我們使用的時候,在軟件上可以支持不同的像素格式,比如ARGB888,ARGB555,RGB565等等。也就是說雖然硬件上用了24條數據線,但是軟件上我們可以提供24位數據,也可以只提供16位數據。當只提供16位數據時,硬件上24位數據線中會有8條數據線上沒有數據。比如對於RGB565格式,R0R1R2、G0G1、B0B1B2這8條數據線上是不傳輸數據的,恆爲0。
本實驗支持ARGB888和ARGB555。
ARGB888:每個像素就佔據32位數據,其中最高字節A表示灰度透明度其餘RGB數據8+8+8=24BPP,因爲硬件上根本沒接透明度的數據線,所以透明度的數據沒用上。
ARGB555:每個像素就佔據16位數據,其中最高位A表示灰度透明度其餘RGB數據5+5+5=15BPP,但是LCD本身沒有透明度的數據線,所以透明度數據沒用上。
-END-
100ask_imx6ull購買地址:
http://100ask.taobao.com (點開第一個海報即可進入)
以後會不定期連載100ASK_IMX6ULL裸機文檔。
是否意猶未盡? 100ASK_IMX6ULL 裸機文檔完整版(600頁)下載
下載方法一,
a.
下載安裝Git Bash工具 :
https://gitforwindows.org/
b.
打開Git Bash,執行命令:
git clone https://gitee.com/weidongshan/imx6ull_NoosProgramProject.git
大概1分鐘,下載成功後,你會在C:\Users 目錄下,你自己的用戶目錄裏,看到一個imx6ull_NoosProgramProject目錄。
下載方法二,
百度網盤,
鏈接:
https://eyun.baidu.com/s/3smDzFAH
密碼:LDCn
路徑:
100ask_imx6ull_2020.02.29_v2.0
->10_裸機程序及文檔
嵌入式Linux應用開發完全手冊第2版_韋東山全系列視頻文檔全集.pdf的第四篇 裸機開發 。
我們推薦您使用下載速度更快的GIT下載。