132 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
| #ifndef LCDSPI_H
 | |
| #define LCDSPI_H
 | |
| #include "pico/multicore.h"
 | |
| #include <hardware/spi.h>
 | |
| 
 | |
| //#define LCD_SPI_SPEED   6000000
 | |
| #define LCD_SPI_SPEED   25000000
 | |
| //#define LCD_SPI_SPEED 50000000
 | |
| 
 | |
| #define Pico_LCD_SCK 10 //
 | |
| #define Pico_LCD_TX  11 // MOSI
 | |
| #define Pico_LCD_RX  12 // MISO
 | |
| #define Pico_LCD_CS  13 //
 | |
| #define Pico_LCD_DC  14
 | |
| #define Pico_LCD_RST 15
 | |
| 
 | |
| #define ILI9488  1
 | |
| #ifdef ILI9488
 | |
| #define LCD_WIDTH 320
 | |
| #define LCD_HEIGHT 320
 | |
| #endif
 | |
| 
 | |
| #define PIXFMT_BGR 1
 | |
| 
 | |
| #define TFT_SLPOUT 0x11
 | |
| #define TFT_INVOFF 0x20
 | |
| #define TFT_INVON 0x21
 | |
| 
 | |
| #define TFT_DISPOFF 0x28
 | |
| #define TFT_DISPON 0x29
 | |
| #define TFT_MADCTL 0x36
 | |
| 
 | |
| #define ILI9341_MEMCONTROL 	0x36
 | |
| #define ILI9341_MADCTL_MX  	0x40
 | |
| #define ILI9341_MADCTL_BGR 	0x08
 | |
| 
 | |
| #define ILI9341_COLADDRSET      0x2A
 | |
| #define ILI9341_PAGEADDRSET     0x2B
 | |
| #define ILI9341_MEMORYWRITE     0x2C
 | |
| #define ILI9341_RAMRD           0x2E
 | |
| 
 | |
| #define ILI9341_Portrait        ILI9341_MADCTL_MX | ILI9341_MADCTL_BGR
 | |
| 
 | |
| #define ORIENT_NORMAL       0
 | |
| 
 | |
| #define RGB(red, green, blue) (unsigned int) (((red & 0b11111111) << 16) | ((green  & 0b11111111) << 8) | (blue & 0b11111111))
 | |
| #define WHITE               RGB(255,  255,  255) //0b1111
 | |
| #define YELLOW              RGB(255,  255,    0) //0b1110
 | |
| #define LILAC               RGB(255,  128,  255) //0b1101
 | |
| #define BROWN               RGB(255,  128,    0) //0b1100
 | |
| #define FUCHSIA             RGB(255,  64,   255) //0b1011
 | |
| #define RUST                RGB(255,  64,     0) //0b1010
 | |
| #define MAGENTA             RGB(255,  0,    255) //0b1001
 | |
| #define RED                 RGB(255,  0,      0) //0b1000
 | |
| #define CYAN                RGB(0,    255,  255) //0b0111
 | |
| #define GREEN               RGB(0,    255,    0) //0b0110
 | |
| #define CERULEAN            RGB(0,    128,  255) //0b0101
 | |
| #define MIDGREEN            RGB(0,    128,    0) //0b0100
 | |
| #define COBALT              RGB(0,    64,   255) //0b0011
 | |
| #define MYRTLE              RGB(0,    64,     0) //0b0010
 | |
| #define BLUE                RGB(0,    0,    255) //0b0001
 | |
| #define BLACK               RGB(0,    0,      0) //0b0000
 | |
| #define BROWN               RGB(255,  128,    0)
 | |
| #define GRAY                RGB(128,  128,    128)
 | |
| #define LITEGRAY            RGB(210,  210,    210)
 | |
| #define ORANGE            	RGB(0xff,	0xA5,	0)
 | |
| #define PINK				RGB(0xFF,	0xA0,	0xAB)
 | |
| #define GOLD				RGB(0xFF,	0xD7,	0x00)
 | |
| #define SALMON				RGB(0xFA,	0x80,	0x72)
 | |
| #define BEIGE				RGB(0xF5,	0xF5,	0xDC)
 | |
| 
 | |
| //Pico spi0 or spi1 must match GPIO pins used above.
 | |
| #define Pico_LCD_SPI_MOD spi1
 | |
| #define nop asm("NOP")
 | |
| //xmit_byte_multi == HW1SendSPI
 | |
| 
 | |
| 
 | |
| #define PORTCLR             1
 | |
| #define PORTSET             2
 | |
| #define PORTINV             3
 | |
| #define LAT                 4
 | |
| #define LATCLR              5
 | |
| #define LATSET              6
 | |
| #define LATINV              7
 | |
| #define ODC                 8
 | |
| #define ODCCLR              9
 | |
| #define ODCSET              10
 | |
| #define CNPU                12
 | |
| #define CNPUCLR             13
 | |
| #define CNPUSET             14
 | |
| #define CNPUINV             15
 | |
| #define CNPD                16
 | |
| #define CNPDCLR             17
 | |
| #define CNPDSET             18
 | |
| 
 | |
| #define ANSELCLR            -7
 | |
| #define ANSELSET            -6
 | |
| #define ANSELINV            -5
 | |
| #define TRIS                -4
 | |
| #define TRISCLR             -3
 | |
| #define TRISSET             -2
 | |
| 
 | |
| extern void __not_in_flash_func(spi_write_fast)(spi_inst_t *spi, const uint8_t *src, size_t len);
 | |
| extern void __not_in_flash_func(spi_finish)(spi_inst_t *spi);
 | |
| extern void hw_read_spi(unsigned char *buff, int cnt);
 | |
| extern void hw_send_spi(const unsigned char *buff, int cnt);
 | |
| extern unsigned char __not_in_flash_func(hw1_swap_spi)(unsigned char data_out);
 | |
| 
 | |
| extern void lcd_spi_raise_cs(void);
 | |
| extern void lcd_spi_lower_cs(void);
 | |
| extern void spi_write_data(unsigned char data);
 | |
| extern void spi_write_command(unsigned char data);
 | |
| extern void spi_write_cd(unsigned char command, int data, ...);
 | |
| extern void spi_write_data24(uint32_t data);
 | |
| 
 | |
| extern void spi_draw_pixel(uint16_t x, uint16_t y, uint16_t color) ;
 | |
| extern void lcd_putc(uint8_t devn, uint8_t c);
 | |
| extern int  lcd_getc(uint8_t devn);
 | |
| extern void lcd_sleeping(uint8_t devn);
 | |
| 
 | |
| extern char lcd_put_char(char c, int flush);
 | |
| extern void lcd_print_string(char* s);
 | |
| 
 | |
| extern void lcd_spi_init();
 | |
| extern void lcd_init();
 | |
| extern void lcd_clear();
 | |
| extern void reset_controller(void);
 | |
| extern void pin_set_bit(int pin, unsigned int offset);
 | |
| 
 | |
| 
 | |
| #endif
 |