1 #ifndef __DRV_LCD_H
2 #define __DRV_LCD_H
3 
4 #include <stdint.h>
5 #include <rtdevice.h>
6 
7 #include "pico/stdlib.h"
8 #include "hardware/spi.h"
9 #include "hardware/i2c.h"
10 #include "hardware/pwm.h"
11 #include "hardware/dma.h"
12 
13 #define LCD_HEIGHT 240
14 #define LCD_WIDTH 240
15 
16 #define HORIZONTAL 0
17 #define VERTICAL   1
18 
19 /**
20  * data
21  **/
22 #define UBYTE uint8_t
23 #define UWORD uint16_t
24 #define UDOUBLE uint32_t
25 
26 /**
27  * GPIOI config
28  **/
29 #define LCD_RST_PIN 12
30 #define LCD_DC_PIN 8
31 #define LCD_BL_PIN 13
32 
33 #define LCD_CS_PIN 9
34 #define LCD_CLK_PIN 10
35 #define LCD_MOSI_PIN 11
36 
37 typedef struct
38 {
39     UWORD WIDTH;UWORD HEIGHT;UBYTE SCAN_DIR;
40 } LCD_ATTRIBUTES;
41 extern LCD_ATTRIBUTES LCD;
42 
43 /*------------------------------------------------------------------------------------------------------*/
44 void DEV_Digital_Write(UWORD Pin, UBYTE Value);
45 UBYTE DEV_Digital_Read(UWORD Pin);
46 
47 void DEV_GPIO_Mode(UWORD Pin, UWORD Mode);
48 void DEV_KEY_Config(UWORD Pin);
49 void DEV_Digital_Write(UWORD Pin, UBYTE Value);
50 UBYTE DEV_Digital_Read(UWORD Pin);
51 
52 void DEV_SPI_WriteByte(UBYTE Value);
53 void DEV_SPI_Write_nByte(UBYTE *pData, UDOUBLE Len);
54 
55 void DEV_SET_PWM(UBYTE Value);
56 
57 UBYTE SPI_Init(void);
58 UBYTE DEV_Module_Init(void);
59 void DEV_Module_Exit(void);
60 
61 /********************************************************************************
62  function:
63  Macro definition variable name
64  ********************************************************************************/
65 bool initDMA(bool ctrl_cs);
66 void LCD_Init(UBYTE Scan_dir);
67 void LCD_Clear(UWORD Color);
68 void LCD_Display(UWORD *Image);
69 void LCD_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend);
70 void LCD_DisplayWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD *Image);
71 void pushPixelsDMA(UWORD* image, UDOUBLE len);
72 void LCD_DisplayPoint(UWORD X, UWORD Y, UWORD Color);
73 void Handler_LCD(int signo);
74 
75 #endif
76