[RP235x PIO] Using GPIO32+ require to change `gpiobase`
Author: ConaclosCreated Sep 16, 2026Updated Sep 16, 2026
Hi!
I tried to generate a clock on GPIO35 using PIO:
let p = embassy_rp::init(Config::default());
let embassy_rp::pio::Pio {
mut common, sm0, ..
} = embassy_rp::pio::Pio::new(pinout.codec_pio, Irqs);
let program = embassy_rp::pio_programs::clk::PioClkProgram::new(&mut common);
let mut clk = embassy_rp::pio_programs::clk::PioClk::new(
&mut common,
sm0,
p.PIN_35,
&program,
FREQ, // Hz
);
clk.start();Unfortunately this doesn't work. Except if I manually change the GPIO base:
embassy_rp::pac::PIO0
.gpiobase()
.write(|w| w.set_gpiobase(true));Is this expected?
Source: embassy-rs/embassy