ariel_os_esp/spi/
mod.rs

1//! Provides support for the SPI communication bus.
2
3#[doc(alias = "master")]
4pub mod main;
5
6use ariel_os_embassy_common::spi::{BitOrder, Mode};
7
8fn from_mode(mode: Mode) -> esp_hal::spi::Mode {
9    match mode {
10        Mode::Mode0 => esp_hal::spi::Mode::_0,
11        Mode::Mode1 => esp_hal::spi::Mode::_1,
12        Mode::Mode2 => esp_hal::spi::Mode::_2,
13        Mode::Mode3 => esp_hal::spi::Mode::_3,
14    }
15}
16
17fn from_bit_order(bit_order: BitOrder) -> esp_hal::spi::BitOrder {
18    match bit_order {
19        BitOrder::MsbFirst => esp_hal::spi::BitOrder::MsbFirst,
20        BitOrder::LsbFirst => esp_hal::spi::BitOrder::LsbFirst,
21    }
22}
23
24#[doc(hidden)]
25pub fn init(peripherals: &mut crate::OptionalPeripherals) {
26    // Take all SPI peripherals and do nothing with them.
27    cfg_if::cfg_if! {
28        if #[cfg(context = "esp32")] {
29            let _ = peripherals.SPI2.take().unwrap();
30            let _ = peripherals.SPI3.take().unwrap();
31        } else if #[cfg(context = "esp32c3")] {
32            let _ = peripherals.SPI2.take().unwrap();
33        } else if #[cfg(context = "esp32c6")] {
34            let _ = peripherals.SPI2.take().unwrap();
35        } else if #[cfg(context = "esp32s2")] {
36            let _ = peripherals.SPI2.take().unwrap();
37            let _ = peripherals.SPI3.take().unwrap();
38        } else if #[cfg(context = "esp32s3")] {
39            let _ = peripherals.SPI2.take().unwrap();
40            let _ = peripherals.SPI3.take().unwrap();
41        } else {
42            compile_error!("this ESP32 chip is not supported");
43        }
44    }
45}