Skip to main content

ri_esp_board_profiles/
lib.rs

1#![no_std]
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub struct I2cPins {
5    pub sda: u8,
6    pub scl: u8,
7}
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub struct Ili9341Pins {
11    pub mosi: u8,
12    pub sck: u8,
13    pub cs: u8,
14    pub dc: u8,
15    pub rst: u8,
16    pub bl: u8,
17}
18
19pub mod original_esp32_devkit {
20    use super::I2cPins;
21    pub const DEFAULT_I2C: I2cPins = I2cPins { sda: 21, scl: 22 };
22    pub const COMMON_DHT_PIN: u8 = 4;
23}
24
25pub mod esp32_2432s028 {
26    use super::Ili9341Pins;
27    pub const TFT: Ili9341Pins = Ili9341Pins {
28        mosi: 13,
29        sck: 14,
30        cs: 15,
31        dc: 2,
32        rst: 4,
33        bl: 21,
34    };
35    pub const TOUCH_CS: u8 = 5;
36    pub const CHIP: &str = "esp32";
37}
38
39pub mod esp32s3_wroom1_n16r8 {
40    use super::I2cPins;
41    pub const SAFE_I2C: I2cPins = I2cPins { sda: 21, scl: 47 };
42    pub const GPIO8_USED_BY_OCTAL_PSRAM: bool = true;
43    pub const GPIO9_USED_BY_OCTAL_PSRAM: bool = true;
44    pub fn is_known_bad_i2c_pin(pin: u8) -> bool {
45        pin == 8 || pin == 9
46    }
47}
48
49#[cfg(test)]
50mod tests {
51    #[test]
52    fn s3_gpio8_9_blocked() {
53        assert!(crate::esp32s3_wroom1_n16r8::is_known_bad_i2c_pin(8));
54        assert!(crate::esp32s3_wroom1_n16r8::is_known_bad_i2c_pin(9));
55        assert!(!crate::esp32s3_wroom1_n16r8::is_known_bad_i2c_pin(21));
56    }
57}