Replies: 4 comments 12 replies
-
If you want to have a full refresh you can set this Kconfig option |
Beta Was this translation helpful? Give feedback.
-
Hi @faxe1008 Fabian, Thank you for all suggestions , unfortunately after looking at lvgl sources for zephyr using the nordic sdk 2.4.2, the lvgl.c file does not have the same content as you share so I was not able to properly set the CONFIG_LV_Z_FULL_REFRESH flag. I noticed there is a 2.5.0 version available, after installing it and created a new lvgl sample project I was able to set the flag in prf.conf
and I was able to build and flash into nrf52840dk_nrf52840. Unfortunately, the display does not refresh the whole screen, at least with the original demo code, the lvgl snipped code in main is basically
For my test what I am doing is build and flash with the Hello world label at different locations by changing the positions of the label. so I build flash and see results. The old contents on the display are retained while new label is written. I also noticed that the original demo when run onto the nordic dk is not refreshing the counter label, in fact it has the Text letter that does not change at all, something looks like it is not working properly at least for this nordic sdk? Do you know what else can I try to debug this? I will really appreciate your comments to help debug this further, Thank you again, |
Beta Was this translation helpful? Give feedback.
-
Hi @faxe1008 Fabien, I am getting better understanding of the issue which is probably configuration commands not targeted specifically for my driver display which is GD7965 After comparing wit hthe Waveshare sources how init differs I have found several differences which I am adjusting, some like the PWR setting are easy to change, for instance as per datasheet this is the command and data sequence options, The tested and working arduino code used the following settings Now, I have modified the original waveshare_epaper_gdew075t7.overlay to reflect this sequence such as seen here (pwr setting) The original code was sending a different values and actually missing one at the end (number 0x11) as seen in the logs But when further inspecting the differences, I found the "VCOM and data interval setting (CDI)" register And here is where I found that I cannot easily extend the values using the overlay, as the cdi value in the overlay (see point 2 in the previous snip) is defined as an integer, for instance
Unfortunately the function that sets this CDI looks like is expecting always an int and not an array of values like in the PWR config, but when looking at the logs coming out of the board I see the following Number 07 CDI[3:0] is coming from the overlay and the value of 29 directly from the code, I presume the overlay is setting the set_cdi function to the uc8179_set_cdi using the compatible name as in here And the function is actually setting the values in a fix manner I guess as shown here I have manually changed the function to send 0x10 0x00 (as the arduino code does) instead of the 29 07 as lvgl does, such as So now the output logs are The display does not seems to refresh correctly the screen but I still need to check the rest of the differences, it seems the arduino code is sending more commands than lvgl for this display but anyway probably at this point one of my questions is that the overlay name actually match my display name but the differences make me think the overlay is for a different driver. Can you give me your comments on what is the best way to handle this differences and if this is a new driver configuration, what is the best way to integrate changes back into the code perhaps. Thanks, |
Beta Was this translation helpful? Give feedback.
-
Hi @faxe1008 Fabien, After trying to make logs more verbose expecially the LVGL I am gettimng this error The only change that is actually causing this is the following line (The commented line at the end) If I left the line out or commented I get the following traces using my modified version of the configuration The configuartion changes to match arduino code which works has the resuklt thaat can be seen on this short video. Can you suggest something to help me debug this further? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I have been trying to make blanking work on 7.5in EPD display from waveshare without success. I started using the sample at sample/subsys/display/lvgl/ , it writes to the display but it looks it is not refreshing the whole screen when blanking is on.

Maybe I don't understand the usage of blanking_on function.
I have also tried to call some lvgl function on the current screen like
lv_obj_clean(lv_scr_act());
with no different results.
I have tried playing with background but have not found a way to clear the make all pixels white in the display at start up of my application.
I know for sure there is an issue if I left my display on, waveshare recommend to shut down, I have one pin on the pi shield I am using to turn display off but driver doesn't have that pin defined, you can look here at the shield I am using. With this simple code below (end of main.c in sample/subsys/display/lvgl sample)
` lv_obj_t * main_page = lv_obj_create(lv_scr_act());
lv_scr_load(main_page);
lv_obj_set_size(main_page, LV_HOR_RES, LV_VER_RES);
lv_obj_clean(main_page);
}`
I am getting the behaviour seen in this video
I found that placing the PWR pin of the shield to low level after the initial refresh stop the display from increasing the darkness of the text which finally produces that blinking effect as well. But I don't think this is related to the ability to black the screen or maybe?
Does someone has any idea what can I try ?
Comments will be appreciated!
Thanks
Beta Was this translation helpful? Give feedback.
All reactions