1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! Analog to digital (ADC) conversion support.
//!
//! This module provides functions for reading analog values from two
//! analog to digital converters available on the ESP32: `ADC1` and `ADC2`.
//!
//! The following pins can be configured for analog readout:
//!
//! | Channel | ADC1                 | ADC2          |
//! |---------|----------------------|---------------|
//! | 0       | GPIO36 (SENSOR_VP)   | GPIO4         |
//! | 1       | GPIO37 (SENSOR_CAPP) | GPIO0         |
//! | 2       | GPIO38 (SENSOR_CAPN) | GPIO2         |
//! | 3       | GPIO39 (SENSOR_VN)   | GPIO15 (MTDO) |
//! | 4       | GPIO33 (32K_XP)      | GPIO13 (MTCK) |
//! | 5       | GPIO32 (32K_XN)      | GPIO12 (MTDI) |
//! | 6       | GPIO34 (VDET_1)      | GPIO14 (MTMS) |
//! | 7       | GPIO35 (VDET_2)      | GPIO27        |
//! | 8       |                      | GPIO25        |
//! | 9       |                      | GPIO26        |

use embedded_hal::adc::Channel;
use esp_hal_common::analog::adc::impl_adc_interface;
pub use esp_hal_common::analog::{adc::*, ADC1, ADC2};

use crate::{gpio::*, gpio_types::Analog};

impl_adc_interface! {
    ADC1 [
        (Gpio36, 0), // Alt. name: SENSOR_VP
        (Gpio37, 1), // Alt. name: SENSOR_CAPP
        (Gpio38, 2), // Alt. name: SENSOR_CAPN
        (Gpio39, 3), // Alt. name: SENSOR_VN
        (Gpio33, 4), // Alt. name: 32K_XP
        (Gpio32, 5), // Alt. name: 32K_XN
        (Gpio34, 6), // Alt. name: VDET_1
        (Gpio35, 7), // Alt. name: VDET_2
    ]
}

impl_adc_interface! {
    ADC2 [
        (Gpio4, 0),
        (Gpio0, 1),
        (Gpio2, 2),
        (Gpio15, 3), // Alt. name: MTDO
        (Gpio13, 4), // Alt. name: MTCK
        (Gpio12, 5), // Alt. name: MTDI
        (Gpio14, 6), // Alt. name: MTMS
        (Gpio27, 7),
        (Gpio25, 8),
        (Gpio26, 9),
    ]
}