Merge branch 'bugfix/i2s_timergroup_some_issues_v3.3' into 'release/v3.3'

bugfix(driver): fix i2s and timergroup some issues(backport v3.3)

See merge request espressif/esp-idf!7172
This commit is contained in:
Michael (XIAO Xufeng) 2020-02-19 11:19:10 +08:00
commit b1a9e364bb
3 changed files with 6 additions and 2 deletions

View file

@ -99,7 +99,8 @@ typedef struct {
} i2s_obj_t;
static i2s_obj_t *p_i2s_obj[I2S_NUM_MAX] = {0};
static i2s_dev_t* I2S[I2S_NUM_MAX] = {&I2S0, &I2S1};
/* DRAM_ATTR is required to avoid I2S array placed in flash, due to accessed from ISR */
static DRAM_ATTR i2s_dev_t* I2S[I2S_NUM_MAX] = {&I2S0, &I2S1};
static portMUX_TYPE i2s_spinlock[I2S_NUM_MAX] = {portMUX_INITIALIZER_UNLOCKED, portMUX_INITIALIZER_UNLOCKED};
static int _i2s_adc_unit = -1;
static int _i2s_adc_channel = -1;

View file

@ -1217,10 +1217,12 @@ esp_err_t adc_set_data_inv(adc_unit_t adc_unit, bool inv_en)
if (adc_unit & ADC_UNIT_1) {
// Enable ADC data invert
SENS.sar_read_ctrl.sar1_data_inv = inv_en;
SYSCON.saradc_ctrl2.sar1_inv = inv_en;
}
if (adc_unit & ADC_UNIT_2) {
// Enable ADC data invert
SENS.sar_read_ctrl2.sar2_data_inv = inv_en;
SYSCON.saradc_ctrl2.sar2_inv = inv_en;
}
portEXIT_CRITICAL(&rtc_spinlock);
return ESP_OK;

View file

@ -36,7 +36,8 @@ static const char* TIMER_TAG = "timer_group";
#define TIMER_SCALE_ERROR "HW TIMER SCALE ERROR"
#define TIMER_ALARM_ERROR "HW TIMER ALARM ERROR"
#define DIVIDER_RANGE_ERROR "HW TIMER divider outside of [2, 65536] range error"
static timg_dev_t *TG[2] = {&TIMERG0, &TIMERG1};
/* DRAM_ATTR is required to avoid TG array placed in flash, due to accessed from ISR */
static DRAM_ATTR timg_dev_t *TG[2] = {&TIMERG0, &TIMERG1};
static portMUX_TYPE timer_spinlock[TIMER_GROUP_MAX] = {portMUX_INITIALIZER_UNLOCKED, portMUX_INITIALIZER_UNLOCKED};
#define TIMER_ENTER_CRITICAL(mux) portENTER_CRITICAL_SAFE(mux);