pico2_st7789: Turn on backlight after first frame is drawn #9413

43ede0b1c3  (#7482)  was for pico
This commit is contained in:
Tasuku Suzuki 2025-09-15 16:08:39 +09:00 committed by GitHub
parent 9a882dd17f
commit 30e52ffa9a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -128,7 +128,7 @@ pub fn init() {
}); });
let rst = pins.gpio15.into_push_pull_output(); let rst = pins.gpio15.into_push_pull_output();
let mut backlight = pins.gpio13.into_push_pull_output(); let backlight = pins.gpio13.into_push_pull_output();
let dc = pins.gpio8.into_push_pull_output(); let dc = pins.gpio8.into_push_pull_output();
let cs = pins.gpio9.into_push_pull_output(); let cs = pins.gpio9.into_push_pull_output();
@ -162,7 +162,6 @@ pub fn init() {
.invert_colors(mipidsi::options::ColorInversion::Inverted) .invert_colors(mipidsi::options::ColorInversion::Inverted)
.init(&mut timer) .init(&mut timer)
.unwrap(); .unwrap();
backlight.set_high().unwrap();
let touch = xpt2046::XPT2046::new( let touch = xpt2046::XPT2046::new(
&IRQ_PIN, &IRQ_PIN,
@ -200,14 +199,16 @@ pub fn init() {
window: Default::default(), window: Default::default(),
buffer_provider: buffer_provider.into(), buffer_provider: buffer_provider.into(),
touch: touch.into(), touch: touch.into(),
backlight: Some(backlight).into(),
})) }))
.expect("backend already initialized"); .expect("backend already initialized");
} }
struct PicoBackend<DrawBuffer, Touch> { struct PicoBackend<DrawBuffer, Touch, Backlight> {
window: RefCell<Option<Rc<renderer::MinimalSoftwareWindow>>>, window: RefCell<Option<Rc<renderer::MinimalSoftwareWindow>>>,
buffer_provider: RefCell<DrawBuffer>, buffer_provider: RefCell<DrawBuffer>,
touch: RefCell<Touch>, touch: RefCell<Touch>,
backlight: RefCell<Option<Backlight>>,
} }
impl< impl<
@ -219,10 +220,12 @@ impl<
CS_: OutputPin<Error = Infallible>, CS_: OutputPin<Error = Infallible>,
IRQ: InputPin<Error = Infallible>, IRQ: InputPin<Error = Infallible>,
SPI: SpiDevice, SPI: SpiDevice,
BL: OutputPin<Error = Infallible>,
> slint::platform::Platform > slint::platform::Platform
for PicoBackend< for PicoBackend<
DrawBuffer<Display<DI, RST>, PioTransfer<TO, CH>, (DC_, CS_)>, DrawBuffer<Display<DI, RST>, PioTransfer<TO, CH>, (DC_, CS_)>,
xpt2046::XPT2046<IRQ, SPI>, xpt2046::XPT2046<IRQ, SPI>,
BL,
> >
{ {
fn create_window_adapter( fn create_window_adapter(
@ -254,6 +257,9 @@ impl<
let mut buffer_provider = self.buffer_provider.borrow_mut(); let mut buffer_provider = self.buffer_provider.borrow_mut();
renderer.render_by_line(&mut *buffer_provider); renderer.render_by_line(&mut *buffer_provider);
buffer_provider.flush_frame(); buffer_provider.flush_frame();
if let Some(mut backlight) = self.backlight.take() {
backlight.set_high().unwrap();
}
}); });
// handle touch event // handle touch event