Skip to content

Commit ac24f96

Browse files
committed
Merge branch 'feature/support_touch_on_p4_eco5' into 'master'
feat(touch): support touch sensor on p4 eco5 Closes IDF-13423 and IDF-13424 See merge request espressif/esp-idf!41802
2 parents e8ea973 + 87b19c1 commit ac24f96

File tree

11 files changed

+204
-59
lines changed

11 files changed

+204
-59
lines changed

components/esp_driver_touch_sens/hw_ver3/include/driver/touch_version_types.h

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
extern "C" {
2020
#endif
2121

22+
/**
23+
* @brief The auto trigger rise count
24+
* @note If the trigger_rise_cnt is '0', the recommended value will be selected automatically.
25+
*/
26+
#define TOUCH_SENSOR_AUTO_TRIGGER_RISE_CNT 0
27+
2228
/**
2329
* @brief Helper macro to the default configurations of the touch sensor controller
2430
*
@@ -32,6 +38,7 @@ extern "C" {
3238
.max_meas_time_us = 0, \
3339
.output_mode = TOUCH_PAD_OUT_AS_CLOCK, \
3440
.sample_cfg_num = sample_cfg_number, \
41+
.trigger_rise_cnt = TOUCH_SENSOR_AUTO_TRIGGER_RISE_CNT, \
3542
.sample_cfg = sample_cfg_array, \
3643
}
3744

@@ -52,7 +59,6 @@ extern "C" {
5259
.low_drv = fine_freq_tune, \
5360
.high_drv = coarse_freq_tune, \
5461
.bias_volt = 5, \
55-
.bypass_shield_output = false, \
5662
}
5763

5864
/**
@@ -74,7 +80,6 @@ extern "C" {
7480
.low_drv = fine_freq_tune, \
7581
.high_drv = coarse_freq_tune, \
7682
.bias_volt = 5, \
77-
.bypass_shield_output = false, \
7883
}
7984

8085
/**
@@ -118,7 +123,6 @@ typedef struct {
118123
uint8_t low_drv; /*!< Low speed touch driver, only effective when high speed driver is disabled */
119124
uint8_t high_drv; /*!< High speed touch driver */
120125
uint8_t bias_volt; /*!< The Internal LDO voltage, which decide the bias voltage of the sample wave, range [0,15] */
121-
bool bypass_shield_output; /*!< Whether to bypass the shield output, enable when the charging/discharging rate greater than 10MHz */
122126
} touch_sensor_sample_config_t;
123127

124128
/**
@@ -134,6 +138,11 @@ typedef struct {
134138
*/
135139
touch_out_mode_t output_mode; /*!< Touch channel counting mode of the binarized touch output */
136140
uint32_t sample_cfg_num; /*!< The sample configuration number that used for sampling, CANNOT exceed TOUCH_SAMPLE_CFG_NUM */
141+
uint32_t trigger_rise_cnt; /*!< The counter of triggered frequency points to judge whether a channel active.
142+
* For example, there are 3 sample configurations activated, and the trigger_rise_cnt is 2,
143+
* then the channel will only be active when at least 2 of 3 sample configurations triggered.
144+
* Range: [0 ~ sample_cfg_num], '0' means select the recommended value automatically.
145+
*/
137146
touch_sensor_sample_config_t *sample_cfg; /*!< The array of this sample configuration configurations, the length should be specified in `touch_sensor_config_t::sample_cfg_num` */
138147
} touch_sensor_config_t;
139148

@@ -426,7 +435,10 @@ typedef struct {
426435
*
427436
*/
428437
typedef struct {
429-
bool do_reset; /*!< Whether to reset the benchmark to the channel's latest smooth data */
438+
bool do_reset; /*!< Whether to reset the benchmark to the channel's latest smooth data, conflict with `do_force_update` */
439+
bool do_force_update; /*!< Whether to force update the benchmark to the specified value, conflict with `do_reset` */
440+
uint32_t benchmark; /*!< The specified benchmark value to update, only available when `do_force_update` is true */
441+
uint32_t sample_cfg_id; /*!< The sample configuration index to update the benchmark, only available when `do_force_update` is true */
430442
} touch_chan_benchmark_config_t;
431443

432444
#ifdef __cplusplus

components/esp_driver_touch_sens/hw_ver3/touch_version_specific.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,12 @@ static esp_err_t s_touch_convert_to_hal_config(touch_sensor_handle_t sens_handle
137137
"at least one sample configuration required");
138138
ESP_RETURN_ON_FALSE(sens_cfg->sample_cfg_num <= TOUCH_SAMPLE_CFG_NUM, ESP_ERR_INVALID_ARG, TAG,
139139
"at most %d sample configurations supported", (int)(TOUCH_SAMPLE_CFG_NUM));
140+
ESP_RETURN_ON_FALSE(sens_cfg->trigger_rise_cnt <= sens_cfg->sample_cfg_num, ESP_ERR_INVALID_ARG, TAG,
141+
"trigger_rise_cnt should within 0 ~ sample_cfg_num");
142+
#if CONFIG_IDF_TARGET_ESP32P4 && CONFIG_ESP_REV_MIN_FULL < 300
143+
ESP_RETURN_ON_FALSE(sens_cfg->trigger_rise_cnt < 2, ESP_ERR_INVALID_ARG, TAG,
144+
"this target do not support trigger_rise_cnt > 1");
145+
#endif
140146

141147
/* Get the source clock frequency for the first time */
142148
if (!sens_handle->src_freq_hz) {
@@ -161,6 +167,7 @@ static esp_err_t s_touch_convert_to_hal_config(touch_sensor_handle_t sens_handle
161167
ESP_RETURN_ON_FALSE(hal_cfg->timeout_ticks <= TOUCH_LL_TIMEOUT_MAX, ESP_ERR_INVALID_ARG, TAG,
162168
"max_meas_time_ms should within %"PRIu32, TOUCH_LL_TIMEOUT_MAX / src_freq_mhz);
163169
hal_cfg->sample_cfg_num = sens_cfg->sample_cfg_num;
170+
hal_cfg->trigger_rise_cnt = sens_cfg->trigger_rise_cnt ? sens_cfg->trigger_rise_cnt : (sens_cfg->sample_cfg_num == 1 ? 1 : 2);
164171
hal_cfg->output_mode = sens_cfg->output_mode;
165172

166173
for (uint32_t smp_cfg_id = 0; smp_cfg_id < sens_cfg->sample_cfg_num; smp_cfg_id++) {
@@ -317,9 +324,17 @@ esp_err_t touch_channel_config_benchmark(touch_channel_handle_t chan_handle, con
317324
{
318325
TOUCH_NULL_POINTER_CHECK_ISR(chan_handle);
319326
TOUCH_NULL_POINTER_CHECK_ISR(benchmark_cfg);
327+
#if CONFIG_IDF_TARGET_ESP32P4 && CONFIG_ESP_REV_MIN_FULL < 300
328+
ESP_RETURN_ON_FALSE_ISR(!benchmark_cfg->do_force_update, ESP_ERR_INVALID_ARG, TAG, "this target do not support force update benchmark");
329+
#else
330+
ESP_RETURN_ON_FALSE_ISR(benchmark_cfg->do_reset != benchmark_cfg->do_force_update, ESP_ERR_INVALID_ARG, TAG, "do_reset and do_force_update cannot be both true");
331+
#endif
320332
if (benchmark_cfg->do_reset) {
321333
touch_ll_reset_chan_benchmark(BIT(chan_handle->id));
322334
}
335+
if (benchmark_cfg->do_force_update) {
336+
touch_ll_force_update_benchmark(chan_handle->id, benchmark_cfg->sample_cfg_id, benchmark_cfg->benchmark);
337+
}
323338
return ESP_OK;
324339
}
325340

components/hal/esp32p4/include/hal/touch_sensor_ll.h

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "soc/pmu_struct.h"
2626
#include "soc/soc_caps.h"
2727
#include "hal/touch_sens_types.h"
28+
#include "hal/config.h"
2829

2930
#ifdef __cplusplus
3031
extern "C" {
@@ -586,6 +587,18 @@ static inline uint32_t touch_ll_sample_cfg_get_engaged_num(void)
586587
return sample_cfg_num ? sample_cfg_num : 1;
587588
}
588589

590+
/**
591+
* Set the number of trigger rise count (only available since P4 ver3)
592+
*
593+
* @param rise_cnt Configure the number of hit frequency points that need to be determined for touch
594+
* in frequency hopping mode.
595+
*/
596+
static inline void touch_ll_sample_cfg_set_trigger_rise_cnt(uint8_t rise_cnt)
597+
{
598+
#if HAL_CONFIG(CHIP_SUPPORT_MIN_REV) >= 300
599+
LP_ANA_PERI.touch_ctrl.freq_scan_cnt_rise = rise_cnt;
600+
#endif
601+
}
589602

590603
/**
591604
* Set capacitance and resistance of the RC filter of the sampling frequency.
@@ -615,18 +628,6 @@ static inline void touch_ll_sample_cfg_set_driver(uint8_t sample_cfg_id, uint32_
615628
LP_ANA_PERI.touch_freq_scan_para[sample_cfg_id].touch_freq_drv_hs = hs_drv;
616629
}
617630

618-
/**
619-
* Bypass the shield channel output for the specify sample configuration
620-
*
621-
* @param sample_cfg_id The sample configuration index
622-
* @param enable Set true to bypass the shield channel output for the current channel
623-
*/
624-
static inline void touch_ll_sample_cfg_bypass_shield_output(uint8_t sample_cfg_id, bool enable)
625-
{
626-
HAL_ASSERT(sample_cfg_id < SOC_TOUCH_SAMPLE_CFG_NUM);
627-
LP_ANA_PERI.touch_freq_scan_para[sample_cfg_id].touch_bypass_shield = enable;
628-
}
629-
630631
/**
631632
* Set the touch internal LDO bias voltage of the sampling frequency
632633
*
@@ -753,13 +754,19 @@ static inline void touch_ll_filter_enable(bool enable)
753754
}
754755

755756
/**
756-
* Force the update the benchmark by software
757+
* Force the update the benchmark by software (only available since P4 ver3)
757758
* @note This benchmark will be applied to all enabled channel and all sampling frequency
758759
*
760+
* @param pad_num The pad number, range [1-14]
761+
* @param sample_cfg_id The sample configuration index, range [0-2]
759762
* @param benchmark The benchmark specified by software
760763
*/
761-
static inline void touch_ll_force_update_benchmark(uint32_t benchmark)
764+
static inline void touch_ll_force_update_benchmark(uint32_t pad_num, uint8_t sample_cfg_id, uint32_t benchmark)
762765
{
766+
#if HAL_CONFIG(CHIP_SUPPORT_MIN_REV) >= 300
767+
LP_ANA_PERI.touch_ctrl.touch_update_benchmark_pad_sel = pad_num;
768+
LP_ANA_PERI.touch_ctrl.touch_update_benchmark_freq_sel = sample_cfg_id;
769+
#endif
763770
HAL_FORCE_MODIFY_U32_REG_FIELD(LP_ANA_PERI.touch_filter3, touch_benchmark_sw, benchmark);
764771
LP_ANA_PERI.touch_filter3.touch_update_benchmark_sw = 1;
765772
// waiting for update

components/hal/include/hal/touch_sens_hal.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,13 @@ typedef struct {
105105
* of the sample configurations below.
106106
*/
107107
touch_out_mode_t output_mode; /*!< Touch channel counting mode of the binarized touch output */
108-
#endif // SOC_TOUCH_SENSOR_VERSION == 3
108+
#endif // SOC_TOUCH_SENSOR_VERSION == 3
109109
uint32_t sample_cfg_num; /*!< The sample configuration number that used for sampling */
110+
uint32_t trigger_rise_cnt; /*!< The counter of triggered frequency points to judge whether a channel active.
111+
* For example, there are 3 sample configurations activated, and the trigger_rise_cnt is 2,
112+
* then the channel will only be active when at least 2 of 3 sample configurations triggered.
113+
* Range: [0 ~ sample_cfg_num], '0' means select the recommended value automatically.
114+
*/
110115
touch_hal_sample_config_t *sample_cfg; /*!< The array of the sample configuration configurations, the length should be specified in `touch_hal_sample_config_t::sample_cfg_num` */
111116
} touch_hal_config_t;
112117

components/hal/touch_sens_hal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ void touch_hal_config_controller(const touch_hal_config_t *cfg)
4747
touch_ll_sleep_set_channel_num(TOUCH_LL_NULL_CHANNEL);
4848
touch_ll_set_timeout(cfg->timeout_ticks);
4949
touch_ll_sample_cfg_set_engaged_num(cfg->sample_cfg_num);
50+
touch_ll_sample_cfg_set_trigger_rise_cnt(cfg->trigger_rise_cnt);
5051
touch_ll_set_out_mode(cfg->output_mode);
5152
for (int i = 0; i < cfg->sample_cfg_num; i++) {
5253
touch_ll_set_clock_div(i, cfg->sample_cfg[i].div_num);
5354
touch_ll_set_charge_times(i, cfg->sample_cfg[i].charge_times);
5455
touch_ll_sample_cfg_set_rc_filter(i, cfg->sample_cfg[i].rc_filter_cap, cfg->sample_cfg[i].rc_filter_res);
5556
touch_ll_sample_cfg_set_driver(i, cfg->sample_cfg[i].low_drv, cfg->sample_cfg[i].high_drv);
56-
touch_ll_sample_cfg_bypass_shield_output(i, cfg->sample_cfg[i].bypass_shield_output);
5757
touch_ll_sample_cfg_set_bias_voltage(i, cfg->sample_cfg[i].bias_volt);
5858
}
5959
#else

components/soc/esp32p4/register/hw_ver3/soc/lp_analog_peri_reg.h

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
extern "C" {
1212
#endif
1313

14-
// TODO: IDF-13424
15-
1614
/** LP_ANALOG_PERI_BOD_MODE0_CNTL_REG register
1715
* need_des
1816
*/
@@ -199,6 +197,18 @@ extern "C" {
199197
#define LP_ANALOG_PERI_VDDBAT_CHARGE_UNDERVOLTAGE_TARGET_V 0x000003FFU
200198
#define LP_ANALOG_PERI_VDDBAT_CHARGE_UNDERVOLTAGE_TARGET_S 22
201199

200+
/** LP_ANALOG_PERI_CK_GLITCH_CNTL_REG register
201+
* need_des
202+
*/
203+
#define LP_ANALOG_PERI_CK_GLITCH_CNTL_REG (DR_REG_LP_ANALOG_PERI_BASE + 0x14)
204+
/** LP_ANALOG_PERI_CK_GLITCH_RESET_ENA : R/W; bitpos: [31]; default: 0;
205+
* need_des
206+
*/
207+
#define LP_ANALOG_PERI_CK_GLITCH_RESET_ENA (BIT(31))
208+
#define LP_ANALOG_PERI_CK_GLITCH_RESET_ENA_M (LP_ANALOG_PERI_CK_GLITCH_RESET_ENA_V << LP_ANALOG_PERI_CK_GLITCH_RESET_ENA_S)
209+
#define LP_ANALOG_PERI_CK_GLITCH_RESET_ENA_V 0x00000001U
210+
#define LP_ANALOG_PERI_CK_GLITCH_RESET_ENA_S 31
211+
202212
/** LP_ANALOG_PERI_PG_GLITCH_CNTL_REG register
203213
* need_des
204214
*/
@@ -223,8 +233,6 @@ extern "C" {
223233
#define LP_ANALOG_PERI_ANA_FIB_ENA_V 0xFFFFFFFFU
224234
#define LP_ANALOG_PERI_ANA_FIB_ENA_S 0
225235

226-
#define LP_ANALOG_PERI_LP_ANA_FIB_BOD_RST BIT(1)
227-
228236
/** LP_ANALOG_PERI_INT_RAW_REG register
229237
* need_des
230238
*/
@@ -1595,11 +1603,38 @@ extern "C" {
15951603
#define LP_ANALOG_PERI_TOUCH_PAD14_TH2_V 0x0000FFFFU
15961604
#define LP_ANALOG_PERI_TOUCH_PAD14_TH2_S 16
15971605

1606+
/** LP_ANALOG_PERI_TOUCH_CTRL_REG register
1607+
* Touch Control Register
1608+
*/
1609+
#define LP_ANALOG_PERI_TOUCH_CTRL_REG (DR_REG_LP_ANALOG_PERI_BASE + 0x1fc)
1610+
/** LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL : R/W; bitpos: [1:0]; default: 0;
1611+
* Configure the frequency point for software to update the baseline
1612+
*/
1613+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL 0x00000003U
1614+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL_M (LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL_V << LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL_S)
1615+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL_V 0x00000003U
1616+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_FREQ_SEL_S 0
1617+
/** LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL : R/W; bitpos: [5:2]; default: 0;
1618+
* Configure the channel for software to update the baseline.
1619+
*/
1620+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL 0x0000000FU
1621+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL_M (LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL_V << LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL_S)
1622+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL_V 0x0000000FU
1623+
#define LP_ANALOG_PERI_TOUCH_UPDATE_BENCHMARK_PAD_SEL_S 2
1624+
/** LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE : R/W; bitpos: [7:6]; default: 1;
1625+
* Configure the number of hit frequency points that need to be determined for touch
1626+
* in frequency hopping mode.
1627+
*/
1628+
#define LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE 0x00000003U
1629+
#define LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE_M (LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE_V << LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE_S)
1630+
#define LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE_V 0x00000003U
1631+
#define LP_ANALOG_PERI_FREQ_SCAN_CNT_RISE_S 6
1632+
15981633
/** LP_ANALOG_PERI_DATE_REG register
15991634
* need_des
16001635
*/
16011636
#define LP_ANALOG_PERI_DATE_REG (DR_REG_LP_ANALOG_PERI_BASE + 0x3fc)
1602-
/** LP_ANALOG_PERI_LP_ANALOG_PERI_DATE : R/W; bitpos: [30:0]; default: 2294816;
1637+
/** LP_ANALOG_PERI_LP_ANALOG_PERI_DATE : R/W; bitpos: [30:0]; default: 2425376;
16031638
* need_des
16041639
*/
16051640
#define LP_ANALOG_PERI_LP_ANALOG_PERI_DATE 0x7FFFFFFFU

components/soc/esp32p4/register/hw_ver3/soc/lp_analog_peri_struct.h

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
extern "C" {
1111
#endif
1212

13-
// TODO: IDF-13424
14-
1513
/** Group: configure_register */
1614
/** Type of bod_mode0_cntl register
1715
* need_des
@@ -154,6 +152,20 @@ typedef union {
154152
uint32_t val;
155153
} lp_analog_peri_vddbat_charge_cntl_reg_t;
156154

155+
/** Type of ck_glitch_cntl register
156+
* need_des
157+
*/
158+
typedef union {
159+
struct {
160+
uint32_t reserved_0:31;
161+
/** ck_glitch_reset_ena : R/W; bitpos: [31]; default: 0;
162+
* need_des
163+
*/
164+
uint32_t ck_glitch_reset_ena:1;
165+
};
166+
uint32_t val;
167+
} lp_analog_peri_ck_glitch_cntl_reg_t;
168+
157169
/** Type of pg_glitch_cntl register
158170
* need_des
159171
*/
@@ -692,14 +704,10 @@ typedef union {
692704
* High speed touch driver
693705
*/
694706
uint32_t touch_freq_drv_hs:5;
695-
/** touch_bypass_shield : R/W; bitpos: [18]; default: 0;
696-
* bypass the shield channel output (only available since ECO1)
697-
*/
698-
uint32_t touch_bypass_shield:1;
699-
/** touch_freq_dbias : R/W; bitpos: [22:19]; default: 0;
707+
/** touch_freq_dbias : R/W; bitpos: [22:18]; default: 0;
700708
* Internal LDO voltage
701709
*/
702-
uint32_t touch_freq_dbias:4;
710+
uint32_t touch_freq_dbias:5;
703711
uint32_t reserved_23:9;
704712
};
705713
uint32_t val;
@@ -799,7 +807,7 @@ typedef union {
799807
uint32_t val;
800808
} lp_analog_peri_touch_mux1_reg_t;
801809

802-
/** Type of touch_pad0_th0 register
810+
/** Type of touch_pad_thn register
803811
* need_des
804812
*/
805813
typedef union {
@@ -813,12 +821,35 @@ typedef union {
813821
uint32_t val;
814822
} lp_analog_peri_touch_pad_thn_reg_t;
815823

824+
/** Type of touch_ctrl register
825+
* Touch Control Register
826+
*/
827+
typedef union {
828+
struct {
829+
/** touch_update_benchmark_freq_sel : R/W; bitpos: [1:0]; default: 0;
830+
* Configure the frequency point for software to update the benchmark
831+
*/
832+
uint32_t touch_update_benchmark_freq_sel:2;
833+
/** touch_update_benchmark_pad_sel : R/W; bitpos: [5:2]; default: 0;
834+
* Configure the channel for software to update the benchmark.
835+
*/
836+
uint32_t touch_update_benchmark_pad_sel:4;
837+
/** freq_scan_cnt_rise : R/W; bitpos: [7:6]; default: 1;
838+
* Configure the number of hit frequency points that need to be determined for touch
839+
* in frequency hopping mode.
840+
*/
841+
uint32_t freq_scan_cnt_rise:2;
842+
uint32_t reserved_8:24;
843+
};
844+
uint32_t val;
845+
} lp_analog_peri_touch_ctrl_reg_t;
846+
816847
/** Type of date register
817848
* need_des
818849
*/
819850
typedef union {
820851
struct {
821-
/** lp_analog_peri_date : R/W; bitpos: [30:0]; default: 2294816;
852+
/** lp_analog_peri_date : R/W; bitpos: [30:0]; default: 2425376;
822853
* need_des
823854
*/
824855
uint32_t lp_analog_peri_date:31;
@@ -841,7 +872,7 @@ typedef struct {
841872
volatile lp_analog_peri_vdd_source_cntl_reg_t vdd_source_cntl;
842873
volatile lp_analog_peri_vddbat_bod_cntl_reg_t vddbat_bod_cntl;
843874
volatile lp_analog_peri_vddbat_charge_cntl_reg_t vddbat_charge_cntl;
844-
uint32_t reserved_014;
875+
volatile lp_analog_peri_ck_glitch_cntl_reg_t ck_glitch_cntl;
845876
volatile lp_analog_peri_pg_glitch_cntl_reg_t pg_glitch_cntl;
846877
volatile lp_analog_peri_fib_enable_reg_t fib_enable;
847878
volatile lp_analog_peri_int_raw_reg_t int_raw;
@@ -870,7 +901,9 @@ typedef struct {
870901
volatile lp_analog_peri_touch_mux0_reg_t touch_mux0;
871902
volatile lp_analog_peri_touch_mux1_reg_t touch_mux1;
872903
volatile lp_analog_peri_touch_padx_thn_reg_t touch_padx_thn[15];
873-
uint32_t reserved_1f8[129];
904+
uint32_t reserved_1f8;
905+
volatile lp_analog_peri_touch_ctrl_reg_t touch_ctrl;
906+
uint32_t reserved_200[127];
874907
volatile lp_analog_peri_date_reg_t date;
875908
} lp_analog_peri_dev_t;
876909

0 commit comments

Comments
 (0)