aboutsummaryrefslogtreecommitdiff
path: root/example-primer2/st7732.h
blob: bc684d7068aad69ae70ac485eb0aa0d342417c56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* ST7732 LCD driver chip command byte.
  command_name = value  read_n_bytes:write_n_bytes: simple description  */
enum st7732_cmd {
  NOP = 0x00,		/* 0:0: No Operatin */
  SWRESET = 0x01,	/* 0:0: Software reset */
  RDDID = 0x04,		/* 0:3: Read Display ID */
  RDRST = 0x09,		/* 0:4: Read Display Status */
  RDDPM = 0x0a,		/* 0:1: Read Display Power Mode */
  RDD_MADCTL = 0x0b,	/* 0:1: Read Display MADCTL */
  RDD_COLMOD = 0x0c,	/* 0:1: Read Display Pixel Format */
  RDDIM = 0x0d,		/* 0:1: Read Display Image Mode */
  RDDSM = 0x0e,		/* 0:1: Read Display Signal Mode */
  RDDSDR = 0x0f,	/* 0:1: Read Display Self-diagnostic result */
  SLPIN = 0x10,		/* 0:0: Sleep in & booster off */
  SLPOUT = 0x11,	/* 0:0: Sleep out & booster on */
  PTLON = 0x12,		/* 0:0: Pertial mode on */
  NORON = 0x13,		/* 0:0: Normal mode on (Pertial off) */
  INVOFF = 0x20,	/* 0:0: Display inversion off */
  INVON = 0x21,		/* 0:0: Display inversion on */
  GAMSET = 0x26,	/* 1:0: Gamma curve select */
  DISPOFF = 0x28,	/* 0:0: Display off */
  DISPON = 0x29,	/* 0:0: Display on */
  CASET = 0x2a,		/* 4:0: Column address set */
  RASET = 0x2b,		/* 4:0: Raw address set */
  RAMWR = 0x2c,		/* 1:0: Memory write */
  RAMRD = 0x2e,		/* 0:1: Memory read */
  PTLAR = 0x30,		/* 4:0: Partial start/end address set */
  SCRLAR = 0x33,	/* 6:0: Scroll area set */
  TEOFF = 0x34,		/* 0:0: Tearing effect line off */
  TEON = 0x35,		/* 1:0: Tearing effect mode set & on */
  MADCTL = 0x36,	/* 1:0: Memory data access control */
  VSCSAD = 0x37,	/* 2:0: Scroll start address of RAM */
  IDMOFF = 0x38,	/* 0:0: Idle mode off */
  IDMON = 0x39,		/* 0:0: Idle mode on */
  COLMOD = 0x3a,	/* 1:0: Interface pixel format */
  RDID1 = 0xda,		/* 0:1: Read ID1 */
  RDID2 = 0xdb,		/* 0:1: Read ID2 */
  RDID3 = 0xdc,		/* 0:1: Read ID3 */
  RGBCTR = 0xb0,	/* 1:0: Set RGB signal control */
  FRMCTR1 = 0xb1,	/* 3:0: In normal mode */
  FRMCTR2 = 0xb2,	/* 3:0: In Idel mode (8-colors) */
  FRMCTR3 = 0xb3,	/* 6:0: In partial mode + Full colors */
  INVCTR = 0xb4,	/* 1:0: Display inversion control */
  RGB_BPCTR = 0xb5,	/* 4:0: RGB I/F Blanking porch setting */
  DISSET5 = 0xb6,	/* 2:0: Display function setting */
  PWCTR1 = 0xc0,	/* 2:0: Power control setting */
  PWCTR2 = 0xc1,	/* 1:0: Power control setting */
  PWCTR3 = 0xc2,	/* 2:0: Power control setting (Full colors) */
  PWCTR4 = 0xc3,	/* 2:0: Power control setting (8-colors) */
  PWCTR5 = 0xc4,	/* 2:0: Power control setting (In partial mode) */
  VMCTR1 = 0xc5,	/* 2:0: VCOM control */
  VMOFCTR = 0xc6,	/* 1:0: VCOM offset control */
  WRID2 = 0xd1,		/* 1:0: Write ID2 value to NV */
  WRID3 = 0xd2,		/* 1:0: Write ID3 value to NV */
  RDID4 = 0xd3,		/* 0:4: IC Vender code */
  NVCTR1 = 0xd9,	/* 0:1:no-fummy NVM control status */
  NVCTR2 = 0xde,	/* 3:0: NVM read command (aa, 0f, a5) */
  NVCTR3 = 0xdf,	/* 3:0: NVM write command (55, f0, 5a) */
  GAMCTRP1 = 0xe0,	/* 13:0: Set Gamma correction + */
  GAMCTRN1 = 0xe1,	/* 13:0: Set Gamma correction - */
  AUTO_CTRL = 0xf1,	/* 1:0: NVM write function ON/OFF */
  OSCADJ = 0xf2,	/* 1:0: Osillator frequency setting */
  DISPCTRL = 0xf5,	/* 1:0: Display function control */
  DEFADJ = 0xf6,	/* 1:0: Default mode setting */
};

typedef enum st7732_cmd st7732_cmd_t;

extern void lcd_command_no (st7732_cmd_t cmd);
extern void lcd_command_readn (st7732_cmd_t cmd, uint8_t *p, size_t n);
extern void lcd_command_writen (st7732_cmd_t cmd, uint8_t *p, size_t n);
extern void lcd_command_filln (st7732_cmd_t cmd, uint8_t b, size_t n);
extern void lcd_init (void);

extern void lcd_draw_point (int x, int y, int r, int g, int b);
extern void lcd_draw_hexfont5x8 (uint32_t hex, int x, int y, int r, int g,
				 int b, int bg);
extern void lcd_printhex (uint32_t hex, int x, int y, int r, int g, int b,
			  int bg);

#define LCD_COLUMN	128
#define LCD_ROW		160
#define BYTES_PER_PIXEL	3