|
@@ -3,90 +3,82 @@
|
|
|
#include <inttypes.h>
|
|
|
#include "driver/gpio.h"
|
|
|
|
|
|
-
|
|
|
#define SOFTWARE_SPI_ENABLE 0
|
|
|
|
|
|
-#define QUICK_DISPLAY 0 //快刷
|
|
|
+#define QUICK_DISPLAY 0 // 快刷
|
|
|
|
|
|
-#define HARDWARE_SPI 1
|
|
|
-#if HARDWARE_SPI
|
|
|
+#define HARDWARE_SPI 1
|
|
|
+#if HARDWARE_SPI
|
|
|
|
|
|
#include "driver/spi_master.h"
|
|
|
|
|
|
#define SPI_MAX_LEN 3200
|
|
|
|
|
|
-#define EPD_HOST SPI2_HOST
|
|
|
+#define EPD_HOST SPI2_HOST
|
|
|
|
|
|
#define PIN_SPI_MOSI 45
|
|
|
-#define PIN_SPI_CLK 48
|
|
|
+#define PIN_SPI_CLK 48
|
|
|
|
|
|
-#define PIN_L_CS 39
|
|
|
-#define PIN_L_DC 40
|
|
|
-#define PIN_L_RST 41
|
|
|
-#define PIN_L_BUSY 42
|
|
|
+#define PIN_L_CS 39
|
|
|
+#define PIN_L_DC 40
|
|
|
+#define PIN_L_RST 41
|
|
|
+#define PIN_L_BUSY 42
|
|
|
|
|
|
-#define PIN_R_CS 47
|
|
|
-#define PIN_R_DC 21
|
|
|
-#define PIN_R_RST 14
|
|
|
-#define PIN_R_BUSY 13
|
|
|
+#define PIN_R_CS 47
|
|
|
+#define PIN_R_DC 21
|
|
|
+#define PIN_R_RST 14
|
|
|
+#define PIN_R_BUSY 13
|
|
|
|
|
|
#if !SOFTWARE_SPI_ENABLE //
|
|
|
-#define PIN_EPD_OUTPUT ((1ULL<<PIN_L_CS)|(1ULL<<PIN_L_DC)|(1ULL<<PIN_L_RST)|(1ULL<<PIN_R_CS)|(1ULL<<PIN_R_DC)|(1ULL<<PIN_R_RST))
|
|
|
+#define PIN_EPD_OUTPUT ((1ULL << PIN_L_CS) | (1ULL << PIN_L_DC) | (1ULL << PIN_L_RST) | (1ULL << PIN_R_CS) | (1ULL << PIN_R_DC) | (1ULL << PIN_R_RST))
|
|
|
#else
|
|
|
-#define PIN_EPD_OUTPUT ((1ULL<<PIN_SPI_MOSI)|(1ULL<<PIN_SPI_CLK)|(1ULL<<PIN_L_CS)|(1ULL<<PIN_L_DC)|(1ULL<<PIN_L_RST)|(1ULL<<PIN_R_CS)|(1ULL<<PIN_R_DC)|(1ULL<<PIN_R_RST))
|
|
|
+#define PIN_EPD_OUTPUT ((1ULL << PIN_SPI_MOSI) | (1ULL << PIN_SPI_CLK) | (1ULL << PIN_L_CS) | (1ULL << PIN_L_DC) | (1ULL << PIN_L_RST) | (1ULL << PIN_R_CS) | (1ULL << PIN_R_DC) | (1ULL << PIN_R_RST))
|
|
|
#endif
|
|
|
|
|
|
+#define PIN_EPD_INPUT ((1ULL << PIN_L_BUSY) | (1ULL << PIN_R_BUSY))
|
|
|
|
|
|
-#define PIN_EPD_INPUT ((1ULL<<PIN_L_BUSY)|(1ULL<<PIN_R_BUSY))
|
|
|
-
|
|
|
-
|
|
|
-typedef enum {
|
|
|
- SCREEN_LEFT = 1,
|
|
|
- SCREEN_RIGHT = 2,
|
|
|
-}screen_t;
|
|
|
-
|
|
|
+typedef enum
|
|
|
+{
|
|
|
+ SCREEN_LEFT = 1,
|
|
|
+ SCREEN_RIGHT = 2,
|
|
|
+} screen_t;
|
|
|
|
|
|
-typedef struct {
|
|
|
+typedef struct
|
|
|
+{
|
|
|
uint8_t cmd;
|
|
|
uint8_t data[16];
|
|
|
- uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds.
|
|
|
+ uint8_t databytes; // No of data in data; bit 7 = delay after set; 0xFF = end of cmds.
|
|
|
} epd_init_cmd_t;
|
|
|
|
|
|
-
|
|
|
extern spi_device_handle_t epd_spi;
|
|
|
-
|
|
|
-void epd_write_cmd(screen_t screen, unsigned char command,bool keep_cs_active);
|
|
|
+extern bool is_epd_ok_cplt;
|
|
|
+void epd_write_cmd(screen_t screen, unsigned char command, bool keep_cs_active);
|
|
|
void epd_write_data(screen_t screen, const uint8_t *data, int len);
|
|
|
void epd_init(void);
|
|
|
-void epd_display(screen_t screen,const unsigned char* picData);
|
|
|
-void epd_cache(screen_t screen,const unsigned char* picData);
|
|
|
+void epd_display(screen_t screen, const unsigned char *picData);
|
|
|
+void epd_cache(screen_t screen, const unsigned char *picData);
|
|
|
void epd_display_partal(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,
|
|
|
- screen_t screen,const unsigned char* picData);
|
|
|
+ screen_t screen, const unsigned char *picData);
|
|
|
void epd_partial_cache(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,
|
|
|
- screen_t screen,const unsigned char* picData);
|
|
|
-
|
|
|
+ screen_t screen, const unsigned char *picData);
|
|
|
|
|
|
- void epd_partial_cache1(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,
|
|
|
- screen_t screen,const unsigned char* picData);
|
|
|
+void epd_partial_cache1(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,
|
|
|
+ screen_t screen, const unsigned char *picData);
|
|
|
void epd_powerOn_refresh(screen_t screen);
|
|
|
|
|
|
-
|
|
|
void epd_init_cmd(screen_t screen);
|
|
|
|
|
|
void epd_sleep(screen_t screen);
|
|
|
|
|
|
-
|
|
|
bool epd_check_status(screen_t screen);
|
|
|
void epd_refresh(screen_t screen);
|
|
|
|
|
|
-
|
|
|
void epd_check_power_off(screen_t screen);
|
|
|
void epd_check_power_on(screen_t screen);
|
|
|
|
|
|
+void epd_cache_quick_full_screen_refresh(screen_t screen, const unsigned char *old, const unsigned char *new);
|
|
|
|
|
|
-void epd_cache_quick_full_screen_refresh(screen_t screen,const unsigned char* old,const unsigned char* new);
|
|
|
-
|
|
|
-void epd_cache_quick_partial_screen_refresh(screen_t screen,uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,const unsigned char* old,const unsigned char* new);
|
|
|
+void epd_cache_quick_partial_screen_refresh(screen_t screen, uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, const unsigned char *old, const unsigned char *new);
|
|
|
|
|
|
unsigned int compressRLE(uint8_t *input, unsigned int size, uint8_t *output);
|
|
|
// 解压函数
|
|
@@ -96,24 +88,19 @@ void deepsleep_epd_check_status(screen_t screen);
|
|
|
|
|
|
void deepsleep_epd_powerOn_refresh_sleep(screen_t screen);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-bool epd_cache_quick(screen_t screen,const unsigned char* old,const unsigned char* new);
|
|
|
+bool epd_cache_quick(screen_t screen, const unsigned char *old, const unsigned char *new);
|
|
|
void epd_powerOn_refresh_sleep(screen_t screen);
|
|
|
|
|
|
// esp_err_t user_spi_get_result(spi_device_handle_t spi);
|
|
|
|
|
|
#else /*HARDWARE_SPI*/
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-#define LOW_LEVEL 0
|
|
|
-#define HIGH_LEVEL 1
|
|
|
+#define LOW_LEVEL 0
|
|
|
+#define HIGH_LEVEL 1
|
|
|
|
|
|
struct EPD_INFO_SET
|
|
|
{
|
|
|
- char* epd_name;
|
|
|
+ char *epd_name;
|
|
|
uint8_t sclk_pin;
|
|
|
uint8_t sda_pin;
|
|
|
uint8_t busy_pin;
|
|
@@ -122,35 +109,29 @@ struct EPD_INFO_SET
|
|
|
uint8_t cs_pin;
|
|
|
};
|
|
|
|
|
|
-#define epd_set_level(EPD_PIN, LEVEL) gpio_set_level(EPD_PIN, LEVEL)
|
|
|
-#define epd_get_level(EPD_PIN) gpio_get_level(EPD_PIN)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-void epd_screen_init(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_pin_init(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_spi_write(struct EPD_INFO_SET* epd_pin_set, unsigned char value);
|
|
|
-void epd_write_cmd(struct EPD_INFO_SET* epd_pin_set, unsigned char command);
|
|
|
-void epd_write_data(struct EPD_INFO_SET* epd_pin_set, unsigned char command);
|
|
|
-void epd_init(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_check_status(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_refresh(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_sleep(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_clear_black(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-void epd_clear_write(struct EPD_INFO_SET* epd_pin_set);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+#define epd_set_level(EPD_PIN, LEVEL) gpio_set_level(EPD_PIN, LEVEL)
|
|
|
+#define epd_get_level(EPD_PIN) gpio_get_level(EPD_PIN)
|
|
|
|
|
|
-void epd_display(struct EPD_INFO_SET* epd_pin_set,const unsigned char* picData);
|
|
|
+void epd_screen_init(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_pin_init(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_spi_write(struct EPD_INFO_SET *epd_pin_set, unsigned char value);
|
|
|
+void epd_write_cmd(struct EPD_INFO_SET *epd_pin_set, unsigned char command);
|
|
|
+void epd_write_data(struct EPD_INFO_SET *epd_pin_set, unsigned char command);
|
|
|
+void epd_init(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_check_status(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_refresh(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_sleep(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_clear_black(struct EPD_INFO_SET *epd_pin_set);
|
|
|
+void epd_clear_write(struct EPD_INFO_SET *epd_pin_set);
|
|
|
|
|
|
+void epd_display(struct EPD_INFO_SET *epd_pin_set, const unsigned char *picData);
|
|
|
|
|
|
-void epd_display_partal(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,struct EPD_INFO_SET* epd_pin_set,const unsigned char* picData);
|
|
|
+void epd_display_partal(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, struct EPD_INFO_SET *epd_pin_set, const unsigned char *picData);
|
|
|
|
|
|
-void epd_cache(struct EPD_INFO_SET* epd_pin_set,const unsigned char* picData);
|
|
|
-void epd_partial_cache(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend,struct EPD_INFO_SET* epd_pin_set,const unsigned char* picData);
|
|
|
-void epd_powerOn_refresh(struct EPD_INFO_SET* epd_pin_set);
|
|
|
+void epd_cache(struct EPD_INFO_SET *epd_pin_set, const unsigned char *picData);
|
|
|
+void epd_partial_cache(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, struct EPD_INFO_SET *epd_pin_set, const unsigned char *picData);
|
|
|
+void epd_powerOn_refresh(struct EPD_INFO_SET *epd_pin_set);
|
|
|
|
|
|
#endif /*HARDWARE_SPI*/
|
|
|
|
|
|
-#endif/*_EPD_H_*/
|
|
|
+#endif /*_EPD_H_*/
|