caemor / epd-waveshare

Drivers for various EPDs from Waveshare
ISC License
211 stars 129 forks source link

epd1in54_v2 does not show anything until LUT is set. #154

Closed fakusb closed 7 months ago

fakusb commented 1 year ago

It seems to me that the init function for epd1in54_v2 does forget to set the lut (Look up table), which means that code does not do anything at all unless epd.set_lut is explicitly called later.

At least my Raspberry pi pico did not draw any of the data i send until I eventually tried calling set_lut.

Sadly, I don't have any experience with ePaper displays and I don't fully understand why this is needed: The Reference code (4.2) mentions:

setting: Load LUT from OTP
SPI(0x22, 0xb1)

I guess this means init should call cmd_with_data(spi, Command::DisplayUpdateControl2, &[0xb1])?; somewhere?

Should I just try to get it working on my hardware and open a PR if my init does work in a way that the next display_frame-call does something? I don't fully understand what I am doing, but at least it would work then?

If anyone else tried the epd1in54_v2 and did not neet to set_lut explicitly, that would probably mean my software is buggy somewhere.

fakusb commented 1 year ago

I investigated a bit more: "Load LUT from OTP" only makes sens if the one-time-programmable memory (OTP) was "flashed" with the LUT, which is not what I wanted. PR #156 should fix the issue by just calling epd.set_lut in inti.