diff --git a/cpu/esp32/Kconfig b/cpu/esp32/Kconfig index 84027323f1..b5eb561ed5 100644 --- a/cpu/esp32/Kconfig +++ b/cpu/esp32/Kconfig @@ -27,6 +27,12 @@ config HAS_ESP_BLE_ESP32 Indicates that the ESP32x SoC uses the SDK Bluetooth LE library for the ESP32 variant. +config HAS_ESP_BLE_ESP32C3 + bool + help + Indicates that the ESP32x SoC uses the SDK Bluetooth LE library + for the ESP32-C3 variant. + config HAS_ESP_HW_COUNTER bool help diff --git a/cpu/esp32/Kconfig.common b/cpu/esp32/Kconfig.common index 43907cc846..35c9ed6016 100644 --- a/cpu/esp32/Kconfig.common +++ b/cpu/esp32/Kconfig.common @@ -15,6 +15,7 @@ config MODULE_ESP_BLE select MODULE_ESP_IDF_BLE select PACKAGE_ESP32_SDK_LIB_PHY select PACKAGE_ESP32_SDK_LIB_BT_ESP32 if HAS_ESP_BLE_ESP32 + select PACKAGE_ESP32_SDK_LIB_BT_ESP32C3 if HAS_ESP_BLE_ESP32C3 config MODULE_ESP_JTAG bool "Enable JTAG debugging interface" diff --git a/cpu/esp32/Kconfig.esp32c3 b/cpu/esp32/Kconfig.esp32c3 index 02ba97a09e..6425c78d45 100644 --- a/cpu/esp32/Kconfig.esp32c3 +++ b/cpu/esp32/Kconfig.esp32c3 @@ -31,6 +31,12 @@ config CPU_FAM_ESP32C3 select CPU_CORE_RV32IMC select HAS_ARCH_ESP32 select HAS_CPU_ESP32 + select HAS_BLE_ADV_EXT + select HAS_BLE_NIMBLE + select HAS_BLE_NIMBLE_NETIF + select HAS_BLE_PHY_2MBIT + select HAS_ESP_BLE + select HAS_ESP_BLE_ESP32C3 select HAS_ESP_WIFI_ENTERPRISE select HAS_PUF_SRAM diff --git a/cpu/esp32/Makefile.dep b/cpu/esp32/Makefile.dep index 2992395d42..9a324858f3 100644 --- a/cpu/esp32/Makefile.dep +++ b/cpu/esp32/Makefile.dep @@ -25,6 +25,9 @@ ifneq (,$(filter esp_ble,$(USEMODULE))) ifeq (esp32,$(CPU_FAM)) FEATURES_REQUIRED += esp_ble_esp32 USEPKG += esp32_sdk_lib_bt_esp32 + else ifeq (esp32c3,$(CPU_FAM)) + FEATURES_REQUIRED += esp_ble_esp32c3 + USEPKG += esp32_sdk_lib_bt_esp32c3 endif endif diff --git a/cpu/esp32/Makefile.features b/cpu/esp32/Makefile.features index 5b4ee17c9c..f077eb35da 100644 --- a/cpu/esp32/Makefile.features +++ b/cpu/esp32/Makefile.features @@ -28,6 +28,13 @@ ifeq (esp32,$(CPU_FAM)) FEATURES_PROVIDED += ble_nimble_netif FEATURES_PROVIDED += esp_ble FEATURES_PROVIDED += esp_ble_esp32 +else ifeq (esp32c3,$(CPU_FAM)) + FEATURES_PROVIDED += ble_adv_ext + FEATURES_PROVIDED += ble_nimble + FEATURES_PROVIDED += ble_nimble_netif + FEATURES_PROVIDED += ble_phy_2mbit + FEATURES_PROVIDED += esp_ble + FEATURES_PROVIDED += esp_ble_esp32c3 endif ifneq (,$(filter esp32-wrover% esp32s2%r2 esp32s3%r2 esp32s3%r8 esp32s3%r8v,$(CPU_MODEL))) diff --git a/cpu/esp32/Makefile.include b/cpu/esp32/Makefile.include index a810093989..9de0c32bdb 100644 --- a/cpu/esp32/Makefile.include +++ b/cpu/esp32/Makefile.include @@ -161,10 +161,10 @@ endif LINKFLAGS += -L$(RIOTCPU)/$(CPU)/ld/$(CPU_FAM)/ -ifeq (,$(filter esp_ble,$(USEMODULE))) - LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/$(CPU_FAM)/memory.ld -else +ifneq (,$(filter esp32_sdk_lib_bt_esp32,$(USEPKG))) LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/$(CPU_FAM)/memory_bt.ld +else + LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/$(CPU_FAM)/memory.ld endif LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/$(CPU_FAM)/sections.ld @@ -216,6 +216,8 @@ ifneq (,$(filter esp_ble,$(USEMODULE))) ARCHIVES += -lphy -lstdc++ ifeq (esp32,$(CPU_FAM)) ARCHIVES += -lrtc + else ifeq (esp32c3,$(CPU_FAM)) + ARCHIVES += -lbtbb endif endif diff --git a/cpu/esp32/doc.txt b/cpu/esp32/doc.txt index d543b39f85..79145f3add 100644 --- a/cpu/esp32/doc.txt +++ b/cpu/esp32/doc.txt @@ -241,7 +241,7 @@ The key features of ESP32-C3 are: | SPIs | 3 | yes (1) | | UARTs | 2 | yes | | WiFi | IEEE 802.11 b/g/n built in | yes | -| Bluetooth | Bluetooth 5 (LE) | no | +| Bluetooth | Bluetooth 5 (LE) | yes | | Ethernet | - | - | | CAN | version 2.0 | yes | | IR | up to 4 channels TX/RX | - | diff --git a/cpu/esp32/include/sdkconfig.h b/cpu/esp32/include/sdkconfig.h index 8f9b98160f..fe62dc58f2 100644 --- a/cpu/esp32/include/sdkconfig.h +++ b/cpu/esp32/include/sdkconfig.h @@ -108,7 +108,6 @@ #define CONFIG_BT_CONTROLLER_ONLY 1 #else #define CONFIG_BT_ENABLED 0 -#define CONFIG_BTDM_RESERVE_DRAM 0 #endif /** diff --git a/cpu/esp32/include/sdkconfig_esp32c3.h b/cpu/esp32/include/sdkconfig_esp32c3.h index eac3d286d8..28afc09fb5 100644 --- a/cpu/esp32/include/sdkconfig_esp32c3.h +++ b/cpu/esp32/include/sdkconfig_esp32c3.h @@ -94,6 +94,44 @@ extern "C" { #define CONFIG_ESP_SLEEP_POWER_DOWN_FLASH 1 #define CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND 1 +/** + * ESP32-C3 BLE driver configuration (DO NOT CHANGE) + */ +#ifdef MODULE_ESP_BLE +#define CONFIG_BT_CTRL_ADV_DUP_FILT_MAX 30 +#define CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD 20 +#define CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM 100 +#define CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP 1 +#define CONFIG_BT_CTRL_BLE_MAX_ACT 10 +#define CONFIG_BT_CTRL_BLE_MAX_ACT_EFF 10 +#define CONFIG_BT_CTRL_BLE_SCAN_DUPL 1 +#define CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB 0 +#define CONFIG_BT_CTRL_CE_LENGTH_TYPE_EFF 0 +#define CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG 1 +#define CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS 1 +#define CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF 0 +#define CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF 10 +#define CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P3 1 +#define CONFIG_BT_CTRL_HCI_MODE_VHCI 1 +#define CONFIG_BT_CTRL_HCI_TL 1 +#define CONFIG_BT_CTRL_HCI_TL_EFF 1 +#define CONFIG_BT_CTRL_HW_CCA_EFF 0 +#define CONFIG_BT_CTRL_HW_CCA_VAL 20 +#define CONFIG_BT_CTRL_MODE_EFF 1 +#define CONFIG_BT_CTRL_PINNED_TO_CORE 0 +#define CONFIG_BT_CTRL_RX_ANTENNA_INDEX_0 1 +#define CONFIG_BT_CTRL_RX_ANTENNA_INDEX_EFF 0 +#define CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE 100 +#define CONFIG_BT_CTRL_SCAN_DUPL_TYPE 0 +#define CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DEVICE 1 +#define CONFIG_BT_CTRL_SLEEP_CLOCK_EFF 0 +#define CONFIG_BT_CTRL_SLEEP_MODE_EFF 0 +#define CONFIG_BT_CTRL_TX_ANTENNA_INDEX_0 1 +#define CONFIG_BT_CTRL_TX_ANTENNA_INDEX_EFF 0 +#define CONFIG_BT_ENABLED 1 +#define CONFIG_BT_SOC_SUPPORT_5_0 1 +#endif + #ifdef __cplusplus } #endif