/* * Author: LoBo (loboris@gmail.com, loboris.github) * * Module supporting SPI ePaper displays * * HIGH SPEED LOW LEVEL DISPLAY FUNCTIONS * USING DIRECT or DMA SPI TRANSFER MODEs * */ #ifndef _EPDSPI_H_ #define _EPDSPI_H_ #include #include "spi_master_lobo.h" #define EPD_DISPLAY_WIDTH 296 #define EPD_DISPLAY_HEIGHT 128 #define SCK_Pin 18 #define MOSI_Pin 23 //#define MISO_Pin 19 #define DC_Pin 17//26 #define BUSY_Pin 4//32 #define RST_Pin 16//27 #define CS_Pin 5 // ePaper display can be powered from GPIO // if powered directly from Vcc, set this to 0 #define POWER_Pin 22 #define DC_VAL (1 << DC_Pin) #define EPD_CS_0 gpio_set_level(CS_Pin, 0) #define EPD_CS_1 gpio_set_level(CS_Pin, 1) #define isEPD_CS gpio_get_level(CS_Pin) #define EPD_RST_0 gpio_set_level(RST_Pin, 0) #define EPD_RST_1 gpio_set_level(RST_Pin, 1) #define isEPD_RST gpio_get_level(RST_Pin) #define EPD_DC_0 gpio_set_level(DC_Pin, 0) #define EPD_DC_1 gpio_set_level(DC_Pin, 1) #define isEPD_BUSY gpio_get_level(BUSY_Pin) #define EPD_BUSY_LEVEL 0 // ================================================== // Define which spi bus to use VSPI_HOST or HSPI_HOST #define SPI_BUS VSPI_HOST // ================================================== spi_lobo_device_handle_t disp_spi; uint8_t *gs_disp_buffer; uint8_t *disp_buffer; uint8_t *gs_drawBuff; uint8_t *drawBuff; int _width; int _height; uint16_t gs_used_shades; uint8_t _gs; uint8_t *LUT_part; uint8_t LUTDefault_fastest[31]; uint8_t LUTDefault_part[31]; uint8_t LUT_gs[31]; uint8_t LUTDefault_full[31]; uint8_t lvl_buf[16]; uint8_t lvl_buf_jpg[16]; void EPD_wait(uint32_t ms); void EPD_DisplaySetFull(uint8_t val); void EPD_DisplaySetPart(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd, uint8_t val); void EPD_DisplayClearFull(); void EPD_DisplayClearPart(); void EPD_DisplayFull(uint8_t *DisBuffer); void EPD_DisplayPart(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd, uint8_t *DisBuffer); void EPD_gsUpdate(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd, uint8_t gs); void EPD_Update(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd); void EPD_UpdateScreen(); void EPD_Cls(); void EPD_PowerOn(); void EPD_PowerOff(); #endif