embassy_stm32_plus/builder/spi/spi2/
rx.rs1use embassy_stm32::mode::{Async, Blocking};
2use embassy_stm32::peripherals::{DMA1_CH4, DMA1_CH5, PB13, PB14, SPI2};
3use embassy_stm32::spi::{Config, Spi};
4use crate::builder::spi::base::SpiBase;
5
6pub struct Spi2RxBuilder {
8 pub base: SpiBase<SPI2>,
10 pub sck: PB13,
12 pub miso: PB14,
14}
15
16impl Spi2RxBuilder {
18 #[inline]
20 pub fn new(spi: SPI2, sck: PB13, miso: PB14) -> Self {
21 Self { base: SpiBase::new(spi), sck, miso }
22 }
23
24 #[inline]
26 pub fn config(mut self, config: Config) -> Self {
27 self.base.set_config(config);
28 self
29 }
30
31 #[inline]
34 pub fn build(self, tx_dma: DMA1_CH5, rx_dma: DMA1_CH4) -> Spi<'static, Async> {
35 Spi::new_rxonly(self.base.spi, self.sck, self.miso, tx_dma, rx_dma, self.base.config.unwrap_or_default())
36 }
37
38 #[inline]
41 pub fn build_blocking(self) -> Spi<'static, Blocking> {
42 Spi::new_blocking_rxonly(self.base.spi, self.sck, self.miso, self.base.config.unwrap_or_default())
43 }
44}