embassy_stm32_plus/traits/spi/
spi1.rs

1use embassy_stm32::peripherals::SPI1;
2use crate::builder::spi::spi1::rx::{Spi1Miso, Spi1RxBuilder};
3use crate::builder::spi::spi1::{Spi1Builder, Spi1Sck};
4use crate::builder::spi::spi1::tx::{Spi1Mosi, Spi1TxBuilder};
5
6/// spi1 trait
7pub trait Spi1Trait {
8    /// create builder
9    fn builder(self, sck: Spi1Sck, mosi: Spi1Mosi, miso: Spi1Miso) -> Spi1Builder;
10
11    /// create tx builder
12    fn tx_builder(self, mosi: Spi1Mosi) -> Spi1TxBuilder;
13
14    /// create rx builder
15    fn rx_builder(self, sck: Spi1Sck, miso: Spi1Miso) -> Spi1RxBuilder;
16}
17
18/// SPI1 support spi1 trait
19impl Spi1Trait for SPI1 {
20    #[inline]
21    fn builder(self, sck: Spi1Sck, mosi: Spi1Mosi, miso: Spi1Miso) -> Spi1Builder {
22        Spi1Builder::new(self, sck, mosi, miso)
23    }
24
25    #[inline]
26    fn tx_builder(self, mosi: Spi1Mosi) -> Spi1TxBuilder {
27        Spi1TxBuilder::new(self, mosi)
28    }
29
30    #[inline]
31    fn rx_builder(self, sck: Spi1Sck, miso: Spi1Miso) -> Spi1RxBuilder {
32        Spi1RxBuilder::new(self, sck, miso)
33    }
34}