SC880xG_LCD驅動介紹_第1頁
SC880xG_LCD驅動介紹_第2頁
SC880xG_LCD驅動介紹_第3頁
SC880xG_LCD驅動介紹_第4頁
SC880xG_LCD驅動介紹_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、人力資源部培訓發展組 . 1 SC880 xG LCD 驅動介紹上海 北京深圳圣迭戈韓國印度Innovation changes the 2 課程名稱:課程名稱: SC880 xGSC880 xG LCD LCD 驅動驅動介紹介紹 課程類別:課程類別: 客戶培訓課程客戶培訓課程Innovation changes the 3 主要內容主要內容SC880 xG LCD硬件接口介紹硬件接口介紹SC880 xG LCDC刷屏過程刷屏過程SC880 xG SPI接口和刷屏過程接口和刷屏過程SC880 xG LCD屏自適應介紹屏自適應介紹SC880 xG LCD驅動函數接口介紹驅動函數接口介紹Innov

2、ation changes the 4 LCDLCD硬件接口硬件接口并行接口并行接口SC880 xG LCM支持的硬件接口是MCU接口,MCU接口根據時序不同分為兩種類型1、 Intel的80接口。2、 Motorola的68接口。兩種接口時序通過寄存器0 x2070014C進行選擇。芯片默認的是80接口。MCU接口控制信號線有:WR,RD,RS,RESET,CSInnovation changes the 5 LCDLCD硬件接口硬件接口 MCU接口的特點是控制簡單不需要時鐘和同步信號。刷屏的數據首先寫到LCD屏的GRAM中,然后由LCD自動刷到屏上。由于GRAM大小的限制由于這種接口的屏都

3、不會很大。目前SC880 xG支持的LCD屏的大小為QCIF,QVGA,VGA,CIF,HVGA,WVGA。 MCU接口數據線是并行連接的,一般稱為數據總線。目前SC880 xG支持的數據總線的寬度為8,9,16,18。Innovation changes the 6 . 62022-1-14LCDLCD硬件接口硬件接口以9位總線的MCU接口為例Innovation changes the 7 LCDLCD硬件接口硬件接口 CS: 片選線,表示是否對LCD屏操作低電平有效。 RS:命令/數據選擇線,告訴LCD屏數據總線上傳送的是命令還是數據。 WR:寫入信號線,表示數據要寫入LCD的寄存器或G

4、RAM。 RD:讀出信號線,表示要從LCD寄存器中讀出數據。 DB17:9:數據總線,在SC880 xG側連接到D8:0。Innovation changes the 8 LCDLCD硬件接口硬件接口 I80模式寫LCD寄存器時序圖Innovation changes the 9 LCDLCD硬件接口硬件接口 I80模式讀LCD寄存器時序圖Innovation changes the 10 LCDLCD硬件接口硬件接口 I80模式寫LCD GRAM時序圖Innovation changes the 11 LCDLCD硬件接口硬件接口目前的SC880 xG平臺的硬件參考設計中一般使用8位并行接口

5、,16位并行接口。1、使用8位并接口,BB端接16位總線的低8位70。LCD接18位的高8位1710。2、 使用16位并接口,BB端接16位總線150。LCD接18位中的81和1710。Innovation changes the 12 LCDLCD硬件接口硬件接口 LCDC是什么? LCDC是LCD Controller的縮寫,用于獲取圖像數據和OSD數據 ,并將這些數據混合在一起,輸出到LCD屏或寫回到內存中 。SC880 xG支持6個數據源 , 一個圖像層數據源,5個OSD層數據源 ,這6個數據源可以同時進行alpha合成。Innovation changes the 13 LCDLCD

6、硬件接口硬件接口Innovation changes the 14 LCDLCD硬件接口硬件接口Innovation changes the 15 LCDLCD硬件接口硬件接口Innovation changes the 16 LCDLCD硬件接口硬件接口 LCDC控制器內部包含了兩個LCM單元。同過這兩個LCM單元,LCDC可以同時控制兩個屏。兩個LCM的選擇由寄存器控制,請參考SC880 xGDevice Specification 正常刷屏情況下,LCDC將合成后的圖像直接通過LCM刷到LCD屏上。 同時支持兩個屏只有片選線是獨立的,其他數據和信號線復用。 LCDC支持FMARK功能。I

7、nnovation changes the 17 LCDCLCDC刷屏過程刷屏過程Mocor中底層刷屏接口函數是PUBLIC ERR_LCD_E LCD_InvalidateRect ( LCD_ID_E lcd_id,/ID of lcd to operate uint16 left, /left of the rectangle uint16 top, /top of the rectangle uint16 right, /right of the rectangle uint16 bottom /bottom of the rectangle)這個函數調用_ConfigBlock (l

8、cd_id,left,top,right,bottom);配置圖像的各個不同的層。接著調用LCDC_AppInvalidateRect (lcd_id,left, top, right,bottom)來執行真正的刷屏操作。Innovation changes the 18 LCDCLCDC刷屏過程刷屏過程LOCAL void _ConfigBlock ( LCD_ID_E lcd_id, uint16 left,uint16 top, uint16 right,uint16 bottom) LCD_IMG_LAYER_PARAM_T layer_cfg = 0; LCD_OSD_LAYER_P

9、ARAM_T osd_cfg = 0; LCDC_RECT_T disp_rect = 0; int32 i = 0; LCDC_AppDisableAllLayer(); /-停止使用所有的層 for (i=0 ; iLCD_LAYER_ID_MAX ; i+) if (i=0) /image layer Innovation changes the 19 LCDCLCDC刷屏過程刷屏過程if (s_buffer_infolcd_idi.is_enable) /-設置圖像層參數 layer_cfg.layer_en = TRUE; layer_cfg.src_base_addr.y_addr

10、 = (uint32)s_buffer_infolcd_idi.mem_ptr; layer_cfg.src_base_addr.uv_addr = (uint32)s_buffer_infolcd_idi.uv_addr; layer_cfg.format = _lcd_data_format_convert(s_buffer_infolcd_idi.cfg.resolution); layer_cfg.endian_switch = s_buffer_infolcd_idi.cfg.endian_switch; layer_cfg.src_size.w = s_buffer_infolcd

11、_idi.cfg.width; layer_cfg.src_size.h = s_buffer_infolcd_idi.cfg.end_y -s_buffer_infolcd_idi.cfg.start_y+1; layer_cfg.src_trim_rect.x = 0; layer_cfg.src_trim_rect.y = 0;Innovation changes the 20 LCDCLCDC刷屏過程刷屏過程 layer_cfg.src_trim_rect.w = s_buffer_infolcd_idi.cfg.end_x-s_buffer_infolcd_idi.cfg.start

12、_x+1; layer_cfg.src_trim_rect.h = s_buffer_infolcd_idi.cfg.end_y - s_buffer_infolcd_idi.cfg.start_y+1; layer_cfg.disp_pos.x = s_buffer_infolcd_idi.cfg.start_x; layer_cfg.disp_pos.y = s_buffer_infolcd_idi.cfg.start_y; else layer_cfg.layer_en = FALSE; /-配置圖像層 LCDC_AppConfigBlock (LCD_LAYER_IMAGE, (voi

13、d *) &layer_cfg); Innovation changes the 21 LCDCLCDC刷屏過程刷屏過程 else/osd layer /-設置OSD第i層參數 if (s_buffer_infolcd_idi.is_enable) osd_cfg.layer_en = TRUE; osd_cfg.alpha = (uint8) s_buffer_infolcd_idi.cfg.alpha; osd_cfg.alpha_base_addr=(uint32)s_buffer_infolcd_idi.alpha_addr; osd_cfg.alpha_mode = (LCD

14、_OSD_ALPHA_E)s_buffer_infolcd_idi.cfg.alpha_sel; osd_cfg.colorkey = s_buffer_infolcd_idi.cfg.colorkey; osd_cfg.colorkey_en = s_buffer_infolcd_idi.cfg.colorkey_en; osd_cfg.disp_pos.x = s_buffer_infolcd_idi.cfg.start_x; osd_cfg.disp_pos.y = s_buffer_infolcd_idi.cfg.start_y; osd_cfg.format = lcd_data_f

15、ormat_convert(s_buffer_infolcd_idi.cfg.resolution); Innovation changes the 22 LCDCLCDC刷屏過程刷屏過程 osd_cfg.src_trim_rect.h = s_buffer_infolcd_idi.cfg.end_y - s_buffer_infolcd_idi.cfg.start_y+1; else osd_cfg.layer_en = FALSE; /-配置OSD第i層 LCDC_AppConfigBlock (i, (void *) &osd_cfg); disp_rect.x = left;

16、disp_rect.y = top; disp_rect.w = right - left + 1; disp_rect.h = bottom - top + 1; LCDC_AppSetDisplayRect (&disp_rect); Innovation changes the 23 LCDCLCDC刷屏過程刷屏過程PUBLIC uint32 LCDC_AppInvalidateRect (uint32 lcd_id, uint16 left, uint16 top, uint16 right,uint16 bottom) BOOLEAN result= SCI_TRUE; s_

17、lcdc_cfg.refresh_rect.x = left; s_lcdc_cfg.refresh_rect.y = top; s_lcdc_cfg.refresh_rect.w = right - left + 1; s_lcdc_cfg.refresh_rect.h = bottom - top + 1; _LCDC_SetParam(lcd_id); if (!s_lcdc_cfg.cap_param.cap_en) /-寫數據到LCD屏lcm_ctrl_val = (right-left+1)*(bottom-top+1); lcm_ctrl_val |= s_record_cs_p

18、inlcd_idoperation-lcd_InvalidateRect (left, top, right, bottom);#endif _ConfigBlock (lcd_id,left,top,right,bottom);/-配置各圖層 MMU_InvalideDCACHE(); LCDC_AppOpenInt (LCD_INT_LCDC_DONE,LCDC_AppLcdcDone); LCDC_AppRegisterCallBack (LCD_INT_LCDC_DONE,LCD_FreeSemaphore);Innovation changes the 33 SPISPI刷屏過程刷屏

19、過程 if (SCI_SUCCESS != LCDC_AppInvalidateRect (lcd_id,left, top, right, bottom) /-刷數據到全局緩沖區 SCI_PASSERT (0, (lcd invalidate timeout); if (LCD_BRUSH_MODE_SYNC = brush_mode) if (SCI_InThreadContext() & !LCDC_AppGetCheckState() _LCD_GetEvent (LCD_DONE_EVENT, 0); if (LCDC_AppGetCheckState() LCD_FreeS

20、emaphore(); Innovation changes the 34 SPISPI刷屏過程刷屏過程#ifdef SPI_PORT_LCD if(!s_is_cap_mode) /-刷數據到LCD屏 s_lcd_property_tablelcd_id.lcd_spec.spec_ptr-operation-lcd_InvalidateRect (left, top, right, bottom); #endif return ERR_LCD_NONE;Innovation changes the 35 SPISPI刷屏過程刷屏過程改動驅動函數XXXX_InvalidateRect(),在

21、此函數中調用SPI接口進行刷屏。同時對SPI接口函數進行信號量保護。Innovation changes the 36 LCDLCD屏自適應屏自適應MOCOR平臺軟件對不同的LCD屏采取了自適應處理。自適應:MOCOR平臺在開機初始化過程中,自動識別LCD屏的型號,并根據不同的型號調用不同的LCD屏驅動程序。標識LCD屏的方法: 1、 LCD ID 標識LCD 2、 LCM ADC的值標識LCD主要使用第一種方式代碼:文件LCM_PROD.C。Innovation changes the 37 LCDLCD驅動函數接口驅動函數接口SC880 xG平臺中LCD驅動要實現的函數:typedef s

22、truct lcd_operations_tag ERR_LCD_E (*lcd_Init) (void); ERR_LCD_E (*lcd_EnterSleep) (BOOLEAN is_sleep); ERR_LCD_E (*lcd_SetContrast) (uint16 contrast); ERR_LCD_E (*lcd_SetBrightness) (uint16 brightness); ERR_LCD_E (*lcd_SetDisplayWindow) (uint16 left, uint16 top, uint16 right, uint16 bottom); ERR_LCD

23、_E (*lcd_InvalidateRect) (uint16 left, uint16 top, uint16 right, uint16 bottom); ERR_LCD_E (*lcd_Invalidate) (void); void (*lcd_Close) (void); ERR_LCD_E (*lcd_RotationInvalidateRect) (uint16 left, uint16 top, uint16 right, uint16 bottom, LCD_ANGLE_E angle); ERR_LCD_E (*lcd_SetBrushDirection) (LCD_DIRECT_E direct_type); void (*lcd_Rst) (void); LCD_OPERATIONS_T;Innovation changes the 38 LCDLCD驅動函數接口驅動函數接口/ 這個函數指針對應

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論