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.

197 lines
5.5 KiB
C

/**
******************************************************************************
* @file edp7in5_HD.h
* @author Waveshare Team
* @version V1.0.0
* @date 23-January-2018
* @brief This file describes initialisation of 7.5 HD and 7.5b HD e-Papers
*
******************************************************************************
*/
void EPD_7IN5_HD_Readbusy(void)
{
Serial.print("\r\ne-Paper busy\r\n");
delay(200);
unsigned char busy;
do{
busy = digitalRead(PIN_SPI_BUSY);
}while(busy);
delay(200);
Serial.print("e-Paper busy release\r\n");
}
/*****************************************************************************
EPD_7IN5_HD
******************************************************************************/
static void EPD_7IN5_HD_Show(void)
{
unsigned int i;
EPD_SendCommand(0x26);
for(i=0; i<880*528/8; i++) {
EPD_SendData(0xff);
}
EPD_SendCommand(0x22);//show
EPD_SendData(0xF7);
EPD_SendCommand(0x20);
delay(200);
EPD_7IN5_HD_Readbusy();
EPD_SendCommand(0x10);//sleep
EPD_SendData(0x01);
Serial.print("EPD_7IN5_HD_Show END\r\n");
}
int EPD_7IN5_HD_init()
{
EPD_Reset();
EPD_SendCommand(0x12); //SWRESET
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x46); // Auto Write RAM
EPD_SendData(0xF7);
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x47); // Auto Write RAM
EPD_SendData(0xF7);
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x0C); // Soft start setting
EPD_SendData(0xAE);
EPD_SendData(0xC7);
EPD_SendData(0xC3);
EPD_SendData(0xC0);
EPD_SendData(0x40);
EPD_SendCommand(0x01); // Set MUX as 527
EPD_SendData(0xAF);
EPD_SendData(0x02);
EPD_SendData(0x01);
EPD_SendCommand(0x11); // Data entry mode
EPD_SendData(0x01);
EPD_SendCommand(0x44);
EPD_SendData(0x00); // RAM x address start at 0
EPD_SendData(0x00);
EPD_SendData(0x6F); // RAM x address end at 36Fh -> 879
EPD_SendData(0x03);
EPD_SendCommand(0x45);
EPD_SendData(0xAF); // RAM y address start at 20Fh;
EPD_SendData(0x02);
EPD_SendData(0x00); // RAM y address end at 00h;
EPD_SendData(0x00);
EPD_SendCommand(0x3C); // VBD
EPD_SendData(0x01); // LUT1, for white
EPD_SendCommand(0x18);
EPD_SendData(0X80);
EPD_SendCommand(0x22);
EPD_SendData(0XB1); //Load Temperature and waveform setting.
EPD_SendCommand(0x20);
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x4E);
EPD_SendData(0x00);
EPD_SendData(0x00);
EPD_SendCommand(0x4F);
EPD_SendData(0x00);
EPD_SendData(0x00);
EPD_SendCommand(0x4F);
EPD_SendData(0x00);
EPD_SendData(0x00);
EPD_SendCommand(0x24);//BLOCK
return 0;
}
/*****************************************************************************
EPD_7IN5B_HD
******************************************************************************/
static void EPD_7IN5B_HD_Show(void)
{
EPD_SendCommand(0x22);//show
EPD_SendData(0xC7);
EPD_SendCommand(0x20);
delay(200);
EPD_7IN5_HD_Readbusy();
EPD_SendCommand(0x10);//sleep
EPD_SendData(0x01);
Serial.print("EPD_7IN5B_HD_Show END\r\n");
}
int EPD_7IN5B_HD_init()
{
EPD_Reset();
EPD_SendCommand(0x12); //SWRESET
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x46); // Auto Write RAM
EPD_SendData(0xF7);
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x47); // Auto Write RAM
EPD_SendData(0xF7);
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x0C); // Soft start setting
EPD_SendData(0xAE);
EPD_SendData(0xC7);
EPD_SendData(0xC3);
EPD_SendData(0xC0);
EPD_SendData(0x40);
EPD_SendCommand(0x01); // Set MUX as 527
EPD_SendData(0xAF);
EPD_SendData(0x02);
EPD_SendData(0x01);
EPD_SendCommand(0x11); // Data entry mode
EPD_SendData(0x01);
EPD_SendCommand(0x44);
EPD_SendData(0x00); // RAM x address start at 0
EPD_SendData(0x00);
EPD_SendData(0x6F); // RAM x address end at 36Fh -> 879
EPD_SendData(0x03);
EPD_SendCommand(0x45);
EPD_SendData(0xAF); // RAM y address start at 20Fh;
EPD_SendData(0x02);
EPD_SendData(0x00); // RAM y address end at 00h;
EPD_SendData(0x00);
EPD_SendCommand(0x3C); // VBD
EPD_SendData(0x01); // LUT1, for white
EPD_SendCommand(0x18);
EPD_SendData(0X80);
EPD_SendCommand(0x22);
EPD_SendData(0XB1); //Load Temperature and waveform setting.
EPD_SendCommand(0x20);
EPD_7IN5_HD_Readbusy(); //waiting for the electronic paper IC to release the idle signal
EPD_SendCommand(0x4E);
EPD_SendData(0x00);
EPD_SendData(0x00);
EPD_SendCommand(0x4F);
EPD_SendData(0xAF);
EPD_SendData(0x02);
EPD_SendCommand(0x4F);
EPD_SendData(0xAf);
EPD_SendData(0x02);
EPD_SendCommand(0x24);//BLOCK
return 0;
}