1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  */
9 
10 #ifndef LCD_GENERAL_H_INCLUDED
11 #define LCD_GENERAL_H_INCLUDED
12 
13 #include <rtgui/rtgui.h>
14 #include <rtgui/driver.h>
15 #include <rtgui/rtgui_server.h>
16 #include <rtgui/rtgui_system.h>
17 
18 
19 #define LCDWIDTH 320
20 #define LCDHEIGHT 240
21 
22 //Macro for SIZE register setting
23 #define XMAX   ((LCDWIDTH/16) << 20)
24 #define YMAX   (LCDHEIGHT)
25 
26 //Macro for PCR register setting
27 #define TFT   ((U32)1 << 31)
28 #define COLOR   (1 << 30)   //1为色彩.
29 #define PBSIZE   (0 << 28)
30 #define BPIX     (4 << 25)   //存储器中一个像素对应16bit
31 #define PIXPOL   (0 << 24)   //像素极性—设置像素的极性,高有效    //0<<24
32 #define FLMPOL   (1 << 23)   //首行标志极性—设置首行标志的极性,低有效.
33 #define LPPOL   (1 << 22)   //行脉冲极性—设置行脉冲信号的极性,低有效.
34 #define CLKPOL   (0 << 21)   //LCD 移位时钟极性—设置LCD 移位时钟的有效沿的极性,下降延有效.
35 #define OEPOL   (1 << 20)   //输出使能极性—设置输出使能信号的极性,高有效.
36 #define END_SEL (0 << 18)   //印第安格式选择,小印第安.
37 #define ACD_SEL (0 << 15)   //ACD时钟源选择—选择晶向变换计数器的时钟,使用FLM 作为ACD 计数时钟
38 #define ACD   (0 << 8 )   //被动模式.
39 #define PCD   (10)
40 
41 //Macro for HCR regiter setting //水平配置寄存器.
42 #define H_WIDTH ((U32)46 << 26)
43 #define H_WAIT_1 (20 << 8)
44 #define H_WAIT_2 (20)
45 
46 //Macro for VCR register setting //垂直配置寄存器.
47 #define V_WIDTH ((U32)10 << 26)
48 #define PASS_FRAME_WAIT (0 <<16)
49 #define V_WAIT_1 (3 << 8)
50 #define V_WAIT_2 (3)
51 
52 //Macro for LGPR register setting
53 #define GRAY   (4)    //灰度等级.
54 
55 //Macro for PWMR register setting
56 #define SCR   (0 << 9)   //时钟源选择.行脉冲.
57 #define CC_EN (0 << 8)   //对比度控制使能,关.
58 #define PW   (64)    //输出脉冲数目,
59 
60 //Macro for DMACR register setting
61 #define BL   ((U32)1 << 31)   //固定长度.
62 #define HM   (7 << 16)
63 #define TM   (3)
64 
65 void lcd_set_pixel(rtgui_color_t *c, int x, int y);
66 void lcd_get_pixel(rtgui_color_t *c, int x, int y);
67 void lcd_draw_hline(rtgui_color_t *c, int x1, int x2, int y) ;
68 void lcd_draw_vline(rtgui_color_t *c, int x, int y1, int y2) ;
69 void lcd_draw_raw_hline(rt_uint8_t *pixels, int x1, int x2, int y)  ;
70 void lcd_update(rtgui_rect_t *rect);
71 rt_uint8_t * lcd_get_framebuffer(void);
72 rt_err_t sep4020_lcd_init(void);
73 
74 
75 #endif
76 
77 
78