**:
大體過程如下:
一系列初始化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裡的一張圖 假...