LCD panel

這次使用的是toppoly的LCD panel
學到了兩個東西
點亮LCD panel 分兩部份 一部分是直覺化可以想到的顏色 另一是背光
背光: 選擇用PWM的方式 可以省一點電 (據說另一種方式 及是直接給High電壓 但是 沒使用過)

PWM的工作原理:是利用人類視覺暫留的原理 讓螢幕快速的閃爍 會有一個頻率 可以選擇自己適合的頻率值 但是因為我們的產品需要錄音 所以必須要把這個頻率 控制在100HZ以下 30KHZ以上 錄音的時候 才不會錄到頻率的聲音, 再來 頻率決定了 就有 週期 有了週期 就知道 High-Low一個週期 多久 (以正回饋的方式定義) 當High的百分比越高螢幕就越亮 反之則越暗,也就是 文件中的duty-cycle.
這是設計PWM的一個例子~~ 當PWM的duty-cycle 越高 LCD-panel out的電壓也會越高 panel就會越亮。

那另一部份 要讓panel 可以顯示顏色 有幾個需要符合的條件
這片panel 有兩個mode 一個是only data enable mode 一個是data enable+HSync+VSync
toppoly的panel 獨特有only data enable mode 在這個mode下 不需要送HS VS 只要 DE和clk訊號正確就可以用了(我們的硬體建議我們用這種mode 聽說在打靜電的時候 會比另一種mode效果好 干擾少 這我就不得而知了???? 對這部份 希望以後有機會可以了解為什麼)
那data enable +HS+VS mode:
要給HS和VS的值 這從時序圖上可以算出來 從每次開始有Data的地方為0,還有要給面板長寬的大小 可視範圍的大小 是幾個點 還是幾條線

還有另一個要注意的就是 Power on/off的時序圖 會有一些腳該在什麼時間內拉high 或Low

其它如果還有問題
就量量訊號 看看頻率 等等 對不對
基本上就是這樣

我們使用控制panel的IC 是MQ1188 就像這樣 設定吧~
*(volatile unsigned long *) (kMQMMIO + 0x1a0) = ((240) << 16);//Horizontal window width (HWW).

//Vertical Window Control (GC09R)
*(volatile unsigned long *) (kMQMMIO + 0x1a4) = ((320) << 16);//Vertical window height (VWH)

//Horizontal Display Control (GC02R)
*(volatile unsigned long *) (kMQMMIO + 0x188) = ((280)| //Horizontal display total (HDT).
(240 << 16)); //Horizontal display end (HDE).
//Vertical Display Control (GC03R)
*(volatile unsigned long *) (kMQMMIO + 0x18c) = ((326) | //Vertical display total (VDT).
((320) << 16)); //Vertical display end (VDE).
//Horizontal Synchronization Control (GC04R)
*(volatile unsigned long *) (kMQMMIO + 0x190) = (250 | //Horizontal synchronization start (HSS).
(260 << 16)); //Horizontal synch end (HSE).
// Vertical Synchronization Control (GC05R)
*(volatile unsigned long *) (kMQMMIO + 0x194) = (322 | //Vertical sync start (VSS).
(324 << 16)); //Vertical sync end (VSE).

//1maximum number of FP Control registers
//2 Setup Flat panel control registers

// Flat-Panel Control Register (FP00R)
*(volatile unsigned long *) (kMQMMIO + 0x600) |= (FP_TYPE_TFT | FP_COLOR |TFT_18BITS_COLOR );//0x20
//Flat-Panel Pin Control (FP01R)
*(volatile unsigned long *) (kMQMMIO + 0x604) |= (FSCLK_DELAY0|TFT_FHSYNC | TFT_FVSYNC_HSE );//0x30000;
//Flat-Panel Pin Output Control (FP02R)
*(volatile unsigned long *) (kMQMMIO + 0x608) |= (FDE_OUTPUT_ENABLE |ENVEE_ENABLE |ENVDD_ENABLE |
TFT_18BIT_COLOR_IF |FSCLK_OUTPUT_ENABLE |
FHSYNC_OUT_ENABLE | FVSYNC_OUT_ENABLE |0x80000000);//0xDFCFCFD;

// Flat-Panel Pin Polarity Control (FP05R)
*(volatile unsigned long *) (kMQMMIO + 0x614) = (FHSYNC_ACTIVE_L | FVSYNC_ACTIVE_L |0x01);//0x0B000000;
//2Setup image rotation and enable GC
//Windows Start address(GC0CR )
*(volatile unsigned long *) (kMQMMIO + 0x61C) =0x80000000;
*(volatile unsigned long *) (kMQMMIO + 0x1b0) = 0x0;
//Window Stride (GC0ER)
*(volatile unsigned long *) (kMQMMIO + 0x1b8) = 0x01e0; // Windows Stride= 240*2 bytes
//Graphics Controller Control Register (GC00R)

Comments