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");