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