Reputation: 450
I have issue with Waveshare Pico-ePaper-3.7 display. Instead of raspberry I cave custom board with RS485 interface to suit aplication. The code is in pure C, not using arduino or similar. The board can't handle whole picture buffer so it's drawn by segments.
I do draw like this:
EPD_Init()
EPD_Clear()
EPD_DispFrame(0,0,0) This draw frame using parameters and send partial image to epd (cmd 0x44,0x45,0x4e,0x4f,0x24, data.....)
EPD_DispFrame(1,3,5) Same as above but different part of display
...
...
EPD_DispFrame(9,3,5) Same as above but different part of display
EPD_Load_LUT(lut_1Gray_A2) Load table
SendCommand(0x20);
ReadBusy_HIGH();
EPD_DeepSleep(); Goto sleep
And this works as expected. The display flicker and show image as should. If I repeat that sequence every 10s the image is updated but have flicker every 10s. So I try to avoid that with partial update. For example to have 6x partial update and then full in every minute The issue is that I'm not able to use partial refresh properly.
I this is my try to partial update(it's near same as previous, just LUT is different and no clear):
EPD_Init()
EPD_DispFrame(0,0,0) This draw frame using parameters and send partial image to epd (cmd 0x44,0x45,0x4e,0x4f,0x24, data.....)
EPD_DispFrame(1,3,5) Same as above but different part of display
...
...
EPD_DispFrame(9,3,5) Same as above but different part of display
EPD_Load_LUT(lut_1Gray_GC) Load table
SendCommand(0x20);
ReadBusy_HIGH();
This doesnt work right. Result is that every new change is written OVER previous one. So if I have number 1 in 1'st call and then number 2 in 2'nd call both numbers are drawn on same place. No flicker ocours I can repeat that multiple time but every old image is preserved and new one is drawn over that.
I did try to remove EPD_DeepSleep() and EPD_Init() and that seems to be sucess. The image is replaced by new one and little ghosting is present.
So sequence is like that:
EPD_DispFrame(0,0,0) This draw frame using parameters and send partial image to epd (cmd 0x44,0x45,0x4e,0x4f,0x24, data.....)
EPD_DispFrame(1,3,5) Same as above but different part of display
...
...
EPD_DispFrame(9,3,5) Same as above but different part of display
EPD_Load_LUT(lut_1Gray_GC) Load table
SendCommand(0x20);
This latest work but leave display all time ON. If I understand correctly the display shouldn't be ON for long time. It must go to sleep. So how to deal with that?
Upvotes: 0
Views: 273