From 51373065752693c1e49d8d9df7c4452d0f62b7f3 Mon Sep 17 00:00:00 2001 From: Adrian Wowk Date: Wed, 20 Aug 2025 13:40:14 -0500 Subject: rp: move pio pin configs after set_config This is needed for the program to work correctly on rp235xb when using the higher pin numbers. --- embassy-rp/src/pio_programs/spi.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'embassy-rp') diff --git a/embassy-rp/src/pio_programs/spi.rs b/embassy-rp/src/pio_programs/spi.rs index 6b97cd0f3..b10fc6628 100644 --- a/embassy-rp/src/pio_programs/spi.rs +++ b/embassy-rp/src/pio_programs/spi.rs @@ -121,10 +121,6 @@ impl<'d, PIO: Instance, const SM: usize, M: Mode> Spi<'d, PIO, SM, M> { clk_pin.set_output_inversion(false); } - sm.set_pins(Level::Low, &[&clk_pin, &mosi_pin]); - sm.set_pin_dirs(Direction::Out, &[&clk_pin, &mosi_pin]); - sm.set_pin_dirs(Direction::In, &[&miso_pin]); - let mut cfg = crate::pio::Config::default(); cfg.use_program(&program.prg, &[&clk_pin]); @@ -142,6 +138,11 @@ impl<'d, PIO: Instance, const SM: usize, M: Mode> Spi<'d, PIO, SM, M> { cfg.clock_divider = calculate_clock_divider(config.frequency); sm.set_config(&cfg); + + sm.set_pins(Level::Low, &[&clk_pin, &mosi_pin]); + sm.set_pin_dirs(Direction::Out, &[&clk_pin, &mosi_pin]); + sm.set_pin_dirs(Direction::In, &[&miso_pin]); + sm.set_enable(true); Self { -- cgit