diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs index 26fb392e..1a00f418 100644 --- a/embassy-stm32/src/spi/mod.rs +++ b/embassy-stm32/src/spi/mod.rs @@ -179,6 +179,18 @@ impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { ) } + /// Useful for on chip peripherals like SUBGHZ which are hardwired. + /// The bus can optionally be exposed externally with `Spi::new()` still. + pub fn new_internal( + peri: impl Peripheral
+ 'd, + txdma: impl Peripheral
+ 'd, + rxdma: impl Peripheral
+ 'd, + freq: Hertz, + config: Config, + ) -> Self { + Self::new_inner(peri, None, None, None, txdma, rxdma, freq, config) + } + fn new_inner( peri: impl Peripheral
 + 'd,
         sck: Option  + 'd,
-        sck: impl Peripheral > + 'd,
-        mosi: impl Peripheral > + 'd,
-        miso: impl Peripheral > + 'd,
         txdma: impl Peripheral  + 'd,
         rxdma: impl Peripheral  + 'd,
     ) -> Self {
@@ -227,7 +224,7 @@ impl<'d, Tx, Rx> SubGhz<'d, Tx, Rx> {
         let mut config = SpiConfig::default();
         config.mode = MODE_0;
         config.bit_order = BitOrder::MsbFirst;
-        let spi = Spi::new(peri, sck, mosi, miso, txdma, rxdma, clk, config);
+        let spi = Spi::new_internal(peri, txdma, rxdma, clk, config);
 
         unsafe { wakeup() };
 
diff --git a/examples/stm32wl/src/bin/lorawan.rs b/examples/stm32wl/src/bin/lorawan.rs
index 7e8a8946..fdd7eb8c 100644
--- a/examples/stm32wl/src/bin/lorawan.rs
+++ b/examples/stm32wl/src/bin/lorawan.rs
@@ -31,7 +31,7 @@ async fn main(_spawner: Spawner) {
     let ctrl3 = Output::new(p.PC5.degrade(), Level::High, Speed::High);
     let rfs = RadioSwitch::new(ctrl1, ctrl2, ctrl3);
 
-    let radio = SubGhz::new(p.SUBGHZSPI, p.PA5, p.PA7, p.PA6, NoDma, NoDma);
+    let radio = SubGhz::new(p.SUBGHZSPI, NoDma, NoDma);
 
     let irq = interrupt::take!(SUBGHZ_RADIO);
     static mut RADIO_STATE: SubGhzState<'static> = SubGhzState::new();
diff --git a/examples/stm32wl/src/bin/subghz.rs b/examples/stm32wl/src/bin/subghz.rs
index c5e9bb59..8f674d79 100644
--- a/examples/stm32wl/src/bin/subghz.rs
+++ b/examples/stm32wl/src/bin/subghz.rs
@@ -72,7 +72,7 @@ async fn main(_spawner: Spawner) {
         unsafe { interrupt::SUBGHZ_RADIO::steal() }.disable();
     });
 
-    let mut radio = SubGhz::new(p.SUBGHZSPI, p.PA5, p.PA7, p.PA6, NoDma, NoDma);
+    let mut radio = SubGhz::new(p.SUBGHZSPI, NoDma, NoDma);
 
     defmt::info!("Radio ready for use");