From 3a9a9415d777a9dfcf2764b9101899a9f54c03ae Mon Sep 17 00:00:00 2001 From: imi415 Date: Thu, 21 Jan 2021 16:55:13 +0000 Subject: [PATCH] Initial commit. --- CMakeLists.txt | 16 ++++++++++++++ lib/gdew0213m21/gdew0213m21_epd.c | 35 +++++++++++++++++++++++++++++++ lib/gdew0213m21/gdew0213m21_epd.h | 28 +++++++++++++++++++++++++ main.c | 8 +++++++ 4 files changed, 87 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 lib/gdew0213m21/gdew0213m21_epd.c create mode 100644 lib/gdew0213m21/gdew0213m21_epd.h create mode 100644 main.c diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5e710f5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.12) + +project(epd_lvgl C) + +set(CMAKE_C_STANDARD 11) + +set(SOURCES + main.c + lib/gdew0213m21/gdew0213m21_epd.c +) + +include_directories( + lib/gdew0213m21 +) + +add_executable(epd_lvgl ${SOURCES}) \ No newline at end of file diff --git a/lib/gdew0213m21/gdew0213m21_epd.c b/lib/gdew0213m21/gdew0213m21_epd.c new file mode 100644 index 0000000..80cc770 --- /dev/null +++ b/lib/gdew0213m21/gdew0213m21_epd.c @@ -0,0 +1,35 @@ +#include "gdew0213m21_epd.h" + +uint8_t gdew0213m21_init_sequence[] = { + 0x03, 0x06, 0x17, 0x17, 0x1F, // boost soft start + 0x04, 0x01, 0x03, 0x00, 0x2B, 0x2B, // Power settings + 0x01, 0x00, 0xBF, // Panel setting, LUT from OTP + 0x01, 0x30, 0x3C, + 0x03, 0x61, 0x68, 0x00, 0xD4, + 0x01, 0x82, 0x12, // VCOM DC settings + 0x01, 0x50, 0x47 +}; + +des_epd_ret_t _des_epd_hardware_reset(des_epd_t *epd) { + // +} + +des_epd_ret_t _des_epd_software_reset(des_epd_t *epd) { + // +} + +des_epd_ret_t _des_epd_init_seq(des_epd_t *epd) { + uint16_t i = 0; + while(i < sizeof(DES_EPD_PANEL_SELECTION)) { + DES_EPD_ERROR_CHECK(epd->cb.write_cmd_cb(epd->user_data, &DES_EPD_PANEL_SELECTION[i + 1], DES_EPD_PANEL_SELECTION[i] + 1)); + i += DES_EPD_PANEL_SELECTION[i] + 2; + } + + return DES_EPD_OK; +} + +des_epd_ret_t des_epd_init(des_epd_t *epd) { + DES_EPD_ERROR_CHECK(_des_epd_init_seq(epd)); + + return DES_EPD_OK; +} \ No newline at end of file diff --git a/lib/gdew0213m21/gdew0213m21_epd.h b/lib/gdew0213m21/gdew0213m21_epd.h new file mode 100644 index 0000000..74483b8 --- /dev/null +++ b/lib/gdew0213m21/gdew0213m21_epd.h @@ -0,0 +1,28 @@ +#ifndef __GDEW0213M21_EPD_H +#define __GDEW0213M21_EPD_H +#include + +#define DES_EPD_PANEL_SELECTION gdew0213m21_init_sequence + +typedef enum { + DES_EPD_OK, + DES_EPD_ERROR +} des_epd_ret_t; + +typedef struct { + des_epd_ret_t (*write_cmd_cb)(void *handle, uint8_t *cmd, uint8_t len); + des_epd_ret_t (*write_data_cb)(void *handle, uint8_t *data, uint16_t len); + des_epd_ret_t (*reset_cb)(void *handle); + des_epd_ret_t (*check_busy_cb)(void *handle); +} des_epd_cb_t; + +typedef struct { + void *user_data; + des_epd_cb_t cb; +} des_epd_t; + +#define DES_EPD_ERROR_CHECK(x) if(x != DES_EPD_OK) return DES_EPD_ERROR + +des_epd_ret_t des_epd_init(des_epd_t *epd); + +#endif \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..2798ba6 --- /dev/null +++ b/main.c @@ -0,0 +1,8 @@ +#include + +#include "gdew0213m21_epd.h" + +int main() { + printf("Hello World!\n"); + return 0; +} \ No newline at end of file