Recently, I encountered some problems when using MSP430F149 to drive GDEW027W3 electronic paper[Copy link]
1. If the partial refresh is not delayed, it will not be refreshed. 2. After adding a delay, the whole screen will flash when the partial refresh is done (for the partial refresh of 32, only the refreshed part will change, and other places will not change). 3. The color displayed when the 430 driver is driven is opposite to the color displayed when the 32 driver is driven (this screen is black and white, and the images displayed by 32 and 430 are black and white reversed). 4. The ghosting left by the full screen refresh is more serious than that of 32 (the refresh is not clean enough). The following is the main program ( The delay in the middle of partial refresh is added by myself. If it is less than this delay, it will not be refreshed. ) int main(void) { WDTCTL = WDTPW + WDTHOLD; // System clock setting InitOSC(); // IO parameter setting //SPI_IO_Init(); Eink_Clk_IO_INIT; Eink_MOSI_IO_INIT; Eink_DC_IO_INIT; Eink_CS_IO_INIT; Eink_BUSY_Input; Eink_RST_IO_INIT; Eink_BS_IO_INIT; Eink_Init(); EPD_W21_WriteCMD(0x01); //POWER SETTING EPD_W21_WriteDATA (0x03); EPD_W21_WriteDATA (0x00); EPD_W21_WriteDATA (0x2b); EPD_W21_WriteDATA (0x2b); EPD_W21_WriteCMD(0x06); //boost settings EPD_W21_WriteDATA (0x07); //A EPD_W21_WriteDATA (0x07); //B EPD_W21_WriteDATA (0x17); //C EPD_W21_WriteCMD(0x16); EPD_W21_WriteDATA(0x00); EPD_W21_WriteCMD(0x04); lcd_chkstatus(); EPD_W21_WriteCMD(0x00); //panel setting EPD_W21_WriteDATA(0xbf); //KW-BF KWR-AF BWROTP 0f EPD_W21_WriteCMD(0x30); //PLL setting EPD_W21_WriteDATA (0x3a); //90 50HZ 3A 100HZ 29 150Hz 39 200HZ 31 171HZ EPD_W21_WriteCMD(0x61); //resolution setting establish resolution [ /color]EPD_W21_WriteDATA (0x00); EPD_W21_WriteDATA (0xb0); //176 EPD_W21_WriteDATA (0x01); EPD_W21_WriteDATA (0x08); //264 EPD_W21_WriteCMD(0x82); //vcom_DC setting [backcolor= transparent] EPD_W21_WriteDATA (0x28); //0x28:-2.0V,0x12:-0.9V delay_ms(2); /******full screen for level update**** ************************************/ EPD_W21_WriteCMD(0X50); //VCOM AND DATA INTERVAL SETTING [ /color]EPD_W21_WriteDATA(0x47); lut(); pic_display(); EPD_W21_WriteCMD(0x12); //DISPLAY REFRESH refresh delay_ms(1500); lcd_chkstatus(); /******full screen for vertical update***** ************************************/ //Update full screen vertically [backcolor=transparent ] EPD_W21_WriteCMD(0X50); //VCOM AND DATA INTERVAL SETTING Command and data interval setting EPD_W21_WriteDATA(0x47); [backcolor=transparent ] lut(); //display clear screen pic_display_white(); EPD_W21_WriteCMD(0x12); //DISPLAY REFRESH delay_ms(1000); [color= #008000] lcd_chkstatus(); //display pic2 pic_display1(); pic_display_white(); EPD_W21_WriteCMD(0x12); //DISPLAY REFRESH delay_ms(1000); lcd_chkstatus(); ////////////////// /////////partial for vertical////////////////////// EPD_W21_WriteCMD(0x30); //PLL setting EPD_W21_WriteDATA (0x29); //90 50HZ 3A 100HZ 29 150Hz 39 200HZ 31 171HZ EPD_W21_WriteCMD(0X50); EPD_W21_WriteDATA(0x97); lut1(); partial_display(0,0,176,264,partial_full00, partial_full01); / /partial full display delay_ms(3000); partial_display(0,0,32,64, partial00, partial01); //partial display 0 1 delay_ms(1500); partial_display(0,0,32,64, partial01, partial02); //partial display 1 2 //////////////(x,y) ----Y---- delay_ms(1500); partial_display(0,0, 32,64, partial02, partial03); //partial display 2 3 / / / X| delay_ms(1500); partial_display(0,0,32,64, partial03, partial04); //partial display 3 4 /W / / | delay_ms(1500);
partial_display(0,0,32,64, partial08, partial09); //partial display 8 9 /******* *************************************************** *********/ while(1); } If you have found it useful, I'd be grateful if you could help me solve it.
For delay, you need to look at the official chip manual requirements. For different MCUs, the output is driven by high and low levels. You only need to write the interface.
Details
Published on 2018-5-3 10:53
For delay, you need to look at the official chip manual requirements. For different MCUs, the output is driven by high and low levels. You only need to write the interface.