espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
13.33k stars 7.2k forks source link

i2c master read ESP_ERR_TIMEOUT when ticks_to_wait is set to 0 (IDFGH-13579) #14467

Open dizcza opened 2 weeks ago

dizcza commented 2 weeks ago

Answers checklist.

IDF version.

v5.1.4-700-ge026fd1f81

Espressif SoC revision.

ESP32

Operating System used.

Linux

How did you build your project?

Command line with idf.py

If you are using Windows, please specify command line type.

None

Development Kit.

TTGO T8

Power Supply used.

USB

What is the expected behavior?

i2c_master_read_from_device returns ESP_OK

What is the actual behavior?

i2c_master_read_from_device returns ESP_ERR_TIMEOUT

Steps to reproduce.

uint8_t data[2] = { 0 };
TickType_t ticks_to_wait = 0;
esp_err_t err = i2c_master_read_from_device(0, 0x28, data, sizeof(data), ticks_to_wait);

If I set ticks_to_wait = pdMS_TO_TICKS(10), i2c_master_read_from_device returns ESP_OK but the sampling frequency drops from 830 to 750 Hz, which is not acceptable.

Debug Logs.

No response

More Information.

I have an I2C pressure sensor which works on release/v5.1 Mar 24th TickType_t ticks_to_wait = 0 @ 830 Hz and it does not work on the latest release/v5.1 branch. The sensor could output its internal code error in case of timeout but the result of i2c_master_read_from_device was always ESP_OK. Now it's always ESP_ERR_TIMEOUT unless I add non-zero waiting time to i2c_master_read_from_device.

dizcza commented 2 weeks ago

Posting the content of sdkconfig.default if it helps:

CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=n
CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=n
CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=n
CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=n
CONFIG_GPIO_CTRL_FUNC_IN_IRAM=y
CONFIG_RMT_SUPPRESS_DEPRECATE_WARN=y
CONFIG_MCPWM_ISR_IRAM_SAFE=y
CONFIG_HTTPD_MAX_REQ_HDR_LEN=768
CONFIG_ESP_HTTPS_OTA_DECRYPT_CB=y
CONFIG_ESP32_REV_MIN_3=y
CONFIG_PM_ENABLE=y
CONFIG_PM_SLP_IRAM_OPT=y
CONFIG_PM_RTOS_IDLE_OPT=y
CONFIG_PM_SLP_DISABLE_GPIO=y
CONFIG_SPIRAM=y
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y
CONFIG_ESP_MAIN_TASK_STACK_SIZE=16384
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
CONFIG_ESP_TASK_WDT_PANIC=y
CONFIG_ESP_TASK_WDT_TIMEOUT_S=30
CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5=y
CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=n
CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH=y
CONFIG_ESP_COREDUMP_CHECKSUM_SHA256=y
CONFIG_ESP_COREDUMP_MAX_TASKS_NUM=12
CONFIG_ESP_COREDUMP_STACK_SIZE=1500
CONFIG_FATFS_LFN_STACK=y
CONFIG_FATFS_MAX_LFN=128
CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM=y
CONFIG_LWIP_IPV6=n
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744
CONFIG_LWIP_TCP_WND_DEFAULT=5744
CONFIG_LWIP_SNTP_MAX_SERVERS=2
CONFIG_LWIP_SNTP_UPDATE_DELAY=600000
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE=y
CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE=y
CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE_PATH="components_esp32/ota_loader/ca_cert.pem"
CONFIG_PTHREAD_DEFAULT_CORE_0=y
CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=n
CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=n
CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=n
CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=n
CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=n
CONFIG_WS_TRANSPORT=n
CONFIG_ULP_COPROC_ENABLED=y
CONFIG_ULP_COPROC_RESERVE_MEM=600
CONFIG_VFS_SUPPORT_SELECT=n
CONFIG_VFS_SUPPORT_TERMIOS=n
CONFIG_HULP_MACRO_OPTIMISATIONS=y
CONFIG_SENSORLIB_ESP_IDF_OLD_API=y
CONFIG_MIPI_DISPLAY_EXCLUSIVE_BUS=n
CONFIG_MIPI_DISPLAY_PIN_MISO=2
CONFIG_MIPI_DISPLAY_PIN_MOSI=15
CONFIG_MIPI_DISPLAY_PIN_CLK=14
CONFIG_MIPI_DISPLAY_PIN_CS=27
CONFIG_MIPI_DISPLAY_PIN_DC=26
CONFIG_MIPI_DISPLAY_PIN_RST=-1
CONFIG_MIPI_DISPLAY_PIN_BL=-1
mythbuster5 commented 2 weeks ago

I guess is this commit https://github.com/espressif/esp-idf/commit/4c896cbb3a516b0dd91666323593b6d534b86a80

dizcza commented 2 weeks ago

I guess is this commit 4c896cb

You're right. After I reverted this commit, the issue disappeared and I'm getting the expected 830 Hz sample freq.

AxelLin commented 1 day ago

I guess is this commit 4c896cb

@mythbuster5 Would you fix this?