ri_esp_board_profiles/
lib.rs1#![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}