1
0
mirror of https://github.com/Dejvino/lilybook.git synced 2025-12-30 05:39:34 +00:00
lilybook/components/epaper/EPDspi.h

87 lines
2.2 KiB
C

/*
* 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 <stdint.h>
#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