ARM中TFT點屏的實驗

2021-06-14 01:09:17 字數 1655 閱讀 4132

**:

大體過程如下:

一系列初始化lcd的相關暫存器:

要點: lcd的顯示是直接在ram中開闢4m的空間對應在lcd中顯示

lcdbank=0x180,用於對ram定址

lcdbaseu=0x80000,上部掃瞄位址

lcdbasel 下部掃瞄位址

二者的設定可以滾動

另外注意lcd時鐘,行場掃瞄的計算公式

顏色是個16bpp,24位的數值(自動查詢表)

為了回答一些人的提問補充一些要點:

這裡我再強調一下要點,因為gui移植成敗與它直接相關:

1)  初始化lcd的io口

2)  開啟lcd的背光

3)  配置lcdcon1,他主要設定的是vclk(hclk/(clkval+1)*2,clkval自定義),vclk『一般應該大於6.5m。設定選擇了tft,16bbp的顏色深度等等

設定:一下的字域:他們直接影響螢幕的偏移,可以手動慢慢除錯也可以計算:

#define vfpd            (1)          //垂直同步訊號的前肩

#define vspw           (1)          //垂直同步訊號的脈寬

#define hbpd            (22)        //水平同步訊號的後肩

#define hfpd            (18)        //水平同步訊號的前肩

#define hspw           (18)        //水平同步訊號的脈寬

方法如下:

vbpd:確定幀同步訊號和幀資料傳輸前的一段延遲時間,是幀資料傳輸前延遲時間和行同步時鐘間隔寬度的比值,如圖,vbpd=t3/t6=1.02 ms/31.77μs=32。

是幀資料傳輸後延遲時間和行同步時鐘間隔寬度的比值,如圖,vfpd=t5/t6=0.35 ms/31.77μs=11。

vspw:確定幀同步時鐘脈衝寬度,是幀同步訊號時鐘寬度和行同步時鐘間隔寬度的比值。如圖,vspw=t2/t6=0.06 ms/31.77μs=2。

hbpd:確定行同步訊號和行資料傳輸前的一段延遲時間,描述行資料傳輸前延遲時間內vclk脈衝個數,如圖,vbpd=t7×vclk=1.89 μs×25mhz=47。

hfpd:確定行資料傳輸完成後到下一行同步訊號到來的一段延遲時間,描述行資料傳輸後延遲時間內vclk脈衝個數,如圖,hfpd=t9×vclk=0.94 μs×25 mhz="24"。

hspw:確定行同步時鐘脈衝寬度。描述行同步脈衝寬度時間內vclk脈衝個數,如圖,hspw=3.77μs×25 mhz="94"。

**:實現了幾種顏色的切換

void lcd_init(void)

void lcd_draw(void)

delay05(200);        //延時一秒

pdisp=(long int *)framebuf_dma_base;

for(i=0;i

delay05(200);        //延時一秒

pdisp=(long int *)framebuf_dma_base;

for(i=0;i

delay05(200);        //延時一秒

pdisp=(long int *)framebuf_dma_base;}}

int main(void)

arm 彙編中的巨集

巨集定義用乙個單個的有意義的名字來來代替乙個 塊,避免重複乙個 塊好多次 macro label testandbranch dest,reg,cc label cmp reg,0 b cc dest mend 在macro偽指令之後是乙個巨集的原型語句,巨集的原型語句定義了你用來呼叫巨集的名字 t...

arm中的飽和指令

armv6 及更高版本中推出了飽和指令 ssat 和 usat,ssat16 和 usat16 有符號飽和到任何位位置和無符號飽和到任何位位置,可選擇在飽和前進行移位。ssat可將有符號值飽和到有符號範圍內。usat可將有符號值飽和到無符號範圍內。語法 oprd,sat,rm其中 op 是ssat或...

ARM中的STM LDM指令

stm ldm是批量傳輸資料的指令,這裡要說明的是 15 0 register list代表了16個暫存器,傳輸資料的時候r15始終是最後傳輸的,按照從r0到r15的順序,r15始終在高位址。遞增傳輸倒好理解,關鍵是遞減傳輸,2440的datasheet令我費解,看看datasheet裡的一張圖 假...