You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
7.6 KiB
C
248 lines
7.6 KiB
C
/**
|
|
******************************************************************************
|
|
* @file edp2in7.h
|
|
* @author Waveshare Team
|
|
* @version V1.0.0
|
|
* @date 23-January-2018
|
|
* @brief This file describes initialisation of 2.7 and 2.7b e-Papers
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
unsigned char lut_dc_2in7[] =
|
|
{
|
|
0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x00, 0x32, 0x32,
|
|
0x00, 0x00, 0x02, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
//R21H
|
|
unsigned char lut_ww_2in7[] =
|
|
{
|
|
0x50, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0xA0, 0x0F,
|
|
0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
//R22H r
|
|
unsigned char lut_bw_2in7[] =
|
|
{
|
|
0x50, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0xA0, 0x0F,
|
|
0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
//R24H b
|
|
unsigned char lut_bb_2in7[] =
|
|
{
|
|
0xA0, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0x50, 0x0F,
|
|
0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
//R23H w
|
|
unsigned char lut_wb_2in7[] =
|
|
{
|
|
0xA0, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0x50, 0x0F,
|
|
0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
int EPD_Init_2in7()
|
|
{
|
|
EPD_Reset();
|
|
|
|
EPD_SendCommand(0x01);//POWER_SETTING
|
|
EPD_SendData(0x03); // VDS_EN, VDG_EN
|
|
EPD_SendData(0x00); // VCOM_HV, VGHL_LV[1], VGHL_LV[0]
|
|
EPD_SendData(0x2b); // VDH
|
|
EPD_SendData(0x2b); // VDL
|
|
EPD_SendData(0x09); // VDHR
|
|
|
|
EPD_Send_3(0x06, 0x07, 0x07, 0x17);//BOOSTER_SOFT_START
|
|
|
|
// Power optimization
|
|
EPD_Send_2(0xF8, 0x60, 0xA5);
|
|
EPD_Send_2(0xF8, 0x89, 0xA5);
|
|
EPD_Send_2(0xF8, 0x90, 0x00);
|
|
EPD_Send_2(0xF8, 0x93, 0x2A);
|
|
EPD_Send_2(0xF8, 0xA0, 0xA5);
|
|
EPD_Send_2(0xF8, 0xA1, 0x00);
|
|
EPD_Send_2(0xF8, 0x73, 0x41);
|
|
|
|
EPD_Send_1(0x16, 0x00);//PARTIAL_DISPLAY_REFRESH
|
|
EPD_SendCommand(0x04);//POWER_ON
|
|
EPD_WaitUntilIdle();
|
|
|
|
EPD_Send_1(0x00, 0xAF);//PANEL_SETTING: KW-BF, KWR-AF, BWROTP 0f
|
|
EPD_Send_1(0x30, 0x3A);//PLL_CONTROL: 3A 100HZ, 29 150Hz, 39 200HZ, 31 171HZ
|
|
EPD_Send_1(0x82, 0x12);//VCM_DC_SETTING_REGISTER
|
|
delay(2);
|
|
|
|
EPD_lut(0x20,44,&lut_dc_2in7[0]);// LUT_FOR_VCOM
|
|
EPD_lut(0x21,42,&lut_ww_2in7[0]);// LUT_WHITE_TO_WHITE
|
|
EPD_lut(0x22,42,&lut_bw_2in7[0]);// LUT_BLACK_TO_WHITE
|
|
EPD_lut(0x23,42,&lut_wb_2in7[0]);// LUT_WHITE_TO_BLACK
|
|
EPD_lut(0x24,42,&lut_bb_2in7[0]);// LUT_BLACK_TO_BLACK
|
|
|
|
EPD_SendCommand(0x10);//DATA_START_TRANSMISSION_1
|
|
delay(2);
|
|
for(int i = 0; i < 176*264; i++)EPD_SendData(0xFF);//Red channel
|
|
|
|
EPD_SendCommand(0x13);//DATA_START_TRANSMISSION_2
|
|
delay(2);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int EPD_2IN7_V2_Init(void)
|
|
{
|
|
EPD_Reset();
|
|
EPD_WaitUntilIdle_high();
|
|
|
|
EPD_SendCommand(0x12); //SWRESET
|
|
EPD_WaitUntilIdle_high();
|
|
|
|
EPD_SendCommand(0x45); //set Ram-Y address start/end position
|
|
EPD_SendData(0x00);
|
|
EPD_SendData(0x00);
|
|
EPD_SendData(0x07); //0x0107-->(263+1)=264
|
|
EPD_SendData(0x01);
|
|
|
|
EPD_SendCommand(0x4F); // set RAM y address count to 0;
|
|
EPD_SendData(0x00);
|
|
EPD_SendData(0x00);
|
|
|
|
EPD_SendCommand(0x11); // data entry mode
|
|
EPD_SendData(0x03);
|
|
|
|
EPD_SendCommand(0x24);
|
|
delay(2);
|
|
return 0;
|
|
}
|
|
|
|
void EPD_2IN7_V2_Show(void)
|
|
{
|
|
EPD_SendCommand(0x22); //Display Update Control
|
|
EPD_SendData(0XF7);
|
|
EPD_SendCommand(0x20); //Activate Display Update Sequence
|
|
EPD_WaitUntilIdle_high();
|
|
delay(2);
|
|
Serial.print("EPD_2IN7_V2_Show END\r\n");
|
|
EPD_SendCommand(0X07); //deep sleep
|
|
EPD_SendData(0xA5);
|
|
}
|
|
|
|
|
|
unsigned char lut_dc_2in7b[] =
|
|
{
|
|
0x00, 0x00, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x0A,
|
|
0x00, 0x00, 0x08, 0x00, 0x0E, 0x01, 0x0E, 0x01, 0x10, 0x00, 0x0A,
|
|
0x0A, 0x00, 0x00, 0x08, 0x00, 0x04, 0x10, 0x00, 0x00, 0x05, 0x00,
|
|
0x03, 0x0E, 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
|
|
};
|
|
|
|
//R21H
|
|
unsigned char lut_ww_2in7b[] =
|
|
{
|
|
0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x84, 0x0E,
|
|
0x01, 0x0E, 0x01, 0x10, 0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x00, 0x04, 0x10, 0x00,
|
|
0x00, 0x05, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
|
|
};
|
|
|
|
//R22H r
|
|
unsigned char lut_bw_2in7b[] =
|
|
{
|
|
0xA0, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x84, 0x0E,
|
|
0x01, 0x0E, 0x01, 0x10, 0x90, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0xB0, 0x04, 0x10, 0x00,
|
|
0x00, 0x05, 0xB0, 0x03, 0x0E, 0x00, 0x00, 0x0A, 0xC0, 0x23, 0x00, 0x00, 0x00, 0x01
|
|
};
|
|
|
|
//R23H w
|
|
unsigned char lut_bb_2in7b[] =
|
|
{
|
|
0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x84, 0x0E,
|
|
0x01, 0x0E, 0x01, 0x10, 0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x00, 0x04, 0x10, 0x00,
|
|
0x00, 0x05, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
|
|
};
|
|
|
|
//R24H b
|
|
unsigned char lut_wb_2in7b[] =
|
|
{
|
|
0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x20, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x84, 0x0E,
|
|
0x01, 0x0E, 0x01, 0x10, 0x10, 0x0A, 0x0A, 0x00, 0x00, 0x08, 0x00, 0x04, 0x10, 0x00,
|
|
0x00, 0x05, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
|
|
};
|
|
|
|
int EPD_Init_2in7b()
|
|
{
|
|
EPD_Reset();
|
|
|
|
EPD_SendCommand(0x04);//POWER_ON
|
|
EPD_WaitUntilIdle();
|
|
|
|
EPD_Send_1(0x00, 0xAF);//PANEL_SETTING
|
|
EPD_Send_1(0x30,0x3A);//PLL_CONTROL: 3A 100HZ, 29 150Hz, 39 200HZ, 31 171HZ
|
|
EPD_Send_5(0x01,0x03,0x00,0x2B,0x2B,0x09);//POWER_SETTING
|
|
EPD_Send_3(0x06,0x07,0x07,0x17);//BOOSTER_SOFT_START
|
|
|
|
// Power optimization
|
|
EPD_Send_2(0xF8,0x60,0xA5);
|
|
EPD_Send_2(0xF8,0x89,0xA5);
|
|
EPD_Send_2(0xF8,0x90,0x00);
|
|
EPD_Send_2(0xF8,0x93,0x2A);
|
|
EPD_Send_2(0xF8,0x73,0x41);
|
|
|
|
EPD_Send_1(0x82,0x2E);// VCM_DC_SETTING_REGISTER
|
|
EPD_Send_1(0x50,0xA7);// VCOM_AND_DATA_INTERVAL_SETTING
|
|
|
|
EPD_lut(0x20,44,&lut_dc_2in7b[0]);// LUT_FOR_VCOM
|
|
EPD_lut(0x21,42,&lut_ww_2in7b[0]);// LUT_WHITE_TO_WHITE
|
|
EPD_lut(0x22,42,&lut_bw_2in7b[0]);// LUT_BLACK_TO_WHITE
|
|
EPD_lut(0x23,42,&lut_wb_2in7b[0]);// LUT_WHITE_TO_BLACK
|
|
EPD_lut(0x24,42,&lut_bb_2in7b[0]);// LUT_BLACK_TO_BLACK
|
|
|
|
EPD_Send_4(0x61, 0, 176, 1, 8);// TCON_RESOLUTION: HI(W), LO(W), HI(H), LO(H)
|
|
EPD_Send_1(0x16, 0x00);//PARTIAL_DISPLAY_REFRESH);
|
|
|
|
EPD_SendCommand(0x10);//DATA_START_TRANSMISSION_1
|
|
delay(2);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int EPD_Init_2in7b_V2(void)
|
|
{
|
|
EPD_Reset();
|
|
|
|
EPD_WaitUntilIdle_high();
|
|
EPD_SendCommand(0x12);
|
|
EPD_WaitUntilIdle_high();
|
|
|
|
EPD_Send_3(0x00, 0x27, 0x01, 0x00);
|
|
EPD_Send_1(0x11, 0x03);
|
|
|
|
EPD_Send_2(0x44, 0x00, 0x15);
|
|
EPD_Send_4(0x45, 0x00, 0x00, 0x7, 0x1);
|
|
|
|
EPD_Send_1(0x4e, 0x00);
|
|
EPD_Send_2(0x4f, 0x00, 0x00);
|
|
|
|
EPD_SendCommand(0x24);
|
|
return 0;
|
|
}
|
|
|
|
void EPD_Show_2in7b_V2(void)
|
|
{
|
|
EPD_SendCommand(0x20);
|
|
EPD_WaitUntilIdle_high();
|
|
|
|
delay(200);
|
|
EPD_Send_1(0x10, 0x01);
|
|
}
|
|
|
|
|
|
|
|
|