embassy_stm32_plus/traits/spi/
spi3.rs

1use embassy_stm32::peripherals::SPI3;
2use crate::builder::spi::spi3::rx::{Spi3Miso, Spi3RxBuilder};
3use crate::builder::spi::spi3::{Spi3Builder, Spi3Sck};
4use crate::builder::spi::spi3::tx::{Spi3Mosi, Spi3TxBuilder};
5
6/// spi3 trait
7pub trait Spi3Trait {
8    /// create builder
9    fn builder(self, sck: Spi3Sck, mosi: Spi3Mosi, miso: Spi3Miso) -> Spi3Builder;
10
11    /// create tx builder
12    fn tx_builder(self, mosi: Spi3Mosi) -> Spi3TxBuilder;
13
14    /// create rx builder
15    fn rx_builder(self, sck: Spi3Sck, miso: Spi3Miso) -> Spi3RxBuilder;
16}
17
18/// SPI3 support spi3 trait
19impl Spi3Trait for SPI3 {
20    #[inline]
21    fn builder(self, sck: Spi3Sck, mosi: Spi3Mosi, miso: Spi3Miso) -> Spi3Builder {
22        Spi3Builder::new(self, sck, mosi, miso)
23    }
24
25    #[inline]
26    fn tx_builder(self, mosi: Spi3Mosi) -> Spi3TxBuilder {
27        Spi3TxBuilder::new(self, mosi)
28    }
29
30    #[inline]
31    fn rx_builder(self, sck: Spi3Sck, miso: Spi3Miso) -> Spi3RxBuilder {
32        Spi3RxBuilder::new(self, sck, miso)
33    }
34}