mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
driver/rtc: add APIs to enable/disable hold function
This commit is contained in:
parent
d3ce5c3504
commit
6ad0a157e3
@ -38,7 +38,8 @@ typedef struct {
|
|||||||
uint32_t pulldown; /*!< Mask of pulldown enable */
|
uint32_t pulldown; /*!< Mask of pulldown enable */
|
||||||
uint32_t slpsel; /*!< If slpsel bit is set, slpie will be used as pad input enabled signal in sleep mode */
|
uint32_t slpsel; /*!< If slpsel bit is set, slpie will be used as pad input enabled signal in sleep mode */
|
||||||
uint32_t slpie; /*!< Mask of input enable in sleep mode */
|
uint32_t slpie; /*!< Mask of input enable in sleep mode */
|
||||||
uint32_t hold; /*!< Mask of hold_force bit for RTC IO in RTC_CNTL_HOLD_FORCE_REG */
|
uint32_t hold; /*!< Mask of hold enable */
|
||||||
|
uint32_t hold_force;/*!< Mask of hold_force bit for RTC IO in RTC_CNTL_HOLD_FORCE_REG */
|
||||||
int rtc_num; /*!< RTC IO number, or -1 if not an RTC GPIO */
|
int rtc_num; /*!< RTC IO number, or -1 if not an RTC GPIO */
|
||||||
} rtc_gpio_desc_t;
|
} rtc_gpio_desc_t;
|
||||||
|
|
||||||
@ -192,15 +193,44 @@ esp_err_t rtc_gpio_pullup_dis(gpio_num_t gpio_num);
|
|||||||
esp_err_t rtc_gpio_pulldown_dis(gpio_num_t gpio_num);
|
esp_err_t rtc_gpio_pulldown_dis(gpio_num_t gpio_num);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable "hold" signal for all RTC IOs
|
* @brief Enable hold function on an RTC IO pad
|
||||||
*
|
*
|
||||||
* Each RTC pad has a "hold" input signal from the RTC controller.
|
* Enabling HOLD function will cause the pad to latch current values of
|
||||||
* If hold signal is set, pad latches current values of input enable,
|
* input enable, output enable, output value, function, drive strength values.
|
||||||
|
* This function is useful when going into light or deep sleep mode to prevent
|
||||||
|
* the pin configuration from changing.
|
||||||
|
*
|
||||||
|
* @param gpio_num GPIO number (e.g. GPIO_NUM_12)
|
||||||
|
* @return
|
||||||
|
* - ESP_OK Success
|
||||||
|
* - ESP_ERR_INVALID_ARG GPIO is not an RTC IO
|
||||||
|
*/
|
||||||
|
esp_err_t rtc_gpio_hold_en(gpio_num_t gpio_num);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable hold function on an RTC IO pad
|
||||||
|
*
|
||||||
|
* Disabling hold function will allow the pad receive the values of
|
||||||
|
* input enable, output enable, output value, function, drive strength from
|
||||||
|
* RTC_IO peripheral.
|
||||||
|
*
|
||||||
|
* @param gpio_num GPIO number (e.g. GPIO_NUM_12)
|
||||||
|
* @return
|
||||||
|
* - ESP_OK Success
|
||||||
|
* - ESP_ERR_INVALID_ARG GPIO is not an RTC IO
|
||||||
|
*/
|
||||||
|
esp_err_t rtc_gpio_hold_dis(gpio_num_t gpio_num);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable force hold signal for all RTC IOs
|
||||||
|
*
|
||||||
|
* Each RTC pad has a "force hold" input signal from the RTC controller.
|
||||||
|
* If this signal is set, pad latches current values of input enable,
|
||||||
* function, output enable, and other signals which come from the RTC mux.
|
* function, output enable, and other signals which come from the RTC mux.
|
||||||
* Hold signal is enabled before going into deep sleep for pins which
|
* Force hold signal is enabled before going into deep sleep for pins which
|
||||||
* are used for EXT1 wakeup.
|
* are used for EXT1 wakeup.
|
||||||
*/
|
*/
|
||||||
void rtc_gpio_unhold_all();
|
void rtc_gpio_force_hold_dis_all();
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -42,46 +42,46 @@ static xSemaphoreHandle rtc_touch_sem = NULL;
|
|||||||
|
|
||||||
//Reg,Mux,Fun,IE,Up,Down,Rtc_number
|
//Reg,Mux,Fun,IE,Up,Down,Rtc_number
|
||||||
const rtc_gpio_desc_t rtc_gpio_desc[GPIO_PIN_COUNT] = {
|
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
|
{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, -1}, //1
|
{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
|
{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, -1}, //3
|
{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_CNTL_TOUCH_PAD0_HOLD_FORCE_M, 10}, //4
|
{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, -1}, //5
|
{0, 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, 0, -1}, //6
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //7
|
{0, 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, 0, -1}, //8
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //9
|
{0, 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, 0, -1}, //10
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //11
|
{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_CNTL_TOUCH_PAD5_HOLD_FORCE_M, 15}, //12
|
{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_CNTL_TOUCH_PAD4_HOLD_FORCE_M, 14}, //13
|
{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_CNTL_TOUCH_PAD6_HOLD_FORCE_M, 16}, //14
|
{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_CNTL_TOUCH_PAD3_HOLD_FORCE_M, 13}, //15
|
{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, -1}, //16
|
{0, 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, 0, -1}, //17
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //18
|
{0, 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, 0, -1}, //19
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //20
|
{0, 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, 0, -1}, //21
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //22
|
{0, 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, 0, -1}, //23
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //24
|
{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_CNTL_PDAC1_HOLD_FORCE_M, 6}, //25
|
{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_CNTL_PDAC1_HOLD_FORCE_M, 7}, //26
|
{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_CNTL_TOUCH_PAD7_HOLD_FORCE_M, 17}, //27
|
{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, -1}, //28
|
{0, 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, 0, -1}, //29
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //30
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //30
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1}, //31
|
{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_CNTL_X32P_HOLD_FORCE_M, 9}, //32
|
{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_CNTL_X32N_HOLD_FORCE_M, 8}, //33
|
{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_CNTL_ADC1_HOLD_FORCE_M, 4}, //34
|
{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_CNTL_ADC2_HOLD_FORCE_M, 5}, //35
|
{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_CNTL_SENSE1_HOLD_FORCE_M, 0}, //36
|
{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_CNTL_SENSE2_HOLD_FORCE_M, 1}, //37
|
{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_CNTL_SENSE3_HOLD_FORCE_M, 2}, //38
|
{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_CNTL_SENSE4_HOLD_FORCE_M, 3}, //39
|
{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
|
||||||
};
|
};
|
||||||
|
|
||||||
/*---------------------------------------------------------------
|
/*---------------------------------------------------------------
|
||||||
@ -207,7 +207,7 @@ esp_err_t rtc_gpio_pullup_en(gpio_num_t gpio_num)
|
|||||||
{
|
{
|
||||||
//this is a digital pad
|
//this is a digital pad
|
||||||
if (rtc_gpio_desc[gpio_num].pullup == 0) {
|
if (rtc_gpio_desc[gpio_num].pullup == 0) {
|
||||||
return ESP_FAIL;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
//this is a rtc pad
|
//this is a rtc pad
|
||||||
@ -222,7 +222,7 @@ esp_err_t rtc_gpio_pulldown_en(gpio_num_t gpio_num)
|
|||||||
{
|
{
|
||||||
//this is a digital pad
|
//this is a digital pad
|
||||||
if (rtc_gpio_desc[gpio_num].pulldown == 0) {
|
if (rtc_gpio_desc[gpio_num].pulldown == 0) {
|
||||||
return ESP_FAIL;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
//this is a rtc pad
|
//this is a rtc pad
|
||||||
@ -237,7 +237,7 @@ esp_err_t rtc_gpio_pullup_dis(gpio_num_t gpio_num)
|
|||||||
{
|
{
|
||||||
//this is a digital pad
|
//this is a digital pad
|
||||||
if ( rtc_gpio_desc[gpio_num].pullup == 0 ) {
|
if ( rtc_gpio_desc[gpio_num].pullup == 0 ) {
|
||||||
return ESP_FAIL;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
//this is a rtc pad
|
//this is a rtc pad
|
||||||
@ -252,7 +252,7 @@ esp_err_t rtc_gpio_pulldown_dis(gpio_num_t gpio_num)
|
|||||||
{
|
{
|
||||||
//this is a digital pad
|
//this is a digital pad
|
||||||
if (rtc_gpio_desc[gpio_num].pulldown == 0) {
|
if (rtc_gpio_desc[gpio_num].pulldown == 0) {
|
||||||
return ESP_FAIL;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
//this is a rtc pad
|
//this is a rtc pad
|
||||||
@ -263,12 +263,37 @@ esp_err_t rtc_gpio_pulldown_dis(gpio_num_t gpio_num)
|
|||||||
return ESP_OK;
|
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) {
|
for (int gpio = 0; gpio < GPIO_PIN_COUNT; ++gpio) {
|
||||||
const rtc_gpio_desc_t* desc = &rtc_gpio_desc[gpio];
|
const rtc_gpio_desc_t* desc = &rtc_gpio_desc[gpio];
|
||||||
if (desc->hold != 0) {
|
if (desc->hold_force != 0) {
|
||||||
REG_CLR_BIT(RTC_CNTL_HOLD_FORCE_REG, desc->hold);
|
REG_CLR_BIT(RTC_CNTL_HOLD_FORCE_REG, desc->hold_force);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ void start_cpu0_default(void)
|
|||||||
#if CONFIG_BROWNOUT_DET
|
#if CONFIG_BROWNOUT_DET
|
||||||
esp_brownout_init();
|
esp_brownout_init();
|
||||||
#endif
|
#endif
|
||||||
rtc_gpio_unhold_all();
|
rtc_gpio_force_hold_dis_all();
|
||||||
esp_setup_time_syscalls();
|
esp_setup_time_syscalls();
|
||||||
esp_vfs_dev_uart_register();
|
esp_vfs_dev_uart_register();
|
||||||
esp_reent_init(_GLOBAL_REENT);
|
esp_reent_init(_GLOBAL_REENT);
|
||||||
|
@ -291,7 +291,7 @@ static void ext1_wakeup_prepare()
|
|||||||
REG_SET_BIT(desc->reg, desc->ie);
|
REG_SET_BIT(desc->reg, desc->ie);
|
||||||
REG_CLR_BIT(desc->reg, desc->pulldown);
|
REG_CLR_BIT(desc->reg, desc->pulldown);
|
||||||
REG_CLR_BIT(desc->reg, desc->pullup);
|
REG_CLR_BIT(desc->reg, desc->pullup);
|
||||||
REG_SET_BIT(RTC_CNTL_HOLD_FORCE_REG, desc->hold);
|
REG_SET_BIT(RTC_CNTL_HOLD_FORCE_REG, desc->hold_force);
|
||||||
}
|
}
|
||||||
// Keep track of pins which are processed to bail out early
|
// Keep track of pins which are processed to bail out early
|
||||||
rtc_gpio_mask &= ~BIT(rtc_pin);
|
rtc_gpio_mask &= ~BIT(rtc_pin);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user