mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
Merge branch 'refactor/esp_driver_tsens' into 'master'
refactor(temperature_sensor): Make temperature sensor driver as a seperate component See merge request espressif/esp-idf!27408
This commit is contained in:
commit
dbe08fbaae
@ -13,7 +13,6 @@ set(includes "deprecated"
|
|||||||
"ledc/include"
|
"ledc/include"
|
||||||
"parlio/include"
|
"parlio/include"
|
||||||
"sigma_delta/include"
|
"sigma_delta/include"
|
||||||
"temperature_sensor/include"
|
|
||||||
"touch_sensor/include"
|
"touch_sensor/include"
|
||||||
"twai/include"
|
"twai/include"
|
||||||
"uart/include"
|
"uart/include"
|
||||||
@ -95,8 +94,7 @@ endif()
|
|||||||
|
|
||||||
# Temperature Sensor related source files
|
# Temperature Sensor related source files
|
||||||
if(CONFIG_SOC_TEMP_SENSOR_SUPPORTED)
|
if(CONFIG_SOC_TEMP_SENSOR_SUPPORTED)
|
||||||
list(APPEND srcs "temperature_sensor/temperature_sensor.c"
|
list(APPEND srcs "deprecated/rtc_temperature_legacy.c")
|
||||||
"deprecated/rtc_temperature_legacy.c")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Touch Sensor related source files
|
# Touch Sensor related source files
|
||||||
@ -146,7 +144,7 @@ else()
|
|||||||
# have a public dependency on other "esp_driver_foo" components
|
# have a public dependency on other "esp_driver_foo" components
|
||||||
esp_driver_gpio esp_driver_pcnt esp_driver_gptimer esp_driver_spi esp_driver_mcpwm
|
esp_driver_gpio esp_driver_pcnt esp_driver_gptimer esp_driver_spi esp_driver_mcpwm
|
||||||
esp_driver_ana_cmpr esp_driver_i2s esp_driver_sdmmc esp_driver_sdspi esp_driver_sdio
|
esp_driver_ana_cmpr esp_driver_i2s esp_driver_sdmmc esp_driver_sdspi esp_driver_sdio
|
||||||
esp_driver_dac esp_driver_rmt
|
esp_driver_dac esp_driver_rmt esp_driver_tsens
|
||||||
LDFRAGMENTS ${ldfragments}
|
LDFRAGMENTS ${ldfragments}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
@ -64,34 +64,6 @@ menu "Driver Configurations"
|
|||||||
|
|
||||||
orsource "./twai/Kconfig.twai"
|
orsource "./twai/Kconfig.twai"
|
||||||
|
|
||||||
menu "Temperature sensor Configuration"
|
|
||||||
depends on SOC_TEMP_SENSOR_SUPPORTED
|
|
||||||
|
|
||||||
config TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN
|
|
||||||
bool "Suppress legacy driver deprecated warning"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Wether to suppress the deprecation warnings when using legacy temperature sensor driver
|
|
||||||
(driver/temp_sensor.h). If you want to continue using the legacy driver,
|
|
||||||
and don't want to see related deprecation warnings, you can enable this option.
|
|
||||||
|
|
||||||
config TEMP_SENSOR_ENABLE_DEBUG_LOG
|
|
||||||
bool "Enable debug log"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Wether to enable the debug log message for temperature sensor driver.
|
|
||||||
Note that, this option only controls the temperature sensor driver log, won't affect other drivers.
|
|
||||||
|
|
||||||
config TEMP_SENSOR_ISR_IRAM_SAFE
|
|
||||||
depends on SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
|
|
||||||
bool "Temperature sensor ISR IRAM-Safe"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Ensure the Temperature Sensor interrupt is IRAM-Safe by allowing the interrupt handler to be
|
|
||||||
executable when the cache is disabled (e.g. SPI Flash write).
|
|
||||||
|
|
||||||
endmenu # TEMP_SENSOR Configuration
|
|
||||||
|
|
||||||
orsource "./uart/Kconfig.uart"
|
orsource "./uart/Kconfig.uart"
|
||||||
|
|
||||||
menu "Sigma Delta Modulator Configuration"
|
menu "Sigma Delta Modulator Configuration"
|
||||||
|
@ -96,10 +96,6 @@ components/driver/test_apps/sigma_delta:
|
|||||||
depends_components:
|
depends_components:
|
||||||
- esp_driver_gpio
|
- esp_driver_gpio
|
||||||
|
|
||||||
components/driver/test_apps/temperature_sensor:
|
|
||||||
disable:
|
|
||||||
- if: SOC_TEMP_SENSOR_SUPPORTED != 1
|
|
||||||
|
|
||||||
components/driver/test_apps/touch_sensor_v1:
|
components/driver/test_apps/touch_sensor_v1:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_TOUCH_SENSOR_VERSION != 1
|
- if: SOC_TOUCH_SENSOR_VERSION != 1
|
||||||
|
11
components/esp_driver_tsens/CMakeLists.txt
Normal file
11
components/esp_driver_tsens/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
set(srcs)
|
||||||
|
set(priv_req efuse)
|
||||||
|
set(public_include "include")
|
||||||
|
if(CONFIG_SOC_TEMP_SENSOR_SUPPORTED)
|
||||||
|
list(APPEND srcs "src/temperature_sensor.c")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
idf_component_register(SRCS ${srcs}
|
||||||
|
INCLUDE_DIRS ${public_include}
|
||||||
|
PRIV_REQUIRES ${priv_req}
|
||||||
|
)
|
27
components/esp_driver_tsens/Kconfig
Normal file
27
components/esp_driver_tsens/Kconfig
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
menu "ESP-Driver:Temperature Sensor Configurations"
|
||||||
|
depends on SOC_TEMP_SENSOR_SUPPORTED
|
||||||
|
|
||||||
|
config TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN
|
||||||
|
bool "Suppress legacy driver deprecated warning"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Wether to suppress the deprecation warnings when using legacy temperature sensor driver
|
||||||
|
(driver/temp_sensor.h). If you want to continue using the legacy driver,
|
||||||
|
and don't want to see related deprecation warnings, you can enable this option.
|
||||||
|
|
||||||
|
config TEMP_SENSOR_ENABLE_DEBUG_LOG
|
||||||
|
bool "Enable debug log"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Wether to enable the debug log message for temperature sensor driver.
|
||||||
|
Note that, this option only controls the temperature sensor driver log, won't affect other drivers.
|
||||||
|
|
||||||
|
config TEMP_SENSOR_ISR_IRAM_SAFE
|
||||||
|
depends on SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
|
||||||
|
bool "Temperature sensor ISR IRAM-Safe"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Ensure the Temperature Sensor interrupt is IRAM-Safe by allowing the interrupt handler to be
|
||||||
|
executable when the cache is disabled (e.g. SPI Flash write).
|
||||||
|
|
||||||
|
endmenu # TEMP_SENSOR Configuration
|
@ -76,7 +76,7 @@ static void IRAM_ATTR temperature_sensor_isr(void *arg)
|
|||||||
temperature_sensor_ll_clear_intr();
|
temperature_sensor_ll_clear_intr();
|
||||||
bool cbs_yield = false;
|
bool cbs_yield = false;
|
||||||
temperature_sensor_handle_t tsens = (temperature_sensor_handle_t) arg;
|
temperature_sensor_handle_t tsens = (temperature_sensor_handle_t) arg;
|
||||||
temperature_val_intr_condition_t intr_condition = (temperature_sensor_ll_get_wakeup_reason() == 1 ? TEMPERATURE_VAL_HIGHER_THAN_HIGH_THRESHOLD: TEMPERATURE_VAL_LOWER_THAN_LOW_THRESHOLD);
|
temperature_val_intr_condition_t intr_condition = (temperature_sensor_ll_get_wakeup_reason() == 1 ? TEMPERATURE_VAL_HIGHER_THAN_HIGH_THRESHOLD : TEMPERATURE_VAL_LOWER_THAN_LOW_THRESHOLD);
|
||||||
temperature_sensor_threshold_event_data_t data = {
|
temperature_sensor_threshold_event_data_t data = {
|
||||||
.celsius_value = s_temperature_regval_2_celsius(tsens, temperature_sensor_ll_get_raw_value()),
|
.celsius_value = s_temperature_regval_2_celsius(tsens, temperature_sensor_ll_get_raw_value()),
|
||||||
.intr_condition = intr_condition,
|
.intr_condition = intr_condition,
|
||||||
@ -243,7 +243,7 @@ esp_err_t temperature_sensor_get_celsius(temperature_sensor_handle_t tsens, floa
|
|||||||
|
|
||||||
static uint8_t s_temperature_celsius_2_regval(temperature_sensor_handle_t tsens, int8_t celsius)
|
static uint8_t s_temperature_celsius_2_regval(temperature_sensor_handle_t tsens, int8_t celsius)
|
||||||
{
|
{
|
||||||
return (uint8_t)((celsius + TEMPERATURE_SENSOR_LL_OFFSET_FACTOR + TEMPERATURE_SENSOR_LL_DAC_FACTOR * tsens->tsens_attribute->offset)/TEMPERATURE_SENSOR_LL_ADC_FACTOR);
|
return (uint8_t)((celsius + TEMPERATURE_SENSOR_LL_OFFSET_FACTOR + TEMPERATURE_SENSOR_LL_DAC_FACTOR * tsens->tsens_attribute->offset) / TEMPERATURE_SENSOR_LL_ADC_FACTOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR static int8_t s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval)
|
IRAM_ATTR static int8_t s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval)
|
||||||
@ -305,8 +305,8 @@ esp_err_t temperature_sensor_register_callbacks(temperature_sensor_handle_t tsen
|
|||||||
// lazy install interrupt service.
|
// lazy install interrupt service.
|
||||||
if (!tsens->temp_sensor_isr_handle) {
|
if (!tsens->temp_sensor_isr_handle) {
|
||||||
ret = esp_intr_alloc_intrstatus(ETS_APB_ADC_INTR_SOURCE, isr_flags,
|
ret = esp_intr_alloc_intrstatus(ETS_APB_ADC_INTR_SOURCE, isr_flags,
|
||||||
(uint32_t)temperature_sensor_ll_get_intr_status(),
|
(uint32_t)temperature_sensor_ll_get_intr_status(),
|
||||||
TEMPERATURE_SENSOR_LL_INTR_MASK, temperature_sensor_isr, tsens, &tsens->temp_sensor_isr_handle);
|
TEMPERATURE_SENSOR_LL_INTR_MASK, temperature_sensor_isr, tsens, &tsens->temp_sensor_isr_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cbs->on_threshold != NULL) {
|
if (cbs->on_threshold != NULL) {
|
@ -43,7 +43,6 @@ struct temperature_sensor_obj_t {
|
|||||||
#endif // SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
|
#endif // SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
@ -0,0 +1,8 @@
|
|||||||
|
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
||||||
|
|
||||||
|
components/esp_driver_tsens/test_apps/temperature_sensor:
|
||||||
|
disable:
|
||||||
|
- if: SOC_TEMP_SENSOR_SUPPORTED != 1
|
||||||
|
depends_components:
|
||||||
|
- esp_driver_tsens
|
||||||
|
- esp_phy
|
@ -5,5 +5,5 @@ set(srcs "test_app_main.c"
|
|||||||
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
|
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
|
||||||
# the component can be registered as WHOLE_ARCHIVE
|
# the component can be registered as WHOLE_ARCHIVE
|
||||||
idf_component_register(SRCS ${srcs}
|
idf_component_register(SRCS ${srcs}
|
||||||
PRIV_REQUIRES unity driver esp_wifi test_utils nvs_flash
|
PRIV_REQUIRES unity esp_wifi test_utils nvs_flash esp_driver_tsens
|
||||||
WHOLE_ARCHIVE)
|
WHOLE_ARCHIVE)
|
@ -40,10 +40,11 @@ struct temperature_sensor_obj_t {
|
|||||||
|
|
||||||
static void start_wifi_as_softap(void)
|
static void start_wifi_as_softap(void)
|
||||||
{
|
{
|
||||||
|
uint8_t ssid_len = strlen(TEST_DEFAULT_SSID);
|
||||||
wifi_config_t w_config = {
|
wifi_config_t w_config = {
|
||||||
.ap.ssid = TEST_DEFAULT_SSID,
|
.ap.ssid = TEST_DEFAULT_SSID,
|
||||||
.ap.password = TEST_DEFAULT_PWD,
|
.ap.password = TEST_DEFAULT_PWD,
|
||||||
.ap.ssid_len = strlen(TEST_DEFAULT_SSID),
|
.ap.ssid_len = ssid_len,
|
||||||
.ap.channel = TEST_DEFAULT_CHANNEL,
|
.ap.channel = TEST_DEFAULT_CHANNEL,
|
||||||
.ap.authmode = WIFI_AUTH_WPA2_PSK,
|
.ap.authmode = WIFI_AUTH_WPA2_PSK,
|
||||||
.ap.ssid_hidden = false,
|
.ap.ssid_hidden = false,
|
||||||
@ -66,7 +67,7 @@ static void start_wifi_as_sta(void)
|
|||||||
static void stop_wifi(void)
|
static void stop_wifi(void)
|
||||||
{
|
{
|
||||||
TEST_ESP_OK(esp_wifi_stop());
|
TEST_ESP_OK(esp_wifi_stop());
|
||||||
vTaskDelay(500/portTICK_PERIOD_MS);
|
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifi_connect(void)
|
static void wifi_connect(void)
|
||||||
@ -91,7 +92,7 @@ static void test_wifi_establish_sta(void)
|
|||||||
unity_wait_for_signal("AP start");
|
unity_wait_for_signal("AP start");
|
||||||
|
|
||||||
// make sure softap has started
|
// make sure softap has started
|
||||||
vTaskDelay(1000/portTICK_PERIOD_MS);
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
wifi_connect();
|
wifi_connect();
|
||||||
unity_send_signal("connect");
|
unity_send_signal("connect");
|
||||||
unity_wait_for_signal("tsens test done");
|
unity_wait_for_signal("tsens test done");
|
@ -80,7 +80,6 @@ INPUT = \
|
|||||||
$(PROJECT_PATH)/components/driver/parlio/include/driver/parlio_tx.h \
|
$(PROJECT_PATH)/components/driver/parlio/include/driver/parlio_tx.h \
|
||||||
$(PROJECT_PATH)/components/driver/parlio/include/driver/parlio_types.h \
|
$(PROJECT_PATH)/components/driver/parlio/include/driver/parlio_types.h \
|
||||||
$(PROJECT_PATH)/components/driver/sigma_delta/include/driver/sdm.h \
|
$(PROJECT_PATH)/components/driver/sigma_delta/include/driver/sdm.h \
|
||||||
$(PROJECT_PATH)/components/driver/temperature_sensor/include/driver/temperature_sensor.h \
|
|
||||||
$(PROJECT_PATH)/components/driver/touch_sensor/include/driver/touch_sensor_common.h \
|
$(PROJECT_PATH)/components/driver/touch_sensor/include/driver/touch_sensor_common.h \
|
||||||
$(PROJECT_PATH)/components/driver/twai/include/driver/twai.h \
|
$(PROJECT_PATH)/components/driver/twai/include/driver/twai.h \
|
||||||
$(PROJECT_PATH)/components/driver/uart/include/driver/uart.h \
|
$(PROJECT_PATH)/components/driver/uart/include/driver/uart.h \
|
||||||
@ -143,6 +142,7 @@ INPUT = \
|
|||||||
$(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_master.h \
|
$(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_master.h \
|
||||||
$(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_slave_hd.h \
|
$(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_slave_hd.h \
|
||||||
$(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_slave.h \
|
$(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_slave.h \
|
||||||
|
$(PROJECT_PATH)/components/esp_driver_tsens/include/driver/temperature_sensor.h \
|
||||||
$(PROJECT_PATH)/components/esp_eth/include/esp_eth_com.h \
|
$(PROJECT_PATH)/components/esp_eth/include/esp_eth_com.h \
|
||||||
$(PROJECT_PATH)/components/esp_eth/include/esp_eth_driver.h \
|
$(PROJECT_PATH)/components/esp_eth/include/esp_eth_driver.h \
|
||||||
$(PROJECT_PATH)/components/esp_eth/include/esp_eth_mac.h \
|
$(PROJECT_PATH)/components/esp_eth/include/esp_eth_mac.h \
|
||||||
|
@ -17,6 +17,7 @@ In order to control the dependence of other components on drivers at a smaller g
|
|||||||
- `esp_driver_i2s` - Driver for I2S
|
- `esp_driver_i2s` - Driver for I2S
|
||||||
- `esp_driver_dac` - Driver for DAC
|
- `esp_driver_dac` - Driver for DAC
|
||||||
- `esp_driver_rmt` - Driver for RMT
|
- `esp_driver_rmt` - Driver for RMT
|
||||||
|
- `esp_driver_tsens` - Driver for Temperature Sensor
|
||||||
|
|
||||||
For compatibility, the original `driver`` component is still treated as an all-in-one component by registering these `esp_driver_xyz`` components as its public dependencies. In other words, you do not need to modify the CMake file of an existing project, but you now have a way to specify the specific peripheral driver that your project depends on.
|
For compatibility, the original `driver`` component is still treated as an all-in-one component by registering these `esp_driver_xyz`` components as its public dependencies. In other words, you do not need to modify the CMake file of an existing project, but you now have a way to specify the specific peripheral driver that your project depends on.
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
- `esp_driver_i2s` - I2S 驱动
|
- `esp_driver_i2s` - I2S 驱动
|
||||||
- `esp_driver_dac` - DAC 驱动
|
- `esp_driver_dac` - DAC 驱动
|
||||||
- `esp_driver_rmt` - RMT 驱动
|
- `esp_driver_rmt` - RMT 驱动
|
||||||
|
- `esp_driver_tsens` - 温度传感器驱动
|
||||||
|
|
||||||
为了兼容性,原来的 `driver` 组件仍然存在,并作为一个 “all-in-one" 的组件,将以上这些 `esp_driver_xyz` 组件注册成自己的公共依赖。换句话说,你无需修改既有项目的 CMake 文件,但是你现在多了一个途径去指定你项目依赖的具体的外设驱动。
|
为了兼容性,原来的 `driver` 组件仍然存在,并作为一个 “all-in-one" 的组件,将以上这些 `esp_driver_xyz` 组件注册成自己的公共依赖。换句话说,你无需修改既有项目的 CMake 文件,但是你现在多了一个途径去指定你项目依赖的具体的外设驱动。
|
||||||
|
|
||||||
|
@ -322,10 +322,14 @@ examples/peripherals/spi_slave_hd/segment_mode/seg_slave:
|
|||||||
examples/peripherals/temperature_sensor/temp_sensor:
|
examples/peripherals/temperature_sensor/temp_sensor:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_TEMP_SENSOR_SUPPORTED != 1
|
- if: SOC_TEMP_SENSOR_SUPPORTED != 1
|
||||||
|
depends_components:
|
||||||
|
- esp_driver_tsens
|
||||||
|
|
||||||
examples/peripherals/temperature_sensor/temp_sensor_monitor:
|
examples/peripherals/temperature_sensor/temp_sensor_monitor:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_TEMPERATURE_SENSOR_INTR_SUPPORT != 1
|
- if: SOC_TEMPERATURE_SENSOR_INTR_SUPPORT != 1
|
||||||
|
depends_components:
|
||||||
|
- esp_driver_tsens
|
||||||
|
|
||||||
examples/peripherals/timer_group/gptimer:
|
examples/peripherals/timer_group/gptimer:
|
||||||
disable:
|
disable:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user