diff --git a/Arduino/epd2in9/epd2in9.cpp b/Arduino/epd2in9/epd2in9.cpp index dfe4cbc..c94854a 100644 --- a/Arduino/epd2in9/epd2in9.cpp +++ b/Arduino/epd2in9/epd2in9.cpp @@ -254,7 +254,8 @@ void Epd::SetMemoryPointer(int x, int y) { */ void Epd::Sleep() { SendCommand(DEEP_SLEEP_MODE); - WaitUntilIdle(); + SendData(0x01); + // WaitUntilIdle(); } const unsigned char lut_full_update[] = { diff --git a/Arduino/epd2in9_V2/epd2in9_V2.cpp b/Arduino/epd2in9_V2/epd2in9_V2.cpp index c87d730..58a47a9 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.cpp +++ b/Arduino/epd2in9_V2/epd2in9_V2.cpp @@ -374,7 +374,7 @@ void Epd::SetMemoryPointer(int x, int y) { void Epd::Sleep() { SendCommand(0x10); SendData(0x01); - WaitUntilIdle(); + // WaitUntilIdle(); } /* END OF FILE */ diff --git a/Arduino/epd2in9d/epd2in9d.cpp b/Arduino/epd2in9d/epd2in9d.cpp index 22bacc7..37b3fb6 100644 --- a/Arduino/epd2in9d/epd2in9d.cpp +++ b/Arduino/epd2in9d/epd2in9d.cpp @@ -31,57 +31,6 @@ #include #include "epd2in9d.h" -/** - * full screen update LUT -**/ -const unsigned char EPD_2IN9D_lut_vcomDC[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x60, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_ww[] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x01, - 0xA0, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_bw[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_wb[] = { - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_bb[] = { - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - - /** * partial screen update LUT **/ @@ -175,44 +124,7 @@ void Epd::WaitUntilIdle(void) busy = DigitalRead(busy_pin); busy =!(busy & 0x01); } while(busy); - DelayMs(200); -} - - -/****************************************************************************** -function : LUT download -parameter: -******************************************************************************/ -void Epd::SetFullReg(void) -{ - SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING - SendData(0xb7); //WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 - - unsigned int count; - SendCommand(0x20); - for(count=0; count<44; count++) { - SendData(EPD_2IN9D_lut_vcomDC[count]); - } - - SendCommand(0x21); - for(count=0; count<42; count++) { - SendData(EPD_2IN9D_lut_ww[count]); - } - - SendCommand(0x22); - for(count=0; count<42; count++) { - SendData(EPD_2IN9D_lut_bw[count]); - } - - SendCommand(0x23); - for(count=0; count<42; count++) { - SendData(EPD_2IN9D_lut_wb[count]); - } - - SendCommand(0x24); - for(count=0; count<42; count++) { - SendData(EPD_2IN9D_lut_bb[count]); - } + DelayMs(20); } /****************************************************************************** @@ -221,10 +133,38 @@ parameter: ******************************************************************************/ void Epd::SetPartReg(void) { - SendCommand(0x82); //vcom_DC setting + + SendCommand(0x01); //POWER SETTING + SendData(0x03); SendData(0x00); + SendData(0x2b); + SendData(0x2b); + SendData(0x03); + + SendCommand(0x06); //boost soft start + SendData(0x17); //A + SendData(0x17); //B + SendData(0x17); //C + + SendCommand(0x04); + WaitUntilIdle(); + + SendCommand(0x00); //panel setting + SendData(0xbf); //LUT from OTP,128x296 + + SendCommand(0x30); //PLL setting + SendData(0x3a); // 3a 100HZ 29 150Hz 39 200HZ 31 171HZ + + SendCommand(0x61); //resolution setting + SendData(EPD_WIDTH); + SendData((EPD_WIDTH >> 8) & 0xff); + SendData(EPD_HEIGHT & 0xff); + + SendCommand(0x82); //vcom_DC setting + SendData(0x12); + SendCommand(0X50); - SendData(0xb7); + SendData(0x97); unsigned int count; SendCommand(0x20); @@ -270,35 +210,19 @@ int Epd::Init(void) Reset(); - SendCommand(0x01); //POWER SETTING - SendData(0x03); - SendData(0x00); - SendData(0x2b); - SendData(0x2b); - SendData(0x03); + SendCommand(0x04); + WaitUntilIdle();//waiting for the electronic paper IC to release the idle signal - SendCommand(0x06); //boost soft start - SendData(0x17); //A - SendData(0x17); //B - SendData(0x17); //C + SendCommand(0x00); //panel setting + SendData(0x1f); //LUT from OTP,KW-BF KWR-AF BWROTP 0f BWOTP 1f - SendCommand(0x04); - WaitUntilIdle(); + SendCommand(0x61); //resolution setting + SendData (0x80); + SendData (0x01); + SendData (0x28); - SendCommand(0x00); //panel setting - SendData(0xbf); //LUT from OTP,128x296 - SendData(0x0e); //VCOM to 0V fast - - SendCommand(0x30); //PLL setting - SendData(0x3a); // 3a 100HZ 29 150Hz 39 200HZ 31 171HZ - - SendCommand(0x61); //resolution setting - SendData(EPD_WIDTH); - SendData((EPD_HEIGHT >> 8) & 0xff); - SendData(EPD_HEIGHT & 0xff); - - SendCommand(0x82); //vcom_DC setting - SendData(0x28); + SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING + return 0; } @@ -311,11 +235,19 @@ int Epd::Init(void) void Epd::Reset(void) { DigitalWrite(reset_pin, HIGH); - DelayMs(200); + DelayMs(20); DigitalWrite(reset_pin, LOW); //module reset - DelayMs(10); + DelayMs(2); DigitalWrite(reset_pin, HIGH); - DelayMs(200); + DelayMs(20); + DigitalWrite(reset_pin, LOW); //module reset + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); + DigitalWrite(reset_pin, LOW); //module reset + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); } void Epd::Clear(void) @@ -338,7 +270,6 @@ void Epd::Clear(void) } } - SetFullReg(); TurnOnDisplay(); } @@ -363,7 +294,6 @@ void Epd::Display(const unsigned char* frame_buffer) } // Dev_Delay_ms(10); - SetFullReg(); TurnOnDisplay(); } diff --git a/Arduino/epd4in2/epd4in2.cpp b/Arduino/epd4in2/epd4in2.cpp index 8e13f55..3394d2d 100644 --- a/Arduino/epd4in2/epd4in2.cpp +++ b/Arduino/epd4in2/epd4in2.cpp @@ -146,9 +146,17 @@ void Epd::WaitUntilIdle(void) { */ void Epd::Reset(void) { DigitalWrite(reset_pin, LOW); - DelayMs(200); + DelayMs(2); DigitalWrite(reset_pin, HIGH); - DelayMs(200); + DelayMs(20); + DigitalWrite(reset_pin, LOW); + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); + DigitalWrite(reset_pin, LOW); + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); } /** diff --git a/Arduino/epd5in65f/epd5in65f.cpp b/Arduino/epd5in65f/epd5in65f.cpp index 77616b5..d722565 100644 --- a/Arduino/epd5in65f/epd5in65f.cpp +++ b/Arduino/epd5in65f/epd5in65f.cpp @@ -71,7 +71,7 @@ int Epd::Init(void) { SendData(0x1D); SendCommand(0x30); SendData(0x3C); - SendCommand(0x40); + SendCommand(0x41); SendData(0x00); SendCommand(0x50); SendData(0x37); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c index 17f799a..06dd6f1 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c @@ -58,7 +58,7 @@ int EPD_2in13_V3_test(void) Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); Paint_Clear(WHITE); -#if 0 // show bmp +#if 1 // show bmp Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); printf("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); @@ -68,7 +68,7 @@ int EPD_2in13_V3_test(void) printf("show bmp------------------------\r\n"); Paint_SelectImage(BlackImage); - GUI_ReadBmp("./pic/2in13_2.bmp", 0, 0); + GUI_ReadBmp("./pic/2in13_1.bmp", 0, 0); EPD_2in13_V3_Display(BlackImage); DEV_Delay_ms(3000); #endif diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in9d_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in9d_test.c index 7b889a4..03139bd 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in9d_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in9d_test.c @@ -115,7 +115,7 @@ int EPD_2in9d_test(void) sPaint_time.Hour = 12; sPaint_time.Min = 34; sPaint_time.Sec = 56; - UBYTE num = 20; + UBYTE num = 10; for (;;) { sPaint_time.Sec = sPaint_time.Sec + 1; if (sPaint_time.Sec == 60) { @@ -141,17 +141,17 @@ int EPD_2in9d_test(void) EPD_2IN9D_DisplayPart(BlackImage); DEV_Delay_ms(500);//Analog clock 1s } - #endif - printf("Clear...\r\n"); -// EPD_2IN9D_Init(); - EPD_2IN9D_Clear(); + printf("Clear...\r\n"); + EPD_2IN9D_Init(); + EPD_2IN9D_Clear(); + DEV_Delay_ms(2000);//important, at least 2s printf("Goto Sleep...\r\n"); EPD_2IN9D_Sleep(); free(BlackImage); BlackImage = NULL; - DEV_Delay_ms(2000);//important, at least 2s + DEV_Delay_ms(3000);//important, at least 2s // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in2_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in2_V2_test.c new file mode 100644 index 0000000..bcf3098 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in2_V2_test.c @@ -0,0 +1,161 @@ +/***************************************************************************** +* | File : EPD_4in2_V2_V2_test.c +* | Author : Waveshare team +* | Function : 4.2inch e-paper V2 test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-02-23 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_4in2_V2.h" +#include + +int EPD_4in2_V2_test(void) +{ + printf("EPD_4IN2_V2_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_4IN2_V2_Init(); + EPD_4IN2_V2_Clear(); + DEV_Delay_ms(500); + + //Create a new image cache + UBYTE *BlackImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_4IN2_V2_WIDTH % 8 == 0)? (EPD_4IN2_V2_WIDTH / 8 ): (EPD_4IN2_V2_WIDTH / 8 + 1)) * EPD_4IN2_V2_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_4IN2_V2_WIDTH, EPD_4IN2_V2_HEIGHT, 0, WHITE); + +#if 1 // show bmp + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_4IN2_V2_Display(BlackImage); + DEV_Delay_ms(2000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/4in2.bmp", 0, 0); + EPD_4IN2_V2_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 0 // show image for array + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_4in2); + EPD_4IN2_V2_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + Paint_DrawString_CN(130, 0, " ÄãºÃabc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK); + + printf("EPD_Display\r\n"); + // EPD_4IN2_V2_Display(BlackImage); + EPD_4IN2_V2_Display_Base(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 + printf("Partial refresh\r\n"); + Paint_NewImage(BlackImage, 200, 50, 0, WHITE); + PAINT_TIME sPaint_time; + sPaint_time.Hour = 12; + sPaint_time.Min = 34; + sPaint_time.Sec = 56; + UBYTE num = 10; + for (;;) { + sPaint_time.Sec = sPaint_time.Sec + 1; + if (sPaint_time.Sec == 60) { + sPaint_time.Min = sPaint_time.Min + 1; + sPaint_time.Sec = 0; + if (sPaint_time.Min == 60) { + sPaint_time.Hour = sPaint_time.Hour + 1; + sPaint_time.Min = 0; + if (sPaint_time.Hour == 24) { + sPaint_time.Hour = 0; + sPaint_time.Min = 0; + sPaint_time.Sec = 0; + } + } + } + Paint_Clear(WHITE); + Paint_DrawTime(20, 10, &sPaint_time, &Font20, WHITE, BLACK); + EPD_4IN2_V2_PartialDisplay(BlackImage, 80, 200, 200, 50); + DEV_Delay_ms(500);//Analog clock 1s + num = num - 1; + if(num == 0) { + break; + } + } +#endif + + EPD_4IN2_V2_Init(); + EPD_4IN2_V2_Clear(); + printf("Goto Sleep...\r\n"); + EPD_4IN2_V2_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + + return 0; +} + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c index 57a7238..b3facae 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c @@ -55,7 +55,7 @@ int EPD_4in2_test(void) Paint_NewImage(BlackImage, EPD_4IN2_WIDTH, EPD_4IN2_HEIGHT, 0, WHITE); -#if 0 // show bmp +#if 1 // show bmp printf("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); Paint_Clear(WHITE); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_7in5b_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_7in5b_V2_test.c index 68504d3..491ca20 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_7in5b_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_7in5b_V2_test.c @@ -72,10 +72,10 @@ int EPD_7in5b_V2_test(void) #if 1 // show bmp printf("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); - GUI_ReadBmp("./pic/100x100.bmp", 10, 0); + GUI_ReadBmp("./pic/2in9.bmp", 50, 100); Paint_SelectImage(RYImage); - Paint_Clear(WHITE); - GUI_ReadBmp("./pic/100x100.bmp", 200, 0); + Paint_Clear(WHITE); + GUI_ReadBmp("./pic/2in9.bmp", 350, 100); EPD_7IN5B_V2_Display(BlackImage, RYImage); DEV_Delay_ms(2000); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_Test.h b/RaspberryPi_JetsonNano/c/examples/EPD_Test.h index 176f249..7c9554b 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_Test.h +++ b/RaspberryPi_JetsonNano/c/examples/EPD_Test.h @@ -73,6 +73,7 @@ int EPD_3in7_test(void); int EPD_4in01f_test(void); int EPD_4in2_test(void); +int EPD_4in2_V2_test(void); int EPD_4in2bc_test(void); int EPD_4in2b_V2_test(void); diff --git a/RaspberryPi_JetsonNano/c/examples/main.c b/RaspberryPi_JetsonNano/c/examples/main.c index 0180637..147502d 100644 --- a/RaspberryPi_JetsonNano/c/examples/main.c +++ b/RaspberryPi_JetsonNano/c/examples/main.c @@ -53,6 +53,7 @@ int main(void) // EPD_4in01f_test(); // EPD_4in2_test(); + // EPD_4in2_V2_test(); // EPD_4in2bc_test(); // EPD_4in2b_V2_test(); @@ -81,14 +82,15 @@ int main(void) // EPD_13in3_test(); - /* For Test - if(DEV_Module_Init()!=0){ - return -1; - } - while(1) { - DEV_Delay_ms(10000); - } - DEV_Module_Exit(); - */ + // For Test + // if(DEV_Module_Init()!=0){ + // return -1; + // } + // while(1) { + // EPD_7in5b_V2_test(); + // DEV_Delay_ms(10000); + // } + // DEV_Module_Exit(); + // return 0; } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c index d2d48a9..d21d0a5 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c @@ -30,6 +30,29 @@ #include "EPD_1in54_V2.h" #include "Debug.h" +const unsigned char WF_PARTIAL_1IN54[159] = +{ +0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0xF,0x0,0x0,0x0,0x0,0x0,0x1, +0x1,0x1,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, +0x02,0x17,0x41,0xB0,0x32,0x28, +}; + /****************************************************************************** function : Software reset parameter: @@ -78,7 +101,7 @@ static void EPD_1IN54_V2_ReadBusy(void) { Debug("e-Paper busy\r\n"); while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) { //LOW: idle, HIGH: busy - DEV_Delay_ms(100); + DEV_Delay_ms(10); } Debug("e-Paper busy release\r\n"); } @@ -91,7 +114,7 @@ static void EPD_1IN54_V2_TurnOnDisplay(void) { EPD_1IN54_V2_SendCommand(0x22); EPD_1IN54_V2_SendData(0xF7); - EPD_1IN54_V2_SendCommand(0x20); + EPD_1IN54_V2_SendCommand(0x20); EPD_1IN54_V2_ReadBusy(); } @@ -107,6 +130,37 @@ static void EPD_1IN54_V2_TurnOnDisplayPart(void) EPD_1IN54_V2_ReadBusy(); } +static void EPD_1IN54_V2_SetLut(void) +{ + EPD_1IN54_V2_SendCommand(0x32); + for(UBYTE i=0; i<153; i++) + EPD_1IN54_V2_SendData(WF_PARTIAL_1IN54[i]); + EPD_1IN54_V2_ReadBusy(); +} + +static void EPD_1IN54_V2_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_1IN54_V2_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_1IN54_V2_SendData((Xstart>>3) & 0xFF); + EPD_1IN54_V2_SendData((Xend>>3) & 0xFF); + + EPD_1IN54_V2_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_1IN54_V2_SendData(Ystart & 0xFF); + EPD_1IN54_V2_SendData((Ystart >> 8) & 0xFF); + EPD_1IN54_V2_SendData(Yend & 0xFF); + EPD_1IN54_V2_SendData((Yend >> 8) & 0xFF); +} + +static void EPD_1IN54_V2_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_1IN54_V2_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_1IN54_V2_SendData(Xstart & 0xFF); + + EPD_1IN54_V2_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_1IN54_V2_SendData(Ystart & 0xFF); + EPD_1IN54_V2_SendData((Ystart >> 8) & 0xFF); +} + /****************************************************************************** function : Initialize the e-Paper register parameter: @@ -127,15 +181,16 @@ void EPD_1IN54_V2_Init(void) EPD_1IN54_V2_SendCommand(0x11); //data entry mode EPD_1IN54_V2_SendData(0x01); - EPD_1IN54_V2_SendCommand(0x44); //set Ram-X address start/end position - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x18); //0x0C-->(18+1)*8=200 + // EPD_1IN54_V2_SendCommand(0x44); //set Ram-X address start/end position + // EPD_1IN54_V2_SendData(0x00); + // EPD_1IN54_V2_SendData(0x18); //0x0C-->(18+1)*8=200 - EPD_1IN54_V2_SendCommand(0x45); //set Ram-Y address start/end position - EPD_1IN54_V2_SendData(0xC7); //0xC7-->(199+1)=200 - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); + // EPD_1IN54_V2_SendCommand(0x45); //set Ram-Y address start/end position + // EPD_1IN54_V2_SendData(0xC7); //0xC7-->(199+1)=200 + // EPD_1IN54_V2_SendData(0x00); + // EPD_1IN54_V2_SendData(0x00); + // EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SetWindows(0, EPD_1IN54_V2_HEIGHT-1, EPD_1IN54_V2_WIDTH-1, 0); EPD_1IN54_V2_SendCommand(0x3C); //BorderWavefrom EPD_1IN54_V2_SendData(0x01); @@ -147,12 +202,13 @@ void EPD_1IN54_V2_Init(void) EPD_1IN54_V2_SendData(0XB1); EPD_1IN54_V2_SendCommand(0x20); - EPD_1IN54_V2_SendCommand(0x4E); // set RAM x address count to 0; - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendCommand(0x4F); // set RAM y address count to 0X199; - EPD_1IN54_V2_SendData(0xC7); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_ReadBusy(); + // EPD_1IN54_V2_SendCommand(0x4E); // set RAM x address count to 0; + // EPD_1IN54_V2_SendData(0x00); + // EPD_1IN54_V2_SendCommand(0x4F); // set RAM y address count to 0X199; + // EPD_1IN54_V2_SendData(0xC7); + // EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SetCursor(0, EPD_1IN54_V2_HEIGHT-1); + EPD_1IN54_V2_ReadBusy(); } /****************************************************************************** @@ -241,9 +297,23 @@ void EPD_1IN54_V2_DisplayPart(UBYTE *Image) Height = EPD_1IN54_V2_HEIGHT; DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(10); + DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(10); + DEV_Delay_ms(5); + + EPD_1IN54_V2_SetLut(); + EPD_1IN54_V2_SendCommand(0x37); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x40); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendCommand(0x3C); //BorderWavefrom EPD_1IN54_V2_SendData(0x80); @@ -257,6 +327,7 @@ void EPD_1IN54_V2_DisplayPart(UBYTE *Image) } EPD_1IN54_V2_TurnOnDisplayPart(); } + /****************************************************************************** function : Enter sleep mode parameter: diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c index cd53d9b..55381e5 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c @@ -82,9 +82,9 @@ void EPD_2in13_V3_ReadBusy(void) { //=1 BUSY if(DEV_Digital_Read(EPD_BUSY_PIN)==0) break; - DEV_Delay_ms(50); + DEV_Delay_ms(10); } - DEV_Delay_ms(50); + DEV_Delay_ms(10); Debug("e-Paper busy release\r\n"); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c index 1ccb29a..fa8c708 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c @@ -112,7 +112,7 @@ void EPD_2IN9_V2_ReadBusy(void) } static void EPD_2IN9_V2_LUT(void) -{ +{ UBYTE count; EPD_2IN9_V2_SendCommand(0x32); for(count=0; count<153; count++) diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.c index 82d2bef..42f101b 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.c @@ -4,8 +4,8 @@ * | Function : 2.9inch e-paper d * | Info : *---------------- -* | This version: V2.0 -* | Date : 2019-06-12 +* | This version: V3.1 +* | Date : 2021-03-18 * | Info : * ----------------------------------------------------------------------------- * V3.0(2019-06-12): @@ -54,57 +54,6 @@ #include "EPD_2in9d.h" #include "Debug.h" -/** - * full screen update LUT -**/ -const unsigned char EPD_2IN9D_lut_vcomDC[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x60, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_ww[] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x01, - 0xA0, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_bw[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_wb[] = { - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_bb[] = { - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - - /** * partial screen update LUT **/ @@ -163,11 +112,19 @@ parameter: static void EPD_2IN9D_Reset(void) { DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); } /****************************************************************************** @@ -209,56 +166,48 @@ void EPD_2IN9D_ReadBusy(void) busy = DEV_Digital_Read(EPD_BUSY_PIN); busy =!(busy & 0x01); } while(busy); - DEV_Delay_ms(200); + DEV_Delay_ms(20); Debug("e-Paper busy release\r\n"); } -/****************************************************************************** -function : LUT download -parameter: -******************************************************************************/ -static void EPD_SetFullReg(void) -{ - EPD_2IN9D_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING - EPD_2IN9D_SendData(0xb7); //WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 - - unsigned int count; - EPD_2IN9D_SendCommand(0x20); - for(count=0; count<44; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_vcomDC[count]); - } - - EPD_2IN9D_SendCommand(0x21); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_ww[count]); - } - - EPD_2IN9D_SendCommand(0x22); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_bw[count]); - } - - EPD_2IN9D_SendCommand(0x23); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_wb[count]); - } - - EPD_2IN9D_SendCommand(0x24); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_bb[count]); - } -} - /****************************************************************************** function : LUT download parameter: ******************************************************************************/ static void EPD_2IN9D_SetPartReg(void) { - EPD_2IN9D_SendCommand(0x82); //vcom_DC setting + + EPD_2IN9D_SendCommand(0x01); //POWER SETTING + EPD_2IN9D_SendData(0x03); EPD_2IN9D_SendData(0x00); + EPD_2IN9D_SendData(0x2b); + EPD_2IN9D_SendData(0x2b); + EPD_2IN9D_SendData(0x03); + + EPD_2IN9D_SendCommand(0x06); //boost soft start + EPD_2IN9D_SendData(0x17); //A + EPD_2IN9D_SendData(0x17); //B + EPD_2IN9D_SendData(0x17); //C + + EPD_2IN9D_SendCommand(0x04); + EPD_2IN9D_ReadBusy(); + + EPD_2IN9D_SendCommand(0x00); //panel setting + EPD_2IN9D_SendData(0xbf); //LUT from OTP,128x296 + + EPD_2IN9D_SendCommand(0x30); //PLL setting + EPD_2IN9D_SendData(0x3a); // 3a 100HZ 29 150Hz 39 200HZ 31 171HZ + + EPD_2IN9D_SendCommand(0x61); //resolution setting + EPD_2IN9D_SendData(EPD_2IN9D_WIDTH); + EPD_2IN9D_SendData((EPD_2IN9D_HEIGHT >> 8) & 0xff); + EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT & 0xff); + + EPD_2IN9D_SendCommand(0x82); //vcom_DC setting + EPD_2IN9D_SendData(0x12); + EPD_2IN9D_SendCommand(0X50); - EPD_2IN9D_SendData(0xb7); + EPD_2IN9D_SendData(0x97); unsigned int count; EPD_2IN9D_SendCommand(0x20); @@ -306,36 +255,20 @@ parameter: void EPD_2IN9D_Init(void) { EPD_2IN9D_Reset(); + + EPD_2IN9D_SendCommand(0x04); + EPD_2IN9D_ReadBusy();//waiting for the electronic paper IC to release the idle signal - EPD_2IN9D_SendCommand(0x01); //POWER SETTING - EPD_2IN9D_SendData(0x03); - EPD_2IN9D_SendData(0x00); - EPD_2IN9D_SendData(0x2b); - EPD_2IN9D_SendData(0x2b); - EPD_2IN9D_SendData(0x03); + EPD_2IN9D_SendCommand(0x00); //panel setting + EPD_2IN9D_SendData(0x1f); //LUT from OTP,KW-BF KWR-AF BWROTP 0f BWOTP 1f - EPD_2IN9D_SendCommand(0x06); //boost soft start - EPD_2IN9D_SendData(0x17); //A - EPD_2IN9D_SendData(0x17); //B - EPD_2IN9D_SendData(0x17); //C + EPD_2IN9D_SendCommand(0x61); //resolution setting + EPD_2IN9D_SendData (0x80); + EPD_2IN9D_SendData (0x01); + EPD_2IN9D_SendData (0x28); - EPD_2IN9D_SendCommand(0x04); - EPD_2IN9D_ReadBusy(); - - EPD_2IN9D_SendCommand(0x00); //panel setting - EPD_2IN9D_SendData(0xbf); //LUT from OTP,128x296 - EPD_2IN9D_SendData(0x0e); //VCOM to 0V fast - - EPD_2IN9D_SendCommand(0x30); //PLL setting - EPD_2IN9D_SendData(0x3a); // 3a 100HZ 29 150Hz 39 200HZ 31 171HZ - - EPD_2IN9D_SendCommand(0x61); //resolution setting - EPD_2IN9D_SendData(EPD_2IN9D_WIDTH); - EPD_2IN9D_SendData((EPD_2IN9D_HEIGHT >> 8) & 0xff); - EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT & 0xff); - - EPD_2IN9D_SendCommand(0x82); //vcom_DC setting - EPD_2IN9D_SendData(0x28); + EPD_2IN9D_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING + EPD_2IN9D_SendData(0x97); //WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 } /****************************************************************************** @@ -361,8 +294,6 @@ void EPD_2IN9D_Clear(void) EPD_2IN9D_SendData(0xFF); } } - - EPD_SetFullReg(); EPD_2IN9D_TurnOnDisplay(); } @@ -382,7 +313,6 @@ void EPD_2IN9D_Display(UBYTE *Image) EPD_2IN9D_SendData(0x00); } } - // Dev_Delay_ms(10); EPD_2IN9D_SendCommand(0x13); for (UWORD j = 0; j < Height; j++) { @@ -390,9 +320,7 @@ void EPD_2IN9D_Display(UBYTE *Image) EPD_2IN9D_SendData(Image[i + j * Width]); } } - // Dev_Delay_ms(10); - EPD_SetFullReg(); EPD_2IN9D_TurnOnDisplay(); } @@ -430,7 +358,6 @@ void EPD_2IN9D_DisplayPart(UBYTE *Image) EPD_2IN9D_TurnOnDisplay(); } - /****************************************************************************** function : Enter sleep mode parameter: diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.h index 6f55528..10b521e 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.h +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9d.h @@ -4,8 +4,8 @@ * | Function : 2.9inch e-paper d * | Info : *---------------- -* | This version: V2.0 -* | Date : 2019-06-12 +* | This version: V3.1 +* | Date : 2021-03-18 * | Info : * ----------------------------------------------------------------------------- * V3.0(2019-06-12): diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c index 9e88df7..7ff7337 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c @@ -267,11 +267,19 @@ parameter: static void EPD_4IN2_Reset(void) { DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); } /****************************************************************************** diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2_V2.c new file mode 100644 index 0000000..a32e6a0 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2_V2.c @@ -0,0 +1,322 @@ +/***************************************************************************** +* | File : EPD_4in2_V2_V2.h +* | Author : Waveshare team +* | Function : 4.2inch e-paper V2 +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-02-23 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_4in2_V2.h" +#include "Debug.h" + +UBYTE WF_PARTIAL_4IN2[76] = +{ +0X00,0x40,0x00,0x00,0x00,0x00,0x00, // L0 0-6 ABCD +0X80,0x80,0x00,0x00,0x00,0x00,0x00, // L1 0-6 ABCD +0X40,0x40,0x00,0x00,0x00,0x00,0x00, // L2 0-6 ABCD +0X00,0x80,0x00,0x00,0x00,0x00,0x00, // L3 0-6 ABCD +0X00,0x00,0x00,0x00,0x00,0x00,0x00, // VCOM 0-6 ABCD +0x0A,0x00,0x00,0x00,0x02,//0A 0B 0C 0D R +0x01,0x00,0x00,0x00,0x00,//1A 0B 0C 0D R +0x00,0x00,0x00,0x00,0x00,//2A 0B 0C 0D R +0x00,0x00,0x00,0x00,0x00,//3A 0B 0C 0D R +0x00,0x00,0x00,0x00,0x00,//4A 0B 0C 0D R +0x00,0x00,0x00,0x00,0x00,//5A 0B 0C 0D R +0x00,0x00,0x00,0x00,0x00,//6A 0B 0C 0D R +0x17,0x41,0x0, 0x32,0x2C,0x0A +}; + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_4IN2_V2_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_4IN2_V2_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_4IN2_V2_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void EPD_4IN2_V2_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) { //LOW: idle, HIGH: busy + DEV_Delay_ms(10); + } + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_4IN2_V2_TurnOnDisplay(void) +{ + EPD_4IN2_V2_SendCommand(0x22); + EPD_4IN2_V2_SendData(0xC7); + EPD_4IN2_V2_SendCommand(0x20); + EPD_4IN2_V2_ReadBusy(); +} + +static void EPD_4IN2_V2_TurnOnDisplay_Partial(void) +{ + EPD_4IN2_V2_SendCommand(0x22); + EPD_4IN2_V2_SendData(0xCF); + EPD_4IN2_V2_SendCommand(0x20); + EPD_4IN2_V2_ReadBusy(); +} + +/****************************************************************************** +function : set the look-up tables +parameter: +******************************************************************************/ +static void EPD_4IN2_V2_SetLut(void) +{ + UWORD count; + EPD_4IN2_V2_SendCommand(0x32); + for(count=0; count<70; count++) { + EPD_4IN2_V2_SendData(WF_PARTIAL_4IN2[count]); + } +} + +/****************************************************************************** +function : Setting the display window +parameter: +******************************************************************************/ +static void EPD_4IN2_V2_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_4IN2_V2_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_4IN2_V2_SendData((Xstart>>3) & 0xFF); + EPD_4IN2_V2_SendData((Xend>>3) & 0xFF); + + EPD_4IN2_V2_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_4IN2_V2_SendData(Ystart & 0xFF); + EPD_4IN2_V2_SendData((Ystart >> 8) & 0xFF); + EPD_4IN2_V2_SendData(Yend & 0xFF); + EPD_4IN2_V2_SendData((Yend >> 8) & 0xFF); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_4IN2_V2_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_4IN2_V2_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_4IN2_V2_SendData(Xstart & 0xFF); + + EPD_4IN2_V2_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_4IN2_V2_SendData(Ystart & 0xFF); + EPD_4IN2_V2_SendData((Ystart >> 8) & 0xFF); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_4IN2_V2_Init(void) +{ + EPD_4IN2_V2_Reset(); + + EPD_4IN2_V2_ReadBusy(); + EPD_4IN2_V2_SendCommand(0x12); // soft reset + EPD_4IN2_V2_ReadBusy(); + + EPD_4IN2_V2_SendCommand(0x74); // IC analog block control + EPD_4IN2_V2_SendData(0x54); + EPD_4IN2_V2_SendCommand(0x7E); // IC digital block control + EPD_4IN2_V2_SendData(0x3B); + + EPD_4IN2_V2_SendCommand(0x01); // drive output control + EPD_4IN2_V2_SendData(0x2B); // Y low byte + EPD_4IN2_V2_SendData(0x01); // Y high byte + EPD_4IN2_V2_SendData(0x00); + + EPD_4IN2_V2_SendCommand(0x11); // data entry mode + EPD_4IN2_V2_SendData(0x03); // X-mode + + EPD_4IN2_V2_SetWindows(0, 0, EPD_4IN2_V2_WIDTH-1, EPD_4IN2_V2_HEIGHT-1); + + EPD_4IN2_V2_SendCommand(0x3C); // Border setting + EPD_4IN2_V2_SendData(0x01); + + EPD_4IN2_V2_SendCommand(0x18); // use the internal temperature sensor + EPD_4IN2_V2_SendData(0x80); + + EPD_4IN2_V2_SendCommand(0x22); + EPD_4IN2_V2_SendData(0xB1); + EPD_4IN2_V2_SendCommand(0x20); + EPD_4IN2_V2_ReadBusy(); + + EPD_4IN2_V2_SetCursor(0, 0); + + EPD_4IN2_V2_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_4IN2_V2_Clear(void) +{ + UWORD Width, Height; + Width = (EPD_4IN2_V2_WIDTH % 8 == 0)? (EPD_4IN2_V2_WIDTH / 8 ): (EPD_4IN2_V2_WIDTH / 8 + 1); + Height = EPD_4IN2_V2_HEIGHT; + + EPD_4IN2_V2_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_V2_SendData(0xFF); + } + } + + EPD_4IN2_V2_SendCommand(0x26); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_V2_SendData(0x00); + } + } + EPD_4IN2_V2_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_4IN2_V2_Display(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_4IN2_V2_WIDTH % 8 == 0)? (EPD_4IN2_V2_WIDTH / 8 ): (EPD_4IN2_V2_WIDTH / 8 + 1); + Height = EPD_4IN2_V2_HEIGHT; + + EPD_4IN2_V2_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_V2_SendData(Image[i + j * Width]); + } + } + EPD_4IN2_V2_TurnOnDisplay(); +} + +// Set Base image for partial refresh +void EPD_4IN2_V2_Display_Base(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_4IN2_V2_WIDTH % 8 == 0)? (EPD_4IN2_V2_WIDTH / 8 ): (EPD_4IN2_V2_WIDTH / 8 + 1); + Height = EPD_4IN2_V2_HEIGHT; + + EPD_4IN2_V2_SendCommand(0x26); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_V2_SendData(Image[i + j * Width]); + } + } + EPD_4IN2_V2_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_V2_SendData(Image[i + j * Width]); + } + } + EPD_4IN2_V2_TurnOnDisplay(); +} + +// Send partial data for partial refresh +void EPD_4IN2_V2_PartialDisplay(UBYTE *Image, UWORD x, UWORD y, UWORD w, UWORD l) +{ + UWORD Width, Height; + Width = (w % 8 == 0)? (w / 8 ): (w / 8 + 1); + Height = l; + + EPD_4IN2_V2_ReadBusy(); + EPD_4IN2_V2_SetLut(); + + EPD_4IN2_V2_SendCommand(0x37); + EPD_4IN2_V2_SendData(0x00); + EPD_4IN2_V2_SendData(0x00); + EPD_4IN2_V2_SendData(0x00); + EPD_4IN2_V2_SendData(0x00); + EPD_4IN2_V2_SendData(0x40); + EPD_4IN2_V2_SendData(0x00); + EPD_4IN2_V2_SendData(0x00); + + EPD_4IN2_V2_SendCommand(0x3C); + EPD_4IN2_V2_SendData(0x80); + + EPD_4IN2_V2_SetWindows(x, y, x+w-1, y+l-1); + EPD_4IN2_V2_SetCursor(x, y); + + EPD_4IN2_V2_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_V2_SendData(Image[i + j * Width]); + } + } + + EPD_4IN2_V2_TurnOnDisplay_Partial(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_4IN2_V2_Sleep(void) +{ + EPD_4IN2_V2_SendCommand(0x10); // DEEP_SLEEP + EPD_4IN2_V2_SendData(0x01); + DEV_Delay_ms(200); +} diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2_V2.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2_V2.h new file mode 100644 index 0000000..73a0bb5 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2_V2.h @@ -0,0 +1,47 @@ +/***************************************************************************** +* | File : EPD_4in2_V2_V2_V2.h +* | Author : Waveshare team +* | Function : 4.2inch e-paper V2 +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-02-23 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef _EPD_4IN2_V2_H_ +#define _EPD_4IN2_V2_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_4IN2_V2_WIDTH 400 +#define EPD_4IN2_V2_HEIGHT 300 + +void EPD_4IN2_V2_Init(void); +void EPD_4IN2_V2_Clear(void); +void EPD_4IN2_V2_Display(UBYTE *Image); +void EPD_4IN2_V2_Display_Base(UBYTE *Image); +void EPD_4IN2_V2_PartialDisplay(UBYTE *Image, UWORD x, UWORD y, UWORD w, UWORD l); +void EPD_4IN2_V2_Sleep(void); + +#endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in65f.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in65f.c index d389678..d5096e3 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in65f.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in65f.c @@ -29,7 +29,7 @@ # ******************************************************************************/ #include "EPD_5in65f.h" - +#include "stdlib.h" /****************************************************************************** function: @@ -103,10 +103,6 @@ void EPD_5IN65F_Init(void) EPD_5IN65F_SendData(0x00); EPD_5IN65F_SendData(0x23); EPD_5IN65F_SendData(0x23); - - EPD_5IN65F_SendCommand(0x82); - EPD_5IN65F_SendData(0x1d); - EPD_5IN65F_SendCommand(0x03); EPD_5IN65F_SendData(0x00); EPD_5IN65F_SendCommand(0x06); @@ -114,8 +110,8 @@ void EPD_5IN65F_Init(void) EPD_5IN65F_SendData(0xC7); EPD_5IN65F_SendData(0x1D); EPD_5IN65F_SendCommand(0x30); - EPD_5IN65F_SendData(0x3C); - EPD_5IN65F_SendCommand(0x40); + EPD_5IN65F_SendData(0x39); + EPD_5IN65F_SendCommand(0x41); EPD_5IN65F_SendData(0x00); EPD_5IN65F_SendCommand(0x50); EPD_5IN65F_SendData(0x37); @@ -175,12 +171,14 @@ void EPD_5IN65F_Display(const UBYTE *image) for(i=0; i>3) & 0x1F); - self.send_data((Xend>>3) & 0x1F); + self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION + self.send_data((Xstart>>3) & 0x1F) + self.send_data((Xend>>3) & 0x1F) - self.send_command(0x45); # SET_RAM_Y_ADDRESS_START_END_POSITION - self.send_data(Ystart & 0xFF); - self.send_data((Ystart >> 8) & 0x01); - self.send_data(Yend & 0xFF); - self.send_data((Yend >> 8) & 0x01); + self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION + self.send_data(Ystart & 0xFF) + self.send_data((Ystart >> 8) & 0x01) + self.send_data(Yend & 0xFF) + self.send_data((Yend >> 8) & 0x01) def setCursor(self, Xstart, Ystart): - self.send_command(0x4E); # SET_RAM_X_ADDRESS_COUNTER - self.send_data(Xstart & 0x1F); + self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER + self.send_data(Xstart & 0x1F) - self.send_command(0x4F); # SET_RAM_Y_ADDRESS_COUNTER - self.send_data(Ystart & 0xFF); - self.send_data((Ystart >> 8) & 0x01); + self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER + self.send_data(Ystart & 0xFF) + self.send_data((Ystart >> 8) & 0x01) def turnon_display(self): self.send_command(0x20) @@ -148,13 +148,6 @@ class EPD: def display(self, Blackimage, Redimage): if (Blackimage == None or Redimage == None): return - - self.send_command(0x4E) - self.send_data(0x01) - self.send_command(0x4F) - self.send_data(0x27) - self.send_data(0x01) - self.send_command(0x24) for j in range(0, self.height): for i in range(0, int(self.width / 8)): @@ -169,7 +162,6 @@ class EPD: def Clear(self): - self.send_command(0x24) for j in range(0, self.height): for i in range(0, int(self.width / 8)): diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py index 019ee90..0735861 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py @@ -236,7 +236,7 @@ class EPD: self.send_command(0x22); self.send_data(0xC0); - self.send_command(0x20); + self.send_command(0x20); self.ReadBusy(); self.SetWindow(0, 0, self.width - 1, self.height - 1) diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9d.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9d.py index 8ccc9c7..fe377b7 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9d.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9d.py @@ -1,5 +1,8 @@ +#!/usr/bin/python +# -*- coding:utf-8 -*- + # ***************************************************************************** -# * | File : epd2in9d.py +# * | File : epd2in9d.py # * | Author : Waveshare team # * | Function : Electronic paper driver # * | Info : @@ -27,7 +30,6 @@ # THE SOFTWARE. # - import logging from . import epdconfig from PIL import Image @@ -45,57 +47,6 @@ class EPD: self.cs_pin = epdconfig.CS_PIN self.width = EPD_WIDTH self.height = EPD_HEIGHT - - lut_vcomDC = [ - 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x60, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, - ] - - lut_ww = [ - 0x40, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x01, - 0xA0, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - ] - - lut_bw = [ - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - ] - - lut_wb = [ - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - ] - - lut_bb = [ - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - ] lut_vcom1 = [ 0x00, 0x19, 0x01, 0x00, 0x00, 0x01, @@ -151,11 +102,19 @@ class EPD: # Hardware reset def reset(self): epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(200) + epdconfig.delay_ms(20) epdconfig.digital_write(self.reset_pin, 0) epdconfig.delay_ms(5) epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(200) + epdconfig.delay_ms(20) + epdconfig.digital_write(self.reset_pin, 0) + epdconfig.delay_ms(5) + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(20) + epdconfig.digital_write(self.reset_pin, 0) + epdconfig.delay_ms(5) + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(20) def send_command(self, command): epdconfig.digital_write(self.dc_pin, 0) @@ -173,8 +132,9 @@ class EPD: logging.debug("e-Paper busy") while(epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy self.send_command(0x71) - epdconfig.delay_ms(100) + epdconfig.delay_ms(10) logging.debug("e-Paper busy release") + def TurnOnDisplay(self): self.send_command(0x12) epdconfig.delay_ms(10) @@ -186,65 +146,56 @@ class EPD: # EPD hardware init start self.reset() - self.send_command(0x01) # POWER SETTING + self.send_command(0x04) + self.ReadBusy() #waiting for the electronic paper IC to release the idle signal + + self.send_command(0x00) #panel setting + self.send_data(0x1f) # LUT from OTP,KW-BF KWR-AF BWROTP 0f BWOTP 1f + + self.send_command(0x61) #resolution setting + self.send_data (0x80) + self.send_data (0x01) + self.send_data (0x28) + + self.send_command(0X50) #VCOM AND DATA INTERVAL SETTING + self.send_data(0x97) #WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 + + return 0 + + def SetPartReg(self): + + self.send_command(0x01) #POWER SETTING self.send_data(0x03) self.send_data(0x00) self.send_data(0x2b) self.send_data(0x2b) self.send_data(0x03) - self.send_command(0x06) # boost soft start - self.send_data(0x17) # A - self.send_data(0x17) # B - self.send_data(0x17) # C + self.send_command(0x06) #boost soft start + self.send_data(0x17) #A + self.send_data(0x17) #B + self.send_data(0x17) #C self.send_command(0x04) self.ReadBusy() - self.send_command(0x00) # panel setting - self.send_data(0xbf) # LUT from OTP,128x296 - self.send_data(0x0d) # VCOM to 0V fast + self.send_command(0x00) #panel setting + self.send_data(0xbf) #LUT from OTP,128x296 - self.send_command(0x30) #PLL setting - self.send_data(0x3a) # 3a 100HZ 29 150Hz 39 200HZ 31 171HZ + self.send_command(0x30) #PLL setting + self.send_data(0x3a) # 3a 100HZ 29 150Hz 39 200HZ 31 171HZ - self.send_command(0x61) # resolution setting + self.send_command(0x61) #resolution setting self.send_data(self.width) self.send_data((self.height >> 8) & 0xff) - self.send_data(self.height& 0xff) + self.send_data(self.height & 0xff) + + self.send_command(0x82) #vcom_DC setting + self.send_data(0x12) - self.send_command(0x82) # vcom_DC setting - self.send_data(0x28) - return 0 - - def SetFullReg(self): - self.send_command(0x82) - self.send_data(0x00) self.send_command(0X50) self.send_data(0x97) - self.send_command(0x20) # vcom - for count in range(0, 44): - self.send_data(self.lut_vcomDC[count]) - self.send_command(0x21) # ww -- - for count in range(0, 42): - self.send_data(self.lut_ww[count]) - self.send_command(0x22) # bw r - for count in range(0, 42): - self.send_data(self.lut_bw[count]) - self.send_command(0x23) # wb w - for count in range(0, 42): - self.send_data(self.lut_wb[count]) - self.send_command(0x24) # bb b - for count in range(0, 42): - self.send_data(self.lut_bb[count]) - - def SetPartReg(self): - self.send_command(0x82) - self.send_data(0x03) - self.send_command(0X50) - self.send_data(0x47) - self.send_command(0x20) # vcom for count in range(0, 44): self.send_data(self.lut_vcom1[count]) @@ -296,7 +247,6 @@ class EPD: self.send_data(image[i]) epdconfig.delay_ms(10) - self.SetFullReg() self.TurnOnDisplay() def DisplayPartial(self, image): @@ -335,7 +285,6 @@ class EPD: self.send_data(0xFF) epdconfig.delay_ms(10) - self.SetFullReg() self.TurnOnDisplay() def sleep(self): diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py index e451ddb..d4d05d8 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py @@ -202,11 +202,19 @@ class EPD: # Hardware reset def reset(self): epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(200) + epdconfig.delay_ms(20) epdconfig.digital_write(self.reset_pin, 0) epdconfig.delay_ms(5) epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(200) + epdconfig.delay_ms(20) + epdconfig.digital_write(self.reset_pin, 0) + epdconfig.delay_ms(5) + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(20) + epdconfig.digital_write(self.reset_pin, 0) + epdconfig.delay_ms(5) + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(20) def send_command(self, command): epdconfig.digital_write(self.dc_pin, 0) diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd5in65f.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd5in65f.py index 5af59a3..9ca4bba 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd5in65f.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd5in65f.py @@ -109,7 +109,7 @@ class EPD: self.send_data(0x1D) self.send_command(0x30) self.send_data(0x3c) - self.send_command(0x40) + self.send_command(0x41) self.send_data(0x00) self.send_command(0x50) self.send_data(0x37) diff --git a/RaspberryPi_JetsonNano/python/pic/2.66__b.bmp b/RaspberryPi_JetsonNano/python/pic/2.66__b.bmp new file mode 100644 index 0000000..b38fec4 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2.66__b.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2.66__r.bmp b/RaspberryPi_JetsonNano/python/pic/2.66__r.bmp new file mode 100644 index 0000000..25df581 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2.66__r.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2in13_1.bmp b/RaspberryPi_JetsonNano/python/pic/2in13_1.bmp new file mode 100644 index 0000000..84e6497 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2in13_1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2in13_2.bmp b/RaspberryPi_JetsonNano/python/pic/2in13_2.bmp new file mode 100644 index 0000000..dd0c20f Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2in13_2.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2in13_b1.bmp b/RaspberryPi_JetsonNano/python/pic/2in13_b1.bmp new file mode 100644 index 0000000..93b3d57 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2in13_b1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2in13_y1.bmp b/RaspberryPi_JetsonNano/python/pic/2in13_y1.bmp new file mode 100644 index 0000000..9282c22 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2in13_y1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2in9_1.bmp b/RaspberryPi_JetsonNano/python/pic/2in9_1.bmp new file mode 100644 index 0000000..ca3e1b2 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2in9_1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2in9_2.bmp b/RaspberryPi_JetsonNano/python/pic/2in9_2.bmp new file mode 100644 index 0000000..f5e7381 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2in9_2.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4.2 m.bmp b/RaspberryPi_JetsonNano/python/pic/4.2 m.bmp new file mode 100644 index 0000000..cd374ed Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4.2 m.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4in01f.bmp b/RaspberryPi_JetsonNano/python/pic/4in01f.bmp new file mode 100644 index 0000000..1985769 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4in01f.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4in01f1.bmp b/RaspberryPi_JetsonNano/python/pic/4in01f1.bmp new file mode 100644 index 0000000..a7098de Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4in01f1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4in2_Scale.bmp b/RaspberryPi_JetsonNano/python/pic/4in2_Scale.bmp new file mode 100644 index 0000000..232f362 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4in2_Scale.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4in2_Scale_1.bmp b/RaspberryPi_JetsonNano/python/pic/4in2_Scale_1.bmp index e2e8a32..8a9555d 100644 Binary files a/RaspberryPi_JetsonNano/python/pic/4in2_Scale_1.bmp and b/RaspberryPi_JetsonNano/python/pic/4in2_Scale_1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4in2_Scale_2.bmp b/RaspberryPi_JetsonNano/python/pic/4in2_Scale_2.bmp new file mode 100644 index 0000000..bb628b5 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4in2_Scale_2.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65_n0.bmp b/RaspberryPi_JetsonNano/python/pic/5in65_n0.bmp new file mode 100644 index 0000000..f5350a5 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65_n0.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65_n1.bmp b/RaspberryPi_JetsonNano/python/pic/5in65_n1.bmp new file mode 100644 index 0000000..d268e5d Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65_n1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65_n2.bmp b/RaspberryPi_JetsonNano/python/pic/5in65_n2.bmp new file mode 100644 index 0000000..7758293 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65_n2.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65_n3.bmp b/RaspberryPi_JetsonNano/python/pic/5in65_n3.bmp new file mode 100644 index 0000000..02a47c4 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65_n3.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65_n4.bmp b/RaspberryPi_JetsonNano/python/pic/5in65_n4.bmp new file mode 100644 index 0000000..fc5ba7b Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65_n4.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65_n5.bmp b/RaspberryPi_JetsonNano/python/pic/5in65_n5.bmp new file mode 100644 index 0000000..81832b2 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65_n5.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65f.bmp b/RaspberryPi_JetsonNano/python/pic/5in65f.bmp index 3ac327b..4eed7fe 100644 Binary files a/RaspberryPi_JetsonNano/python/pic/5in65f.bmp and b/RaspberryPi_JetsonNano/python/pic/5in65f.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/5in65f0.bmp b/RaspberryPi_JetsonNano/python/pic/5in65f0.bmp new file mode 100644 index 0000000..3ac327b Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/5in65f0.bmp differ diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong index 28f56fb..2371952 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong @@ -93,25 +93,25 @@ 0 1 - -1 - -1 + -32000 + -32000 -1 -1 - 129 - 484 - 2172 - 1294 + 156 + 2598 + 4287 + 1321 0 - 671 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000010000000100000037453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4E453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F32696E37625F56325F746573742E6300000000134550445F32696E37625F56325F746573742E6300000000FFDC7800FFFFFFFF48453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F32696E37625F56322E63000000000E4550445F32696E37625F56322E6300000000BECEA100FFFFFFFF48453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F32696E37625F56322E68000000000E4550445F32696E37625F56322E6800000000F0A0A100FFFFFFFF45453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F546573742E68000000000A4550445F546573742E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000008030000F000000074080000B2030000 + 251 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000037453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004A0B00000B010000B7100000CD030000 @@ -134,7 +134,7 @@ 16 - D80B00002501000004120000EB010000 + 720B00000B0100009E110000D1010000 @@ -490,7 +490,7 @@ 0 16 - 00000000300300008806000050040000 + 00000000300300008906000050040000 16 @@ -1730,7 +1730,7 @@ 0 16 - 00000000500400008806000066040000 + 00000000500400008906000066040000 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D80B00002501000004120000EB010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000C41000002501000004120000D3030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000940A000025010000AC0B0000E7030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000940A0000BD030000041200009D04000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000880600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000940A0000EB0300001C11000025050000000000001603000088060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000720B00000B0100009E110000D1010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000005E1000000B0100009E110000B9030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000002E0A00000B010000460B0000CD030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000002E0A0000A30300009E1100008304000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000890600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002E0A0000D1030000B61000000B050000000000001603000089060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2852 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D67756C496D6742756641646472960000000000000012000D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E0D4550445F5732315F5253545F30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2844 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000972657475726E20353B960000000000000012000972657475726E20353B0D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -3603,48 +3603,12 @@ 0 100 - 1 + 0 ../Src/main.c - 1 - 116 - 46 - 1 - - 0 - - - ..\User\Examples\EPD_2in7b_V2_test.c - 32 - 35 - 71 - 1 - - 0 - - - ..\User\e-Paper\EPD_2in7b_V2.c - 20 - 1 - 31 - 1 - - 0 - - - ..\User\e-Paper\EPD_2in7b_V2.h 0 - 1 - 1 - 1 - - 0 - - - ..\User\Examples\EPD_Test.h - 21 - 36 - 49 + 100 + 90 1 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx index 8eb5ee1..fe40424 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx @@ -244,7 +244,7 @@ Application/MDK-ARM - 1 + 0 0 0 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm index f0b3749..f70afd5 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm @@ -3,7 +3,7 @@ Static Call Graph - [epd-demo\epd-demo.axf]

Static Call Graph for image epd-demo\epd-demo.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon Feb 22 15:54:10 2021 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Thu Mar 18 17:52:13 2021

Maximum Stack Usage = 136 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map index f232475..dcfb14d 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map @@ -1159,7 +1159,7 @@ Removing Unused input sections from the image. Removing epd_2in9d_test.o(.rev16_text), (4 bytes). Removing epd_2in9d_test.o(.revsh_text), (4 bytes). Removing epd_2in9d_test.o(.rrx_text), (6 bytes). - Removing epd_2in9d_test.o(.text), (1048 bytes). + Removing epd_2in9d_test.o(.text), (1068 bytes). Removing epd_2in13_test.o(.rev16_text), (4 bytes). Removing epd_2in13_test.o(.revsh_text), (4 bytes). Removing epd_2in13_test.o(.rrx_text), (6 bytes). @@ -1319,8 +1319,8 @@ Removing Unused input sections from the image. Removing epd_2in9d.o(.rev16_text), (4 bytes). Removing epd_2in9d.o(.revsh_text), (4 bytes). Removing epd_2in9d.o(.rrx_text), (6 bytes). - Removing epd_2in9d.o(.text), (1044 bytes). - Removing epd_2in9d.o(.constdata), (424 bytes). + Removing epd_2in9d.o(.text), (1012 bytes). + Removing epd_2in9d.o(.constdata), (212 bytes). Removing epd_2in13.o(.rev16_text), (4 bytes). Removing epd_2in13.o(.revsh_text), (4 bytes). Removing epd_2in13.o(.rrx_text), (6 bytes). @@ -1365,7 +1365,7 @@ Removing Unused input sections from the image. Removing epd_4in2.o(.rev16_text), (4 bytes). Removing epd_4in2.o(.revsh_text), (4 bytes). Removing epd_4in2.o(.rrx_text), (6 bytes). - Removing epd_4in2.o(.text), (1732 bytes). + Removing epd_4in2.o(.text), (1796 bytes). Removing epd_4in2.o(.constdata), (634 bytes). Removing epd_4in2bc.o(.rev16_text), (4 bytes). Removing epd_4in2bc.o(.revsh_text), (4 bytes). @@ -1450,7 +1450,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -458 unused section(s) (total 964795 bytes) removed from the image. +458 unused section(s) (total 964635 bytes) removed from the image. ============================================================================== diff --git a/STM32/STM32-F103ZET6/User/Examples/EPD_2in9d_test.c b/STM32/STM32-F103ZET6/User/Examples/EPD_2in9d_test.c index 8ce2251..79bd5e5 100644 --- a/STM32/STM32-F103ZET6/User/Examples/EPD_2in9d_test.c +++ b/STM32/STM32-F103ZET6/User/Examples/EPD_2in9d_test.c @@ -127,14 +127,14 @@ int EPD_2in9d_test(void) #endif printf("Clear...\r\n"); -// EPD_2IN9D_Init(); + EPD_2IN9D_Init(); EPD_2IN9D_Clear(); - + DEV_Delay_ms(2000);//important, at least 2s printf("Goto Sleep...\r\n"); EPD_2IN9D_Sleep(); free(BlackImage); BlackImage = NULL; - + DEV_Delay_ms(2000);//important, at least 2s // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9d.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9d.c index 82d2bef..42f101b 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9d.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9d.c @@ -4,8 +4,8 @@ * | Function : 2.9inch e-paper d * | Info : *---------------- -* | This version: V2.0 -* | Date : 2019-06-12 +* | This version: V3.1 +* | Date : 2021-03-18 * | Info : * ----------------------------------------------------------------------------- * V3.0(2019-06-12): @@ -54,57 +54,6 @@ #include "EPD_2in9d.h" #include "Debug.h" -/** - * full screen update LUT -**/ -const unsigned char EPD_2IN9D_lut_vcomDC[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x60, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_ww[] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x01, - 0xA0, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_bw[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_wb[] = { - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -const unsigned char EPD_2IN9D_lut_bb[] = { - 0x80, 0x08, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x28, 0x28, 0x00, 0x00, 0x01, - 0x80, 0x14, 0x00, 0x00, 0x00, 0x01, - 0x50, 0x12, 0x12, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - - /** * partial screen update LUT **/ @@ -163,11 +112,19 @@ parameter: static void EPD_2IN9D_Reset(void) { DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); } /****************************************************************************** @@ -209,56 +166,48 @@ void EPD_2IN9D_ReadBusy(void) busy = DEV_Digital_Read(EPD_BUSY_PIN); busy =!(busy & 0x01); } while(busy); - DEV_Delay_ms(200); + DEV_Delay_ms(20); Debug("e-Paper busy release\r\n"); } -/****************************************************************************** -function : LUT download -parameter: -******************************************************************************/ -static void EPD_SetFullReg(void) -{ - EPD_2IN9D_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING - EPD_2IN9D_SendData(0xb7); //WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 - - unsigned int count; - EPD_2IN9D_SendCommand(0x20); - for(count=0; count<44; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_vcomDC[count]); - } - - EPD_2IN9D_SendCommand(0x21); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_ww[count]); - } - - EPD_2IN9D_SendCommand(0x22); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_bw[count]); - } - - EPD_2IN9D_SendCommand(0x23); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_wb[count]); - } - - EPD_2IN9D_SendCommand(0x24); - for(count=0; count<42; count++) { - EPD_2IN9D_SendData(EPD_2IN9D_lut_bb[count]); - } -} - /****************************************************************************** function : LUT download parameter: ******************************************************************************/ static void EPD_2IN9D_SetPartReg(void) { - EPD_2IN9D_SendCommand(0x82); //vcom_DC setting + + EPD_2IN9D_SendCommand(0x01); //POWER SETTING + EPD_2IN9D_SendData(0x03); EPD_2IN9D_SendData(0x00); + EPD_2IN9D_SendData(0x2b); + EPD_2IN9D_SendData(0x2b); + EPD_2IN9D_SendData(0x03); + + EPD_2IN9D_SendCommand(0x06); //boost soft start + EPD_2IN9D_SendData(0x17); //A + EPD_2IN9D_SendData(0x17); //B + EPD_2IN9D_SendData(0x17); //C + + EPD_2IN9D_SendCommand(0x04); + EPD_2IN9D_ReadBusy(); + + EPD_2IN9D_SendCommand(0x00); //panel setting + EPD_2IN9D_SendData(0xbf); //LUT from OTP,128x296 + + EPD_2IN9D_SendCommand(0x30); //PLL setting + EPD_2IN9D_SendData(0x3a); // 3a 100HZ 29 150Hz 39 200HZ 31 171HZ + + EPD_2IN9D_SendCommand(0x61); //resolution setting + EPD_2IN9D_SendData(EPD_2IN9D_WIDTH); + EPD_2IN9D_SendData((EPD_2IN9D_HEIGHT >> 8) & 0xff); + EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT & 0xff); + + EPD_2IN9D_SendCommand(0x82); //vcom_DC setting + EPD_2IN9D_SendData(0x12); + EPD_2IN9D_SendCommand(0X50); - EPD_2IN9D_SendData(0xb7); + EPD_2IN9D_SendData(0x97); unsigned int count; EPD_2IN9D_SendCommand(0x20); @@ -306,36 +255,20 @@ parameter: void EPD_2IN9D_Init(void) { EPD_2IN9D_Reset(); + + EPD_2IN9D_SendCommand(0x04); + EPD_2IN9D_ReadBusy();//waiting for the electronic paper IC to release the idle signal - EPD_2IN9D_SendCommand(0x01); //POWER SETTING - EPD_2IN9D_SendData(0x03); - EPD_2IN9D_SendData(0x00); - EPD_2IN9D_SendData(0x2b); - EPD_2IN9D_SendData(0x2b); - EPD_2IN9D_SendData(0x03); + EPD_2IN9D_SendCommand(0x00); //panel setting + EPD_2IN9D_SendData(0x1f); //LUT from OTP,KW-BF KWR-AF BWROTP 0f BWOTP 1f - EPD_2IN9D_SendCommand(0x06); //boost soft start - EPD_2IN9D_SendData(0x17); //A - EPD_2IN9D_SendData(0x17); //B - EPD_2IN9D_SendData(0x17); //C + EPD_2IN9D_SendCommand(0x61); //resolution setting + EPD_2IN9D_SendData (0x80); + EPD_2IN9D_SendData (0x01); + EPD_2IN9D_SendData (0x28); - EPD_2IN9D_SendCommand(0x04); - EPD_2IN9D_ReadBusy(); - - EPD_2IN9D_SendCommand(0x00); //panel setting - EPD_2IN9D_SendData(0xbf); //LUT from OTP,128x296 - EPD_2IN9D_SendData(0x0e); //VCOM to 0V fast - - EPD_2IN9D_SendCommand(0x30); //PLL setting - EPD_2IN9D_SendData(0x3a); // 3a 100HZ 29 150Hz 39 200HZ 31 171HZ - - EPD_2IN9D_SendCommand(0x61); //resolution setting - EPD_2IN9D_SendData(EPD_2IN9D_WIDTH); - EPD_2IN9D_SendData((EPD_2IN9D_HEIGHT >> 8) & 0xff); - EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT & 0xff); - - EPD_2IN9D_SendCommand(0x82); //vcom_DC setting - EPD_2IN9D_SendData(0x28); + EPD_2IN9D_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING + EPD_2IN9D_SendData(0x97); //WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 } /****************************************************************************** @@ -361,8 +294,6 @@ void EPD_2IN9D_Clear(void) EPD_2IN9D_SendData(0xFF); } } - - EPD_SetFullReg(); EPD_2IN9D_TurnOnDisplay(); } @@ -382,7 +313,6 @@ void EPD_2IN9D_Display(UBYTE *Image) EPD_2IN9D_SendData(0x00); } } - // Dev_Delay_ms(10); EPD_2IN9D_SendCommand(0x13); for (UWORD j = 0; j < Height; j++) { @@ -390,9 +320,7 @@ void EPD_2IN9D_Display(UBYTE *Image) EPD_2IN9D_SendData(Image[i + j * Width]); } } - // Dev_Delay_ms(10); - EPD_SetFullReg(); EPD_2IN9D_TurnOnDisplay(); } @@ -430,7 +358,6 @@ void EPD_2IN9D_DisplayPart(UBYTE *Image) EPD_2IN9D_TurnOnDisplay(); } - /****************************************************************************** function : Enter sleep mode parameter: diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c index b5e22ec..34761fa 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c @@ -271,11 +271,19 @@ parameter: static void EPD_4IN2_Reset(void) { DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); } /****************************************************************************** diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_5in65f.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_5in65f.c index c2d88b8..670a527 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_5in65f.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_5in65f.c @@ -105,7 +105,7 @@ void EPD_5IN65F_Init(void) EPD_5IN65F_SendData(0x1D); EPD_5IN65F_SendCommand(0x30); EPD_5IN65F_SendData(0x3C); - EPD_5IN65F_SendCommand(0x40); + EPD_5IN65F_SendCommand(0x41); EPD_5IN65F_SendData(0x00); EPD_5IN65F_SendCommand(0x50); EPD_5IN65F_SendData(0x37);