You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

87 line
2.2 KiB

  1. /*
  2. * Author: LoBo (loboris@gmail.com, loboris.github)
  3. *
  4. * Module supporting SPI ePaper displays
  5. *
  6. * HIGH SPEED LOW LEVEL DISPLAY FUNCTIONS
  7. * USING DIRECT or DMA SPI TRANSFER MODEs
  8. *
  9. */
  10. #ifndef _EPDSPI_H_
  11. #define _EPDSPI_H_
  12. #include <stdint.h>
  13. #include "spi_master_lobo.h"
  14. #define EPD_DISPLAY_WIDTH 296
  15. #define EPD_DISPLAY_HEIGHT 128
  16. #define SCK_Pin 18
  17. #define MOSI_Pin 23
  18. //#define MISO_Pin 19
  19. #define DC_Pin 17//26
  20. #define BUSY_Pin 4//32
  21. #define RST_Pin 16//27
  22. #define CS_Pin 5
  23. // ePaper display can be powered from GPIO
  24. // if powered directly from Vcc, set this to 0
  25. #define POWER_Pin 22
  26. #define DC_VAL (1 << DC_Pin)
  27. #define EPD_CS_0 gpio_set_level(CS_Pin, 0)
  28. #define EPD_CS_1 gpio_set_level(CS_Pin, 1)
  29. #define isEPD_CS gpio_get_level(CS_Pin)
  30. #define EPD_RST_0 gpio_set_level(RST_Pin, 0)
  31. #define EPD_RST_1 gpio_set_level(RST_Pin, 1)
  32. #define isEPD_RST gpio_get_level(RST_Pin)
  33. #define EPD_DC_0 gpio_set_level(DC_Pin, 0)
  34. #define EPD_DC_1 gpio_set_level(DC_Pin, 1)
  35. #define isEPD_BUSY gpio_get_level(BUSY_Pin)
  36. #define EPD_BUSY_LEVEL 0
  37. // ==================================================
  38. // Define which spi bus to use VSPI_HOST or HSPI_HOST
  39. #define SPI_BUS VSPI_HOST
  40. // ==================================================
  41. spi_lobo_device_handle_t disp_spi;
  42. uint8_t *gs_disp_buffer;
  43. uint8_t *disp_buffer;
  44. uint8_t *gs_drawBuff;
  45. uint8_t *drawBuff;
  46. int _width;
  47. int _height;
  48. uint16_t gs_used_shades;
  49. uint8_t _gs;
  50. uint8_t *LUT_part;
  51. uint8_t LUTDefault_fastest[31];
  52. uint8_t LUTDefault_part[31];
  53. uint8_t LUT_gs[31];
  54. uint8_t LUTDefault_full[31];
  55. uint8_t lvl_buf[16];
  56. uint8_t lvl_buf_jpg[16];
  57. void EPD_wait(uint32_t ms);
  58. void EPD_DisplaySetFull(uint8_t val);
  59. void EPD_DisplaySetPart(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd, uint8_t val);
  60. void EPD_DisplayClearFull();
  61. void EPD_DisplayClearPart();
  62. void EPD_DisplayFull(uint8_t *DisBuffer);
  63. void EPD_DisplayPart(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd, uint8_t *DisBuffer);
  64. void EPD_gsUpdate(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd, uint8_t gs);
  65. void EPD_Update(int xStart, int xEnd, uint8_t yStart, uint8_t yEnd);
  66. void EPD_UpdateScreen();
  67. void EPD_Cls();
  68. void EPD_PowerOn();
  69. void EPD_PowerOff();
  70. #endif