|
|
@@ -23,6 +23,7 @@
|
|
|
#include "dac.h"
|
|
|
#include "freertos/FreeRTOS.h"
|
|
|
#include "freertos/xtensa_api.h"
|
|
|
+#include "freertos/semphr.h"
|
|
|
|
|
|
static const char *RTC_MODULE_TAG = "RTC_MODULE";
|
|
|
|
|
|
@@ -37,49 +38,50 @@ static const char *RTC_MODULE_TAG = "RTC_MODULE";
|
|
|
}
|
|
|
|
|
|
portMUX_TYPE rtc_spinlock = portMUX_INITIALIZER_UNLOCKED;
|
|
|
+static xSemaphoreHandle rtc_touch_sem = NULL;
|
|
|
|
|
|
//Reg,Mux,Fun,IE,Up,Down,Rtc_number
|
|
|
const rtc_gpio_desc_t rtc_gpio_desc[GPIO_PIN_COUNT] = {
|
|
|
- {RTC_IO_TOUCH_PAD1_REG, RTC_IO_TOUCH_PAD1_MUX_SEL_M, RTC_IO_TOUCH_PAD1_FUN_SEL_S, RTC_IO_TOUCH_PAD1_FUN_IE_M, RTC_IO_TOUCH_PAD1_RUE_M, RTC_IO_TOUCH_PAD1_RDE_M, RTC_IO_TOUCH_PAD1_SLP_SEL_M, RTC_IO_TOUCH_PAD1_SLP_IE_M, RTC_CNTL_TOUCH_PAD1_HOLD_FORCE_M, 11}, //0
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //1
|
|
|
- {RTC_IO_TOUCH_PAD2_REG, RTC_IO_TOUCH_PAD2_MUX_SEL_M, RTC_IO_TOUCH_PAD2_FUN_SEL_S, RTC_IO_TOUCH_PAD2_FUN_IE_M, RTC_IO_TOUCH_PAD2_RUE_M, RTC_IO_TOUCH_PAD2_RDE_M, RTC_IO_TOUCH_PAD2_SLP_SEL_M, RTC_IO_TOUCH_PAD2_SLP_IE_M, RTC_CNTL_TOUCH_PAD2_HOLD_FORCE_M, 12}, //2
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //3
|
|
|
- {RTC_IO_TOUCH_PAD0_REG, RTC_IO_TOUCH_PAD0_MUX_SEL_M, RTC_IO_TOUCH_PAD0_FUN_SEL_S, RTC_IO_TOUCH_PAD0_FUN_IE_M, RTC_IO_TOUCH_PAD0_RUE_M, RTC_IO_TOUCH_PAD0_RDE_M, RTC_IO_TOUCH_PAD0_SLP_SEL_M, RTC_IO_TOUCH_PAD0_SLP_IE_M, RTC_CNTL_TOUCH_PAD0_HOLD_FORCE_M, 10}, //4
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //5
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //6
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //7
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //8
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //9
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //10
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //11
|
|
|
- {RTC_IO_TOUCH_PAD5_REG, RTC_IO_TOUCH_PAD5_MUX_SEL_M, RTC_IO_TOUCH_PAD5_FUN_SEL_S, RTC_IO_TOUCH_PAD5_FUN_IE_M, RTC_IO_TOUCH_PAD5_RUE_M, RTC_IO_TOUCH_PAD5_RDE_M, RTC_IO_TOUCH_PAD5_SLP_SEL_M, RTC_IO_TOUCH_PAD5_SLP_IE_M, RTC_CNTL_TOUCH_PAD5_HOLD_FORCE_M, 15}, //12
|
|
|
- {RTC_IO_TOUCH_PAD4_REG, RTC_IO_TOUCH_PAD4_MUX_SEL_M, RTC_IO_TOUCH_PAD4_FUN_SEL_S, RTC_IO_TOUCH_PAD4_FUN_IE_M, RTC_IO_TOUCH_PAD4_RUE_M, RTC_IO_TOUCH_PAD4_RDE_M, RTC_IO_TOUCH_PAD4_SLP_SEL_M, RTC_IO_TOUCH_PAD4_SLP_IE_M, RTC_CNTL_TOUCH_PAD4_HOLD_FORCE_M, 14}, //13
|
|
|
- {RTC_IO_TOUCH_PAD6_REG, RTC_IO_TOUCH_PAD6_MUX_SEL_M, RTC_IO_TOUCH_PAD6_FUN_SEL_S, RTC_IO_TOUCH_PAD6_FUN_IE_M, RTC_IO_TOUCH_PAD6_RUE_M, RTC_IO_TOUCH_PAD6_RDE_M, RTC_IO_TOUCH_PAD6_SLP_SEL_M, RTC_IO_TOUCH_PAD6_SLP_IE_M, RTC_CNTL_TOUCH_PAD6_HOLD_FORCE_M, 16}, //14
|
|
|
- {RTC_IO_TOUCH_PAD3_REG, RTC_IO_TOUCH_PAD3_MUX_SEL_M, RTC_IO_TOUCH_PAD3_FUN_SEL_S, RTC_IO_TOUCH_PAD3_FUN_IE_M, RTC_IO_TOUCH_PAD3_RUE_M, RTC_IO_TOUCH_PAD3_RDE_M, RTC_IO_TOUCH_PAD3_SLP_SEL_M, RTC_IO_TOUCH_PAD3_SLP_IE_M, RTC_CNTL_TOUCH_PAD3_HOLD_FORCE_M, 13}, //15
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //16
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //17
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //18
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //19
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //20
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //21
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //22
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //23
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //24
|
|
|
- {RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_MUX_SEL_M, RTC_IO_PDAC1_FUN_SEL_S, RTC_IO_PDAC1_FUN_IE_M, RTC_IO_PDAC1_RUE_M, RTC_IO_PDAC1_RDE_M, RTC_IO_PDAC1_SLP_SEL_M, RTC_IO_PDAC1_SLP_IE_M, RTC_CNTL_PDAC1_HOLD_FORCE_M, 6}, //25
|
|
|
- {RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_MUX_SEL_M, RTC_IO_PDAC2_FUN_SEL_S, RTC_IO_PDAC2_FUN_IE_M, RTC_IO_PDAC2_RUE_M, RTC_IO_PDAC2_RDE_M, RTC_IO_PDAC2_SLP_SEL_M, RTC_IO_PDAC2_SLP_IE_M, RTC_CNTL_PDAC1_HOLD_FORCE_M, 7}, //26
|
|
|
- {RTC_IO_TOUCH_PAD7_REG, RTC_IO_TOUCH_PAD7_MUX_SEL_M, RTC_IO_TOUCH_PAD7_FUN_SEL_S, RTC_IO_TOUCH_PAD7_FUN_IE_M, RTC_IO_TOUCH_PAD7_RUE_M, RTC_IO_TOUCH_PAD7_RDE_M, RTC_IO_TOUCH_PAD7_SLP_SEL_M, RTC_IO_TOUCH_PAD7_SLP_IE_M, RTC_CNTL_TOUCH_PAD7_HOLD_FORCE_M, 17}, //27
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //28
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //29
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //30
|
|
|
- {0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //31
|
|
|
- {RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32P_MUX_SEL_M, RTC_IO_X32P_FUN_SEL_S, RTC_IO_X32P_FUN_IE_M, RTC_IO_X32P_RUE_M, RTC_IO_X32P_RDE_M, RTC_IO_X32P_SLP_SEL_M, RTC_IO_X32P_SLP_IE_M, RTC_CNTL_X32P_HOLD_FORCE_M, 9}, //32
|
|
|
- {RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32N_MUX_SEL_M, RTC_IO_X32N_FUN_SEL_S, RTC_IO_X32N_FUN_IE_M, RTC_IO_X32N_RUE_M, RTC_IO_X32N_RDE_M, RTC_IO_X32N_SLP_SEL_M, RTC_IO_X32N_SLP_IE_M, RTC_CNTL_X32N_HOLD_FORCE_M, 8}, //33
|
|
|
- {RTC_IO_ADC_PAD_REG, RTC_IO_ADC1_MUX_SEL_M, RTC_IO_ADC1_FUN_SEL_S, RTC_IO_ADC1_FUN_IE_M, 0, 0, RTC_IO_ADC1_SLP_SEL_M, RTC_IO_ADC1_SLP_IE_M, RTC_CNTL_ADC1_HOLD_FORCE_M, 4}, //34
|
|
|
- {RTC_IO_ADC_PAD_REG, RTC_IO_ADC2_MUX_SEL_M, RTC_IO_ADC2_FUN_SEL_S, RTC_IO_ADC2_FUN_IE_M, 0, 0, RTC_IO_ADC2_SLP_SEL_M, RTC_IO_ADC2_SLP_IE_M, RTC_CNTL_ADC2_HOLD_FORCE_M, 5}, //35
|
|
|
- {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE1_MUX_SEL_M, RTC_IO_SENSE1_FUN_SEL_S, RTC_IO_SENSE1_FUN_IE_M, 0, 0, RTC_IO_SENSE1_SLP_SEL_M, RTC_IO_SENSE1_SLP_IE_M, RTC_CNTL_SENSE1_HOLD_FORCE_M, 0}, //36
|
|
|
- {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE2_MUX_SEL_M, RTC_IO_SENSE2_FUN_SEL_S, RTC_IO_SENSE2_FUN_IE_M, 0, 0, RTC_IO_SENSE2_SLP_SEL_M, RTC_IO_SENSE2_SLP_IE_M, RTC_CNTL_SENSE2_HOLD_FORCE_M, 1}, //37
|
|
|
- {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE3_MUX_SEL_M, RTC_IO_SENSE3_FUN_SEL_S, RTC_IO_SENSE3_FUN_IE_M, 0, 0, RTC_IO_SENSE3_SLP_SEL_M, RTC_IO_SENSE3_SLP_IE_M, RTC_CNTL_SENSE3_HOLD_FORCE_M, 2}, //38
|
|
|
- {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE4_MUX_SEL_M, RTC_IO_SENSE4_FUN_SEL_S, RTC_IO_SENSE4_FUN_IE_M, 0, 0, RTC_IO_SENSE4_SLP_SEL_M, RTC_IO_SENSE4_SLP_IE_M, RTC_CNTL_SENSE4_HOLD_FORCE_M, 3}, //39
|
|
|
+ {RTC_IO_TOUCH_PAD1_REG, RTC_IO_TOUCH_PAD1_MUX_SEL_M, RTC_IO_TOUCH_PAD1_FUN_SEL_S, RTC_IO_TOUCH_PAD1_FUN_IE_M, RTC_IO_TOUCH_PAD1_RUE_M, RTC_IO_TOUCH_PAD1_RDE_M, RTC_IO_TOUCH_PAD1_SLP_SEL_M, RTC_IO_TOUCH_PAD1_SLP_IE_M, RTC_IO_TOUCH_PAD1_HOLD_M, RTC_CNTL_TOUCH_PAD1_HOLD_FORCE_M, 11}, //0
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //1
|
|
|
+ {RTC_IO_TOUCH_PAD2_REG, RTC_IO_TOUCH_PAD2_MUX_SEL_M, RTC_IO_TOUCH_PAD2_FUN_SEL_S, RTC_IO_TOUCH_PAD2_FUN_IE_M, RTC_IO_TOUCH_PAD2_RUE_M, RTC_IO_TOUCH_PAD2_RDE_M, RTC_IO_TOUCH_PAD2_SLP_SEL_M, RTC_IO_TOUCH_PAD2_SLP_IE_M, RTC_IO_TOUCH_PAD2_HOLD_M, RTC_CNTL_TOUCH_PAD2_HOLD_FORCE_M, 12}, //2
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //3
|
|
|
+ {RTC_IO_TOUCH_PAD0_REG, RTC_IO_TOUCH_PAD0_MUX_SEL_M, RTC_IO_TOUCH_PAD0_FUN_SEL_S, RTC_IO_TOUCH_PAD0_FUN_IE_M, RTC_IO_TOUCH_PAD0_RUE_M, RTC_IO_TOUCH_PAD0_RDE_M, RTC_IO_TOUCH_PAD0_SLP_SEL_M, RTC_IO_TOUCH_PAD0_SLP_IE_M, RTC_IO_TOUCH_PAD0_HOLD_M, RTC_CNTL_TOUCH_PAD0_HOLD_FORCE_M, 10}, //4
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //5
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //6
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //7
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //8
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //9
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //10
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //11
|
|
|
+ {RTC_IO_TOUCH_PAD5_REG, RTC_IO_TOUCH_PAD5_MUX_SEL_M, RTC_IO_TOUCH_PAD5_FUN_SEL_S, RTC_IO_TOUCH_PAD5_FUN_IE_M, RTC_IO_TOUCH_PAD5_RUE_M, RTC_IO_TOUCH_PAD5_RDE_M, RTC_IO_TOUCH_PAD5_SLP_SEL_M, RTC_IO_TOUCH_PAD5_SLP_IE_M, RTC_IO_TOUCH_PAD5_HOLD_M, RTC_CNTL_TOUCH_PAD5_HOLD_FORCE_M, 15}, //12
|
|
|
+ {RTC_IO_TOUCH_PAD4_REG, RTC_IO_TOUCH_PAD4_MUX_SEL_M, RTC_IO_TOUCH_PAD4_FUN_SEL_S, RTC_IO_TOUCH_PAD4_FUN_IE_M, RTC_IO_TOUCH_PAD4_RUE_M, RTC_IO_TOUCH_PAD4_RDE_M, RTC_IO_TOUCH_PAD4_SLP_SEL_M, RTC_IO_TOUCH_PAD4_SLP_IE_M, RTC_IO_TOUCH_PAD4_HOLD_M, RTC_CNTL_TOUCH_PAD4_HOLD_FORCE_M, 14}, //13
|
|
|
+ {RTC_IO_TOUCH_PAD6_REG, RTC_IO_TOUCH_PAD6_MUX_SEL_M, RTC_IO_TOUCH_PAD6_FUN_SEL_S, RTC_IO_TOUCH_PAD6_FUN_IE_M, RTC_IO_TOUCH_PAD6_RUE_M, RTC_IO_TOUCH_PAD6_RDE_M, RTC_IO_TOUCH_PAD6_SLP_SEL_M, RTC_IO_TOUCH_PAD6_SLP_IE_M, RTC_IO_TOUCH_PAD6_HOLD_M, RTC_CNTL_TOUCH_PAD6_HOLD_FORCE_M, 16}, //14
|
|
|
+ {RTC_IO_TOUCH_PAD3_REG, RTC_IO_TOUCH_PAD3_MUX_SEL_M, RTC_IO_TOUCH_PAD3_FUN_SEL_S, RTC_IO_TOUCH_PAD3_FUN_IE_M, RTC_IO_TOUCH_PAD3_RUE_M, RTC_IO_TOUCH_PAD3_RDE_M, RTC_IO_TOUCH_PAD3_SLP_SEL_M, RTC_IO_TOUCH_PAD3_SLP_IE_M, RTC_IO_TOUCH_PAD3_HOLD_M, RTC_CNTL_TOUCH_PAD3_HOLD_FORCE_M, 13}, //15
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //16
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //17
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //18
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //19
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //20
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //21
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //22
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //23
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //24
|
|
|
+ {RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_MUX_SEL_M, RTC_IO_PDAC1_FUN_SEL_S, RTC_IO_PDAC1_FUN_IE_M, RTC_IO_PDAC1_RUE_M, RTC_IO_PDAC1_RDE_M, RTC_IO_PDAC1_SLP_SEL_M, RTC_IO_PDAC1_SLP_IE_M, RTC_IO_PDAC1_HOLD_M, RTC_CNTL_PDAC1_HOLD_FORCE_M, 6}, //25
|
|
|
+ {RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_MUX_SEL_M, RTC_IO_PDAC2_FUN_SEL_S, RTC_IO_PDAC2_FUN_IE_M, RTC_IO_PDAC2_RUE_M, RTC_IO_PDAC2_RDE_M, RTC_IO_PDAC2_SLP_SEL_M, RTC_IO_PDAC2_SLP_IE_M, RTC_IO_PDAC2_HOLD_M, RTC_CNTL_PDAC1_HOLD_FORCE_M, 7}, //26
|
|
|
+ {RTC_IO_TOUCH_PAD7_REG, RTC_IO_TOUCH_PAD7_MUX_SEL_M, RTC_IO_TOUCH_PAD7_FUN_SEL_S, RTC_IO_TOUCH_PAD7_FUN_IE_M, RTC_IO_TOUCH_PAD7_RUE_M, RTC_IO_TOUCH_PAD7_RDE_M, RTC_IO_TOUCH_PAD7_SLP_SEL_M, RTC_IO_TOUCH_PAD7_SLP_IE_M, RTC_IO_TOUCH_PAD7_HOLD_M, RTC_CNTL_TOUCH_PAD7_HOLD_FORCE_M, 17}, //27
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //28
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //29
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //30
|
|
|
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //31
|
|
|
+ {RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32P_MUX_SEL_M, RTC_IO_X32P_FUN_SEL_S, RTC_IO_X32P_FUN_IE_M, RTC_IO_X32P_RUE_M, RTC_IO_X32P_RDE_M, RTC_IO_X32P_SLP_SEL_M, RTC_IO_X32P_SLP_IE_M, RTC_IO_X32P_HOLD_M, RTC_CNTL_X32P_HOLD_FORCE_M, 9}, //32
|
|
|
+ {RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32N_MUX_SEL_M, RTC_IO_X32N_FUN_SEL_S, RTC_IO_X32N_FUN_IE_M, RTC_IO_X32N_RUE_M, RTC_IO_X32N_RDE_M, RTC_IO_X32N_SLP_SEL_M, RTC_IO_X32N_SLP_IE_M, RTC_IO_X32N_HOLD_M, RTC_CNTL_X32N_HOLD_FORCE_M, 8}, //33
|
|
|
+ {RTC_IO_ADC_PAD_REG, RTC_IO_ADC1_MUX_SEL_M, RTC_IO_ADC1_FUN_SEL_S, RTC_IO_ADC1_FUN_IE_M, 0, 0, RTC_IO_ADC1_SLP_SEL_M, RTC_IO_ADC1_SLP_IE_M, RTC_IO_ADC1_HOLD_M, RTC_CNTL_ADC1_HOLD_FORCE_M, 4}, //34
|
|
|
+ {RTC_IO_ADC_PAD_REG, RTC_IO_ADC2_MUX_SEL_M, RTC_IO_ADC2_FUN_SEL_S, RTC_IO_ADC2_FUN_IE_M, 0, 0, RTC_IO_ADC2_SLP_SEL_M, RTC_IO_ADC2_SLP_IE_M, RTC_IO_ADC1_HOLD_M, RTC_CNTL_ADC2_HOLD_FORCE_M, 5}, //35
|
|
|
+ {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE1_MUX_SEL_M, RTC_IO_SENSE1_FUN_SEL_S, RTC_IO_SENSE1_FUN_IE_M, 0, 0, RTC_IO_SENSE1_SLP_SEL_M, RTC_IO_SENSE1_SLP_IE_M, RTC_IO_SENSE1_HOLD_M, RTC_CNTL_SENSE1_HOLD_FORCE_M, 0}, //36
|
|
|
+ {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE2_MUX_SEL_M, RTC_IO_SENSE2_FUN_SEL_S, RTC_IO_SENSE2_FUN_IE_M, 0, 0, RTC_IO_SENSE2_SLP_SEL_M, RTC_IO_SENSE2_SLP_IE_M, RTC_IO_SENSE1_HOLD_M, RTC_CNTL_SENSE2_HOLD_FORCE_M, 1}, //37
|
|
|
+ {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE3_MUX_SEL_M, RTC_IO_SENSE3_FUN_SEL_S, RTC_IO_SENSE3_FUN_IE_M, 0, 0, RTC_IO_SENSE3_SLP_SEL_M, RTC_IO_SENSE3_SLP_IE_M, RTC_IO_SENSE1_HOLD_M, RTC_CNTL_SENSE3_HOLD_FORCE_M, 2}, //38
|
|
|
+ {RTC_IO_SENSOR_PADS_REG, RTC_IO_SENSE4_MUX_SEL_M, RTC_IO_SENSE4_FUN_SEL_S, RTC_IO_SENSE4_FUN_IE_M, 0, 0, RTC_IO_SENSE4_SLP_SEL_M, RTC_IO_SENSE4_SLP_IE_M, RTC_IO_SENSE1_HOLD_M, RTC_CNTL_SENSE4_HOLD_FORCE_M, 3}, //39
|
|
|
};
|
|
|
|
|
|
/*---------------------------------------------------------------
|
|
|
@@ -205,7 +207,7 @@ esp_err_t rtc_gpio_pullup_en(gpio_num_t gpio_num)
|
|
|
{
|
|
|
//this is a digital pad
|
|
|
if (rtc_gpio_desc[gpio_num].pullup == 0) {
|
|
|
- return ESP_FAIL;
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
}
|
|
|
|
|
|
//this is a rtc pad
|
|
|
@@ -220,7 +222,7 @@ esp_err_t rtc_gpio_pulldown_en(gpio_num_t gpio_num)
|
|
|
{
|
|
|
//this is a digital pad
|
|
|
if (rtc_gpio_desc[gpio_num].pulldown == 0) {
|
|
|
- return ESP_FAIL;
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
}
|
|
|
|
|
|
//this is a rtc pad
|
|
|
@@ -235,7 +237,7 @@ esp_err_t rtc_gpio_pullup_dis(gpio_num_t gpio_num)
|
|
|
{
|
|
|
//this is a digital pad
|
|
|
if ( rtc_gpio_desc[gpio_num].pullup == 0 ) {
|
|
|
- return ESP_FAIL;
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
}
|
|
|
|
|
|
//this is a rtc pad
|
|
|
@@ -250,7 +252,7 @@ esp_err_t rtc_gpio_pulldown_dis(gpio_num_t gpio_num)
|
|
|
{
|
|
|
//this is a digital pad
|
|
|
if (rtc_gpio_desc[gpio_num].pulldown == 0) {
|
|
|
- return ESP_FAIL;
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
}
|
|
|
|
|
|
//this is a rtc pad
|
|
|
@@ -261,12 +263,37 @@ esp_err_t rtc_gpio_pulldown_dis(gpio_num_t gpio_num)
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
|
|
|
-void rtc_gpio_unhold_all()
|
|
|
+esp_err_t rtc_gpio_hold_en(gpio_num_t gpio_num)
|
|
|
+{
|
|
|
+ // check if an RTC IO
|
|
|
+ if (rtc_gpio_desc[gpio_num].pullup == 0) {
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
+ }
|
|
|
+ portENTER_CRITICAL(&rtc_spinlock);
|
|
|
+ SET_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, rtc_gpio_desc[gpio_num].hold);
|
|
|
+ portEXIT_CRITICAL(&rtc_spinlock);
|
|
|
+ return ESP_OK;
|
|
|
+}
|
|
|
+
|
|
|
+esp_err_t rtc_gpio_hold_dis(gpio_num_t gpio_num)
|
|
|
+{
|
|
|
+ // check if an RTC IO
|
|
|
+ if (rtc_gpio_desc[gpio_num].pullup == 0) {
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
+ }
|
|
|
+ portENTER_CRITICAL(&rtc_spinlock);
|
|
|
+ CLEAR_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, rtc_gpio_desc[gpio_num].hold);
|
|
|
+ portEXIT_CRITICAL(&rtc_spinlock);
|
|
|
+ return ESP_OK;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void rtc_gpio_force_hold_dis_all()
|
|
|
{
|
|
|
for (int gpio = 0; gpio < GPIO_PIN_COUNT; ++gpio) {
|
|
|
const rtc_gpio_desc_t* desc = &rtc_gpio_desc[gpio];
|
|
|
- if (desc->hold != 0) {
|
|
|
- REG_CLR_BIT(RTC_CNTL_HOLD_FORCE_REG, desc->hold);
|
|
|
+ if (desc->hold_force != 0) {
|
|
|
+ REG_CLR_BIT(RTC_CNTL_HOLD_FORCE_REG, desc->hold_force);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -323,6 +350,7 @@ static esp_err_t touch_pad_get_io_num(touch_pad_t touch_num, gpio_num_t *gpio_nu
|
|
|
|
|
|
static esp_err_t touch_pad_init_config(uint16_t sleep_cycle, uint16_t sample_cycle_num)
|
|
|
{
|
|
|
+ xSemaphoreTake(rtc_touch_sem, portMAX_DELAY);
|
|
|
portENTER_CRITICAL(&rtc_spinlock);
|
|
|
SET_PERI_REG_BITS(RTC_IO_TOUCH_CFG_REG, RTC_IO_TOUCH_XPD_BIAS, 1, RTC_IO_TOUCH_XPD_BIAS_S);
|
|
|
SET_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_MEAS_EN_CLR);
|
|
|
@@ -336,13 +364,30 @@ static esp_err_t touch_pad_init_config(uint16_t sleep_cycle, uint16_t sample_cyc
|
|
|
//Touch Pad Measure Time= 8Mhz
|
|
|
SET_PERI_REG_BITS(SENS_SAR_TOUCH_CTRL1_REG, SENS_TOUCH_MEAS_DELAY, sample_cycle_num, SENS_TOUCH_MEAS_DELAY_S); //8Mhz
|
|
|
portEXIT_CRITICAL(&rtc_spinlock);
|
|
|
-
|
|
|
+ xSemaphoreGive(rtc_touch_sem);
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
|
|
|
-void touch_pad_init()
|
|
|
+esp_err_t touch_pad_init()
|
|
|
{
|
|
|
- touch_pad_init_config(TOUCH_PAD_SLEEP_CYCLE_CONFIG, TOUCH_PAD_MEASURE_CYCLE_CONFIG);
|
|
|
+ if(rtc_touch_sem == NULL) {
|
|
|
+ rtc_touch_sem = xSemaphoreCreateMutex();
|
|
|
+ }
|
|
|
+ if(rtc_touch_sem == NULL) {
|
|
|
+ return ESP_FAIL;
|
|
|
+ }
|
|
|
+ return touch_pad_init_config(TOUCH_PAD_SLEEP_CYCLE_CONFIG, TOUCH_PAD_MEASURE_CYCLE_CONFIG);
|
|
|
+}
|
|
|
+
|
|
|
+esp_err_t touch_pad_deinit()
|
|
|
+{
|
|
|
+
|
|
|
+ if(rtc_touch_sem == NULL) {
|
|
|
+ return ESP_FAIL;
|
|
|
+ }
|
|
|
+ vSemaphoreDelete(rtc_touch_sem);
|
|
|
+ rtc_touch_sem=NULL;
|
|
|
+ return ESP_OK;
|
|
|
}
|
|
|
|
|
|
static void touch_pad_counter_init(touch_pad_t touch_num)
|
|
|
@@ -391,7 +436,9 @@ static esp_err_t touch_start(touch_pad_t touch_num)
|
|
|
|
|
|
esp_err_t touch_pad_config(touch_pad_t touch_num, uint16_t threshold)
|
|
|
{
|
|
|
+ RTC_MODULE_CHECK(rtc_touch_sem != NULL, "Touch pad not initialized", ESP_FAIL);
|
|
|
RTC_MODULE_CHECK(touch_num < TOUCH_PAD_MAX, "Touch_Pad Num Err", ESP_ERR_INVALID_ARG);
|
|
|
+ xSemaphoreTake(rtc_touch_sem, portMAX_DELAY);
|
|
|
portENTER_CRITICAL(&rtc_spinlock);
|
|
|
//clear touch force ,select the Touch mode is Timer
|
|
|
CLEAR_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_START_EN_M);
|
|
|
@@ -407,18 +454,20 @@ esp_err_t touch_pad_config(touch_pad_t touch_num, uint16_t threshold)
|
|
|
//Enable Rtc Touch Module Intr,the Interrupt need Rtc out Enable
|
|
|
SET_PERI_REG_MASK(RTC_CNTL_INT_ENA_REG, RTC_CNTL_TOUCH_INT_ENA);
|
|
|
portEXIT_CRITICAL(&rtc_spinlock);
|
|
|
+ xSemaphoreGive(rtc_touch_sem);
|
|
|
touch_pad_power_on(touch_num);
|
|
|
toch_pad_io_init(touch_num);
|
|
|
touch_pad_counter_init(touch_num);
|
|
|
touch_start(touch_num);
|
|
|
-
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
|
|
|
esp_err_t touch_pad_read(touch_pad_t touch_num, uint16_t *touch_value)
|
|
|
{
|
|
|
RTC_MODULE_CHECK(touch_num < TOUCH_PAD_MAX, "Touch_Pad Num Err", ESP_ERR_INVALID_ARG);
|
|
|
- RTC_MODULE_CHECK(touch_value!=NULL, "touch_value", ESP_ERR_INVALID_ARG);
|
|
|
+ RTC_MODULE_CHECK(touch_value != NULL, "touch_value", ESP_ERR_INVALID_ARG);
|
|
|
+ RTC_MODULE_CHECK(rtc_touch_sem != NULL, "Touch pad not initialized", ESP_FAIL);
|
|
|
+ xSemaphoreTake(rtc_touch_sem, portMAX_DELAY);
|
|
|
uint32_t v0 = READ_PERI_REG(SENS_SAR_TOUCH_ENABLE_REG);
|
|
|
portENTER_CRITICAL(&rtc_spinlock);
|
|
|
SET_PERI_REG_MASK(SENS_SAR_TOUCH_ENABLE_REG, (1 << (touch_num)));
|
|
|
@@ -432,16 +481,18 @@ esp_err_t touch_pad_read(touch_pad_t touch_num, uint16_t *touch_value)
|
|
|
SET_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_START_EN_M);
|
|
|
SET_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_START_FORCE_M);
|
|
|
SET_PERI_REG_BITS(SENS_SAR_TOUCH_CTRL1_REG, SENS_TOUCH_XPD_WAIT, 10, SENS_TOUCH_XPD_WAIT_S);
|
|
|
+ portEXIT_CRITICAL(&rtc_spinlock);
|
|
|
while (GET_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_MEAS_DONE) == 0) {};
|
|
|
uint8_t shift = (touch_num & 1) ? SENS_TOUCH_MEAS_OUT1_S : SENS_TOUCH_MEAS_OUT0_S;
|
|
|
*touch_value = READ_PERI_REG(SENS_SAR_TOUCH_OUT1_REG + (touch_num / 2) * 4) >> shift;
|
|
|
WRITE_PERI_REG(SENS_SAR_TOUCH_ENABLE_REG, v0);
|
|
|
//force oneTime test end
|
|
|
//clear touch force ,select the Touch mode is Timer
|
|
|
+ portENTER_CRITICAL(&rtc_spinlock);
|
|
|
CLEAR_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_START_EN_M);
|
|
|
CLEAR_PERI_REG_MASK(SENS_SAR_TOUCH_CTRL2_REG, SENS_TOUCH_START_FORCE_M);
|
|
|
portEXIT_CRITICAL(&rtc_spinlock);
|
|
|
-
|
|
|
+ xSemaphoreGive(rtc_touch_sem);
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
|