aboutsummaryrefslogtreecommitdiff
path: root/example-primer2/st7732.h
diff options
context:
space:
mode:
Diffstat (limited to 'example-primer2/st7732.h')
-rw-r--r--example-primer2/st7732.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/example-primer2/st7732.h b/example-primer2/st7732.h
new file mode 100644
index 0000000..bc684d7
--- /dev/null
+++ b/example-primer2/st7732.h
@@ -0,0 +1,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