Skip to content

Commit

Permalink
use OTP lut for EPD_4in2
Browse files Browse the repository at this point in the history
  • Loading branch information
tsl0922 committed Dec 11, 2024
1 parent 07b7b98 commit 8651365
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 96 deletions.
96 changes: 1 addition & 95 deletions EPD/EPD_4in2.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,53 +30,6 @@
******************************************************************************/
#include "EPD_4in2.h"

static const unsigned char EPD_4IN2_lut_vcom0[] = {
0x00, 0x08, 0x08, 0x00, 0x00, 0x02,
0x00, 0x0F, 0x0F, 0x00, 0x00, 0x01,
0x00, 0x08, 0x08, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
};
static const unsigned char EPD_4IN2_lut_ww[] = {
0x50, 0x08, 0x08, 0x00, 0x00, 0x02,
0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01,
0xA0, 0x08, 0x08, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const unsigned char EPD_4IN2_lut_bw[] = {
0x50, 0x08, 0x08, 0x00, 0x00, 0x02,
0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01,
0xA0, 0x08, 0x08, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const unsigned char EPD_4IN2_lut_wb[] = {
0xA0, 0x08, 0x08, 0x00, 0x00, 0x02,
0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01,
0x50, 0x08, 0x08, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const unsigned char EPD_4IN2_lut_bb[] = {
0x20, 0x08, 0x08, 0x00, 0x00, 0x02,
0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01,
0x10, 0x08, 0x08, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/******************************************************************************
function : Software reset
parameter:
Expand Down Expand Up @@ -147,75 +100,28 @@ void EPD_4IN2_TurnOnDisplay(void)
EPD_4IN2_ReadBusy();
}

/******************************************************************************
function : set the look-up tables
parameter:
******************************************************************************/
static void EPD_4IN2_SetLut(void)
{
unsigned int count;
EPD_4IN2_SendCommand(0x20);
for(count=0;count<36;count++)
{EPD_4IN2_SendData(EPD_4IN2_lut_vcom0[count]);}

EPD_4IN2_SendCommand(0x21);
for(count=0;count<36;count++)
{EPD_4IN2_SendData(EPD_4IN2_lut_ww[count]);}

EPD_4IN2_SendCommand(0x22);
for(count=0;count<36;count++)
{EPD_4IN2_SendData(EPD_4IN2_lut_bw[count]);}

EPD_4IN2_SendCommand(0x23);
for(count=0;count<36;count++)
{EPD_4IN2_SendData(EPD_4IN2_lut_wb[count]);}

EPD_4IN2_SendCommand(0x24);
for(count=0;count<36;count++)
{EPD_4IN2_SendData(EPD_4IN2_lut_bb[count]);}
}

/******************************************************************************
function : Initialize the e-Paper register
parameter:
******************************************************************************/
void EPD_4IN2_Init(void)
{
EPD_4IN2_Reset();
EPD_4IN2_SendCommand(0x01); // POWER SETTING
EPD_4IN2_SendData (0x03); // VDS_EN, VDG_EN internal
EPD_4IN2_SendData (0x00); // VCOM_HV, VGHL_LV=16V
EPD_4IN2_SendData (0x2b); // VDH=11V
EPD_4IN2_SendData (0x2b); // VDL=11V

EPD_4IN2_SendCommand(0x06); // boost soft start
EPD_4IN2_SendData (0x17); // A
EPD_4IN2_SendData (0x17); // B
EPD_4IN2_SendData (0x17); // C

EPD_4IN2_SendCommand(0x04); // POWER ON
EPD_4IN2_ReadBusy();

EPD_4IN2_SendCommand(0x00); // panel setting
EPD_4IN2_SendData(0x3f); // 300x400 B/W mode, LUT set by register


EPD_4IN2_SendCommand(0x30); // PLL setting (clock frequency)
EPD_4IN2_SendData (0x3c); // 3c=50HZ 3a=100HZ 29=150Hz 39=200HZ 31=171HZ
EPD_4IN2_SendData(0x1f); // 400x300 B/W mode, LUT from OTP

EPD_4IN2_SendCommand(0x61); // resolution setting
EPD_4IN2_SendData (EPD_4IN2_WIDTH / 256);
EPD_4IN2_SendData (EPD_4IN2_WIDTH % 256);
EPD_4IN2_SendData (EPD_4IN2_HEIGHT / 256);
EPD_4IN2_SendData (EPD_4IN2_HEIGHT % 256);

EPD_4IN2_SendCommand(0x82); // vcom_DC setting
EPD_4IN2_SendData (0x12); // -0.1 + 18 * -0.05 = -1.0V

EPD_4IN2_SendCommand(0x50); // VCOM AND DATA INTERVAL SETTING
EPD_4IN2_SendData(0x97); // LUTB=0 LUTW=1 interval=10

EPD_4IN2_SetLut();
}

/******************************************************************************
Expand Down
5 changes: 4 additions & 1 deletion html/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ async function sendCmWithData(cmd, data){
}

async function send4GrayLut() {
await sendcmd("0300");
await sendcmd("043F"); // Load LUT from register

await sendCmWithData("20", "000A0000000160141400000100140000000100130A010001000000000000000000000000000000000000"); // vcom
await sendCmWithData("21", "400A0000000190141400000110140A000001A01301000001000000000000000000000000000000000000"); // red not use
await sendCmWithData("22", "400A0000000190141400000100140A000001990C01030401000000000000000000000000000000000000"); // bw r
Expand All @@ -95,7 +98,7 @@ async function sendimg(cmdIMG) {
if (mode === "4gray") {
await send4GrayLut();
await sendcmd("05");
await sendcmd(`01${driver}`);
await sendcmd(`01${driver}`); // restore lut
} else {
await sendcmd("05");
}
Expand Down

0 comments on commit 8651365

Please sign in to comment.