mirror of
https://github.com/micropython/micropython.git
synced 2025-12-03 10:34:54 +00:00
esp32: Add support for ESP32-P4.
This commit adds support for ESP32-P4 SoCs. Signed-off-by: Vincent1-python <pywei201209@163.com> Signed-off-by: Angus Gratton <angus@redyak.com.au> Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
committed by
Damien George
parent
604cda5d54
commit
e6f1f78713
@@ -6,7 +6,7 @@ microcontrollers. It uses the ESP-IDF framework and MicroPython runs as
|
||||
a task under FreeRTOS.
|
||||
|
||||
Currently supports ESP32, ESP32-C2 (aka ESP8684), ESP32-C3, ESP32-C5, ESP32-C6,
|
||||
ESP32-S2 and ESP32-S3. ESP8266 is supported by a separate MicroPython port.
|
||||
ESP32-P4, ESP32-S2 and ESP32-S3. ESP8266 is supported by a separate MicroPython port.
|
||||
|
||||
Supported features include:
|
||||
- REPL (Python prompt) over UART0 and/or the integrated USB peripheral.
|
||||
|
||||
@@ -7,8 +7,8 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools"))
|
||||
import boardgen
|
||||
|
||||
|
||||
# Pins start at zero, and the highest pin index on any ESP32* chip is 48.
|
||||
NUM_GPIOS = 49
|
||||
# Pins start at zero, and the highest pin index on any ESP32* chip is 54.
|
||||
NUM_GPIOS = 55
|
||||
|
||||
|
||||
class Esp32Pin(boardgen.Pin):
|
||||
|
||||
15
ports/esp32/boards/sdkconfig.p4
Normal file
15
ports/esp32/boards/sdkconfig.p4
Normal file
@@ -0,0 +1,15 @@
|
||||
# Flash
|
||||
CONFIG_FLASHMODE_QIO=y
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
|
||||
|
||||
# Memory
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_MEMTEST=
|
||||
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
|
||||
CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC=y
|
||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=50768
|
||||
|
||||
# ULP: not fixed
|
||||
CONFIG_SOC_ULP_SUPPORTED=n
|
||||
CONFIG_ULP_COPROC_ENABLED=n
|
||||
CONFIG_ULP_COPROC_TYPE_FSM=n
|
||||
2
ports/esp32/boards/sdkconfig.p4_wifi_c5
Normal file
2
ports/esp32/boards/sdkconfig.p4_wifi_c5
Normal file
@@ -0,0 +1,2 @@
|
||||
# Most settings are in sdkconfig.p4_wifi_common
|
||||
CONFIG_SLAVE_IDF_TARGET_ESP32C5=y
|
||||
2
ports/esp32/boards/sdkconfig.p4_wifi_c6
Normal file
2
ports/esp32/boards/sdkconfig.p4_wifi_c6
Normal file
@@ -0,0 +1,2 @@
|
||||
# Most settings are in sdkconfig.p4_wifi_common
|
||||
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
|
||||
59
ports/esp32/boards/sdkconfig.p4_wifi_common
Normal file
59
ports/esp32/boards/sdkconfig.p4_wifi_common
Normal file
@@ -0,0 +1,59 @@
|
||||
# This sdkconfig file has the common settings for an ESP32-P4
|
||||
# host with an external ESP-Hosted Wi-Fi/BT interface.
|
||||
|
||||
# Wifi
|
||||
CONFIG_ESP_HOSTED_ENABLED=y
|
||||
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16
|
||||
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64
|
||||
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64
|
||||
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP_WIFI_TX_BA_WIN=32
|
||||
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
|
||||
CONFIG_ESP_WIFI_RX_BA_WIN=32
|
||||
|
||||
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534
|
||||
CONFIG_LWIP_TCP_WND_DEFAULT=65534
|
||||
CONFIG_LWIP_TCP_RECVMBOX_SIZE=64
|
||||
CONFIG_LWIP_UDP_RECVMBOX_SIZE=64
|
||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64
|
||||
|
||||
CONFIG_LWIP_TCP_SACK_OUT=y
|
||||
|
||||
# Bluetooth Support
|
||||
CONFIG_ESP_HOSTED_ENABLE_BT_BLUEDROID=y
|
||||
CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y
|
||||
CONFIG_ESP_HOSTED_NIMBLE_HCI_VHCI=y
|
||||
CONFIG_ESP_WIFI_REMOTE_ENABLED=y
|
||||
CONFIG_SLAVE_SOC_WIFI_SUPPORTED=y
|
||||
CONFIG_SLAVE_SOC_WIFI_WAPI_SUPPORT=y
|
||||
CONFIG_SLAVE_SOC_WIFI_CSI_SUPPORT=y
|
||||
CONFIG_SLAVE_SOC_WIFI_MESH_SUPPORT=y
|
||||
CONFIG_SLAVE_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12
|
||||
CONFIG_SLAVE_SOC_WIFI_HW_TSF=y
|
||||
CONFIG_SLAVE_SOC_WIFI_FTM_SUPPORT=y
|
||||
CONFIG_SLAVE_FREERTOS_UNICORE=y
|
||||
CONFIG_SLAVE_SOC_WIFI_GCMP_SUPPORT=y
|
||||
CONFIG_SLAVE_IDF_TARGET_ARCH_RISCV=y
|
||||
CONFIG_SLAVE_SOC_WIFI_HE_SUPPORT=y
|
||||
CONFIG_SLAVE_SOC_WIFI_MAC_VERSION_NUM=2
|
||||
CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y
|
||||
|
||||
CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y
|
||||
|
||||
# BLE
|
||||
CONFIG_ESP_ENABLE_BT=y
|
||||
CONFIG_BT_ENABLED=y
|
||||
CONFIG_BT_NIMBLE_ENABLED=y
|
||||
CONFIG_BT_CONTROLLER_DISABLED=y
|
||||
CONFIG_BT_BLUEDROID_ENABLED=n
|
||||
CONFIG_BT_NIMBLE_TRANSPORT_UART=n
|
||||
CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR=y
|
||||
|
||||
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="MPY ESP32"
|
||||
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=4
|
||||
|
||||
CONFIG_BT_HCI_LOG_DEBUG_EN=y
|
||||
|
||||
# Increase NimBLE task stack size from the default, because Python code
|
||||
# (BLE IRQ handlers) will most likely run on this task.
|
||||
CONFIG_BT_NIMBLE_TASK_STACK_SIZE=6144
|
||||
@@ -23,7 +23,7 @@ if(CONFIG_IDF_TARGET_ARCH_RISCV)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED MICROPY_PY_TINYUSB)
|
||||
if(CONFIG_IDF_TARGET_ESP32S2 OR CONFIG_IDF_TARGET_ESP32S3)
|
||||
if(CONFIG_IDF_TARGET_ESP32S2 OR CONFIG_IDF_TARGET_ESP32S3 OR CONFIG_IDF_TARGET_ESP32P4)
|
||||
set(MICROPY_PY_TINYUSB ON)
|
||||
endif()
|
||||
endif()
|
||||
@@ -167,6 +167,7 @@ list(APPEND IDF_COMPONENTS
|
||||
esp_adc
|
||||
esp_app_format
|
||||
esp_common
|
||||
esp_driver_touch_sens
|
||||
esp_eth
|
||||
esp_event
|
||||
esp_hw_support
|
||||
|
||||
@@ -30,6 +30,6 @@ direct_dependencies:
|
||||
- espressif/lan867x
|
||||
- espressif/mdns
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32
|
||||
version: 2.0.0
|
||||
|
||||
@@ -16,6 +16,6 @@ dependencies:
|
||||
direct_dependencies:
|
||||
- espressif/mdns
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32c2
|
||||
version: 2.0.0
|
||||
|
||||
@@ -16,6 +16,6 @@ dependencies:
|
||||
direct_dependencies:
|
||||
- espressif/mdns
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32c3
|
||||
version: 2.0.0
|
||||
|
||||
@@ -16,6 +16,6 @@ dependencies:
|
||||
direct_dependencies:
|
||||
- espressif/mdns
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32c5
|
||||
version: 2.0.0
|
||||
|
||||
@@ -16,6 +16,6 @@ dependencies:
|
||||
direct_dependencies:
|
||||
- espressif/mdns
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32c6
|
||||
version: 2.0.0
|
||||
|
||||
93
ports/esp32/lockfiles/dependencies.lock.esp32p4
Normal file
93
ports/esp32/lockfiles/dependencies.lock.esp32p4
Normal file
@@ -0,0 +1,93 @@
|
||||
dependencies:
|
||||
espressif/eppp_link:
|
||||
component_hash: 41f6519edda527ec6a0553c872ebaf8fc6d3812523c9d4c8d1660ad21c720abe
|
||||
dependencies:
|
||||
- name: espressif/esp_serial_slave_link
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.1.0
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.2'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.1.3
|
||||
espressif/esp_hosted:
|
||||
component_hash: f32400eec7f35652052ae79ecb301148d4011769e94eb8d47262fb22fce933d2
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.3'
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 2.2.4
|
||||
espressif/esp_serial_slave_link:
|
||||
component_hash: ac1776806de0a6e371c84e87898bb983e19ce62aa7f1e2e5c4a3b0234a575d2c
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.1.2
|
||||
espressif/esp_wifi_remote:
|
||||
component_hash: 4ed1ebe454d63ddb4a91bbd8db74a6f883c85a863db1f79770c57fbd2e5c134c
|
||||
dependencies:
|
||||
- name: espressif/eppp_link
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: '>=0.1'
|
||||
- name: espressif/esp_hosted
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target in [esp32h2, esp32p4]
|
||||
version: '>=0.0.6'
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.3'
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 0.15.2
|
||||
espressif/mdns:
|
||||
component_hash: 46ee81d32fbf850462d8af1e83303389602f6a6a9eddd2a55104cb4c063858ed
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 1.1.0
|
||||
espressif/tinyusb:
|
||||
component_hash: ee1c962cff61eb975d508258d509974d58031cc27ff0d6c4117a67a613a49594
|
||||
dependencies:
|
||||
- name: idf
|
||||
version: '>=5.0'
|
||||
source:
|
||||
git: https://github.com/micropython/tinyusb-espressif.git
|
||||
path: .
|
||||
type: git
|
||||
targets:
|
||||
- esp32s2
|
||||
- esp32s3
|
||||
- esp32p4
|
||||
- esp32h4
|
||||
version: e4c0ec3caab3d9c25374de7047653b9ced8f14ff
|
||||
idf:
|
||||
source:
|
||||
type: idf
|
||||
version: 5.5.1
|
||||
direct_dependencies:
|
||||
- espressif/esp_hosted
|
||||
- espressif/esp_wifi_remote
|
||||
- espressif/mdns
|
||||
- espressif/tinyusb
|
||||
- idf
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32p4
|
||||
version: 2.0.0
|
||||
@@ -32,6 +32,6 @@ direct_dependencies:
|
||||
- espressif/mdns
|
||||
- espressif/tinyusb
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32s2
|
||||
version: 2.0.0
|
||||
|
||||
@@ -32,6 +32,6 @@ direct_dependencies:
|
||||
- espressif/mdns
|
||||
- espressif/tinyusb
|
||||
- idf
|
||||
manifest_hash: da32add5eb5e196ac97a99eb579025222ec572f5db4038873fbf9d3b9d6ed5a3
|
||||
manifest_hash: cc42b6ea8bc1d77d04370604f0b1c1a93a4f2c9b9200690722458faedaee68a4
|
||||
target: esp32s3
|
||||
version: 2.0.0
|
||||
|
||||
@@ -136,6 +136,21 @@ static const machine_adc_obj_t madc_obj[] = {
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_7, GPIO_NUM_18},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_8, GPIO_NUM_19},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_9, GPIO_NUM_20},
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_0, GPIO_NUM_16},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_1, GPIO_NUM_17},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_2, GPIO_NUM_18},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_3, GPIO_NUM_19},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_4, GPIO_NUM_20},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_5, GPIO_NUM_21},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_6, GPIO_NUM_22},
|
||||
{{&machine_adc_type}, ADCBLOCK1, ADC_CHANNEL_7, GPIO_NUM_23},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_0, GPIO_NUM_49},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_1, GPIO_NUM_50},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_2, GPIO_NUM_51},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_3, GPIO_NUM_52},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_4, GPIO_NUM_53},
|
||||
{{&machine_adc_type}, ADCBLOCK2, ADC_CHANNEL_5, GPIO_NUM_54},
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -73,6 +73,10 @@
|
||||
#define MICROPY_HW_SPI2_SCK (36)
|
||||
#define MICROPY_HW_SPI2_MOSI (35)
|
||||
#define MICROPY_HW_SPI2_MISO (37)
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
#define MICROPY_HW_SPI2_SCK (43)
|
||||
#define MICROPY_HW_SPI2_MOSI (44)
|
||||
#define MICROPY_HW_SPI2_MISO (39)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#define GPIO_FIRST_NON_OUTPUT (34)
|
||||
#elif CONFIG_IDF_TARGET_ESP32S2
|
||||
#define GPIO_FIRST_NON_OUTPUT (46)
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
#define GPIO_FIRST_NON_OUTPUT (54)
|
||||
#endif
|
||||
|
||||
// Return the gpio_num_t index for a given machine_pin_obj_t pointer.
|
||||
|
||||
@@ -216,6 +216,66 @@
|
||||
#define MICROPY_HW_ENABLE_GPIO47 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO48 (1)
|
||||
#endif
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
#define MICROPY_HW_ENABLE_GPIO0 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO1 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO2 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO3 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO4 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO5 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO6 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO7 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO8 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO9 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO10 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO11 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO12 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO13 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO14 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO15 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO16 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO17 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO18 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO19 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO20 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO21 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO22 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO23 (1)
|
||||
#if !MICROPY_HW_ESP_USB_SERIAL_JTAG
|
||||
// Note: ESP32-P4 can switch USJ to 26/27 instead, but
|
||||
// this isn't supported
|
||||
#define MICROPY_HW_ENABLE_GPIO24 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO25 (1)
|
||||
#endif
|
||||
#define MICROPY_HW_ENABLE_GPIO26 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO27 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO28 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO29 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO30 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO31 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO32 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO33 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO34 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO35 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO36 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO37 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO38 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO39 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO40 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO41 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO42 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO43 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO44 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO45 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO46 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO47 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO48 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO49 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO50 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO51 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO52 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO53 (1)
|
||||
#define MICROPY_HW_ENABLE_GPIO54 (1)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -47,6 +47,9 @@
|
||||
|
||||
#define TIMER_FLAGS 0
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
static uint8_t __DECLARE_RCC_ATOMIC_ENV __attribute__ ((unused));
|
||||
#endif
|
||||
const mp_obj_type_t machine_timer_type;
|
||||
|
||||
static mp_obj_t machine_timer_init_helper(machine_timer_obj_t *self, mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args);
|
||||
|
||||
@@ -41,8 +41,11 @@
|
||||
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1 // ESP32 only
|
||||
#include "driver/touch_pad.h"
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 2 // All other SoCs with touch, to date
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 2 // most ESP32
|
||||
#include "driver/touch_sensor.h"
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 3 // At present, it can only be used on ESP32P4.
|
||||
#include "driver/touch_sens.h"
|
||||
#include "soc/touch_sensor_channel.h"
|
||||
#else
|
||||
#error "Unknown touch hardware version"
|
||||
#endif
|
||||
@@ -50,9 +53,18 @@
|
||||
typedef struct _mtp_obj_t {
|
||||
mp_obj_base_t base;
|
||||
gpio_num_t gpio_id;
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1 || SOC_TOUCH_SENSOR_VERSION == 2
|
||||
touch_pad_t touchpad_id;
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 3
|
||||
int touchpad_id;
|
||||
#endif
|
||||
} mtp_obj_t;
|
||||
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 3
|
||||
static touch_sensor_handle_t touch_sens_handle;
|
||||
static touch_channel_handle_t touch_chan_handle[15];
|
||||
#endif
|
||||
|
||||
static const mtp_obj_t touchpad_obj[] = {
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
{{&machine_touchpad_type}, GPIO_NUM_4, TOUCH_PAD_NUM0},
|
||||
@@ -80,6 +92,21 @@ static const mtp_obj_t touchpad_obj[] = {
|
||||
{{&machine_touchpad_type}, GPIO_NUM_12, TOUCH_PAD_NUM12},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_13, TOUCH_PAD_NUM13},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_14, TOUCH_PAD_NUM14},
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
{{&machine_touchpad_type}, GPIO_NUM_2, TOUCH_PAD_GPIO2_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_3, TOUCH_PAD_GPIO3_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_4, TOUCH_PAD_GPIO4_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_5, TOUCH_PAD_GPIO5_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_6, TOUCH_PAD_GPIO6_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_7, TOUCH_PAD_GPIO7_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_8, TOUCH_PAD_GPIO8_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_9, TOUCH_PAD_GPIO9_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_10, TOUCH_PAD_GPIO10_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_11, TOUCH_PAD_GPIO11_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_12, TOUCH_PAD_GPIO12_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_13, TOUCH_PAD_GPIO13_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_14, TOUCH_PAD_GPIO14_CHANNEL},
|
||||
{{&machine_touchpad_type}, GPIO_NUM_15, TOUCH_PAD_GPIO15_CHANNEL},
|
||||
#else
|
||||
#error "Please add GPIO mapping for this SoC"
|
||||
#endif
|
||||
@@ -102,14 +129,45 @@ static mp_obj_t mtp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_
|
||||
|
||||
static int initialized = 0;
|
||||
if (!initialized) {
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1 || SOC_TOUCH_SENSOR_VERSION == 2
|
||||
touch_pad_init();
|
||||
touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 3
|
||||
touch_sensor_sample_config_t sample_cfg[1] = {
|
||||
TOUCH_SENSOR_V3_DEFAULT_SAMPLE_CONFIG(1, 1, 1),
|
||||
};
|
||||
touch_sensor_config_t sens_cfg = TOUCH_SENSOR_DEFAULT_BASIC_CONFIG(1, sample_cfg);
|
||||
check_esp_err(touch_sensor_new_controller(&sens_cfg, &touch_sens_handle));
|
||||
touch_sensor_filter_config_t filter_cfg = TOUCH_SENSOR_DEFAULT_FILTER_CONFIG();
|
||||
check_esp_err(touch_sensor_config_filter(touch_sens_handle, &filter_cfg));
|
||||
#endif
|
||||
initialized = 1;
|
||||
}
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 3
|
||||
else {
|
||||
// Stop the touch controller so a new channel can be added.
|
||||
check_esp_err(touch_sensor_stop_continuous_scanning(touch_sens_handle));
|
||||
check_esp_err(touch_sensor_disable(touch_sens_handle));
|
||||
}
|
||||
#endif
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1
|
||||
esp_err_t err = touch_pad_config(self->touchpad_id, 0);
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 2
|
||||
esp_err_t err = touch_pad_config(self->touchpad_id);
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 3
|
||||
touch_channel_config_t chan_cfg = {
|
||||
.active_thresh = {1000},
|
||||
};
|
||||
esp_err_t err = ESP_OK;
|
||||
if (touch_chan_handle[self->touchpad_id] != NULL) {
|
||||
err = touch_sensor_del_channel(touch_chan_handle[self->touchpad_id]);
|
||||
touch_chan_handle[self->touchpad_id] = NULL;
|
||||
}
|
||||
if (err == ESP_OK) {
|
||||
err = touch_sensor_new_channel(touch_sens_handle, self->touchpad_id, &chan_cfg, &touch_chan_handle[self->touchpad_id]);
|
||||
}
|
||||
check_esp_err(touch_sensor_enable(touch_sens_handle));
|
||||
check_esp_err(touch_sensor_start_continuous_scanning(touch_sens_handle));
|
||||
#endif
|
||||
if (err == ESP_OK) {
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 2
|
||||
@@ -121,6 +179,7 @@ static mp_obj_t mtp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_
|
||||
mp_raise_ValueError(MP_ERROR_TEXT("Touch pad error"));
|
||||
}
|
||||
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1 || SOC_TOUCH_SENSOR_VERSION == 2
|
||||
static mp_obj_t mtp_config(mp_obj_t self_in, mp_obj_t value_in) {
|
||||
mtp_obj_t *self = self_in;
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1
|
||||
@@ -135,6 +194,7 @@ static mp_obj_t mtp_config(mp_obj_t self_in, mp_obj_t value_in) {
|
||||
mp_raise_ValueError(MP_ERROR_TEXT("Touch pad error"));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_2(mtp_config_obj, mtp_config);
|
||||
#endif
|
||||
|
||||
static mp_obj_t mtp_read(mp_obj_t self_in) {
|
||||
mtp_obj_t *self = self_in;
|
||||
@@ -144,6 +204,9 @@ static mp_obj_t mtp_read(mp_obj_t self_in) {
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 2
|
||||
uint32_t value;
|
||||
esp_err_t err = touch_pad_read_raw_data(self->touchpad_id, &value);
|
||||
#elif SOC_TOUCH_SENSOR_VERSION == 3
|
||||
uint32_t value;
|
||||
esp_err_t err = touch_channel_read_data(touch_chan_handle[self->touchpad_id], TOUCH_CHAN_DATA_TYPE_SMOOTH, &value);
|
||||
#endif
|
||||
if (err == ESP_OK) {
|
||||
return MP_OBJ_NEW_SMALL_INT(value);
|
||||
@@ -154,7 +217,9 @@ MP_DEFINE_CONST_FUN_OBJ_1(mtp_read_obj, mtp_read);
|
||||
|
||||
static const mp_rom_map_elem_t mtp_locals_dict_table[] = {
|
||||
// instance methods
|
||||
#if SOC_TOUCH_SENSOR_VERSION == 1 || SOC_TOUCH_SENSOR_VERSION == 2
|
||||
{ MP_ROM_QSTR(MP_QSTR_config), MP_ROM_PTR(&mtp_config_obj) },
|
||||
#endif
|
||||
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&mtp_read_obj) },
|
||||
};
|
||||
|
||||
|
||||
@@ -293,6 +293,14 @@ static void mp_machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args,
|
||||
self->tx = 5;
|
||||
break;
|
||||
#endif
|
||||
#if SOC_UART_HP_NUM > 3
|
||||
case UART_NUM_3:
|
||||
break;
|
||||
#endif
|
||||
#if SOC_UART_HP_NUM > 4
|
||||
case UART_NUM_4:
|
||||
break;
|
||||
#endif
|
||||
case UART_NUM_MAX:
|
||||
assert(0); // Range is checked in mp_machine_uart_make_new, value should be unreachable
|
||||
}
|
||||
|
||||
@@ -108,7 +108,8 @@ void mp_task(void *pvParameter) {
|
||||
#endif
|
||||
#if MICROPY_HW_ESP_USB_SERIAL_JTAG
|
||||
usb_serial_jtag_init();
|
||||
#elif MICROPY_HW_ENABLE_USBDEV
|
||||
#endif
|
||||
#if MICROPY_HW_ENABLE_USBDEV
|
||||
usb_phy_init();
|
||||
#endif
|
||||
#if MICROPY_HW_ENABLE_UART_REPL
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
## IDF Component Manager Manifest File
|
||||
dependencies:
|
||||
espressif/mdns: "~1.1.0"
|
||||
espressif/tinyusb:
|
||||
rules:
|
||||
- if: "target in [esp32s2, esp32s3]"
|
||||
- if: "target in [esp32s2, esp32s3, esp32p4]"
|
||||
# Temporary workaround for https://github.com/hathach/tinyusb/issues/3154
|
||||
# Can be removed once fix is released in espressif/tinyusb
|
||||
git: https://github.com/micropython/tinyusb-espressif.git
|
||||
version: cherrypick/dwc2_zlp_fix
|
||||
espressif/esp_hosted:
|
||||
rules:
|
||||
- if: "target == esp32p4"
|
||||
version: "2.2.4"
|
||||
espressif/esp_wifi_remote:
|
||||
rules:
|
||||
- if: "target == esp32p4"
|
||||
version: "0.15.2"
|
||||
espressif/lan867x:
|
||||
version: "~1.0.0"
|
||||
rules:
|
||||
|
||||
@@ -196,7 +196,7 @@ static mp_obj_t esp32_wake_on_gpio(size_t n_args, const mp_obj_t *pos_args, mp_m
|
||||
}
|
||||
static MP_DEFINE_CONST_FUN_OBJ_KW(esp32_wake_on_gpio_obj, 0, esp32_wake_on_gpio);
|
||||
|
||||
#if !SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP
|
||||
#if SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP && !SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP
|
||||
static mp_obj_t esp32_gpio_deep_sleep_hold(const mp_obj_t enable) {
|
||||
if (mp_obj_is_true(enable)) {
|
||||
gpio_deep_sleep_hold_en();
|
||||
@@ -331,7 +331,7 @@ static const mp_rom_map_elem_t esp32_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_wake_on_ulp), MP_ROM_PTR(&esp32_wake_on_ulp_obj) },
|
||||
#endif
|
||||
{ MP_ROM_QSTR(MP_QSTR_wake_on_gpio), MP_ROM_PTR(&esp32_wake_on_gpio_obj) },
|
||||
#if !SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP
|
||||
#if SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP && !SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP
|
||||
{ MP_ROM_QSTR(MP_QSTR_gpio_deep_sleep_hold), MP_ROM_PTR(&esp32_gpio_deep_sleep_hold_obj) },
|
||||
#endif
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
|
||||
@@ -260,8 +260,12 @@ static mp_int_t mp_machine_reset_cause(void) {
|
||||
}
|
||||
|
||||
#if MICROPY_ESP32_USE_BOOTLOADER_RTC
|
||||
#if !CONFIG_IDF_TARGET_ESP32P4
|
||||
#include "soc/rtc_cntl_reg.h"
|
||||
#include "usb.h"
|
||||
#else
|
||||
#include "soc/lp_system_reg.h"
|
||||
#endif
|
||||
#if CONFIG_IDF_TARGET_ESP32S3
|
||||
#include "esp32s3/rom/usb/usb_dc.h"
|
||||
#include "esp32s3/rom/usb/usb_persist.h"
|
||||
@@ -274,8 +278,13 @@ MP_NORETURN static void machine_bootloader_rtc(void) {
|
||||
usb_dc_prepare_persist();
|
||||
chip_usb_set_persist_flags(USBDC_BOOT_DFU);
|
||||
#endif
|
||||
#if !CONFIG_IDF_TARGET_ESP32P4
|
||||
REG_WRITE(RTC_CNTL_OPTION1_REG, RTC_CNTL_FORCE_DOWNLOAD_BOOT);
|
||||
esp_restart();
|
||||
#else
|
||||
REG_WRITE(LP_SYSTEM_REG_SYS_CTRL_REG, LP_SYSTEM_REG_FORCE_DOWNLOAD_BOOT);
|
||||
esp_restart();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -180,6 +180,8 @@
|
||||
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-esp32c5"
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-esp32c6"
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-esp32p4"
|
||||
#endif
|
||||
#endif
|
||||
#define MICROPY_PY_NETWORK_INCLUDEFILE "ports/esp32/modnetwork.h"
|
||||
@@ -257,6 +259,17 @@
|
||||
#define MICROPY_HW_USB_PRODUCT_FS_STRING "Espressif Device"
|
||||
#endif
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
// By default, ESP32-P4 uses the HS USB PHY (RHPORT1) for TinyUSB
|
||||
// and configures the full speed USB port as USB Serial/JTAG device
|
||||
#ifndef MICROPY_HW_USB_HS
|
||||
#define MICROPY_HW_USB_HS 1
|
||||
#endif // MICROPY_HW_USB_HS
|
||||
#if MICROPY_HW_USB_HS && !defined(CFG_TUSB_RHPORT0_MODE) && !defined(CFG_TUSB_RHPORT1_MODE)
|
||||
#define CFG_TUSB_RHPORT1_MODE (OPT_MODE_DEVICE | OPT_MODE_HIGH_SPEED)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // MICROPY_HW_ENABLE_USBDEV
|
||||
|
||||
// Enable stdio over native USB peripheral CDC via TinyUSB
|
||||
@@ -265,14 +278,14 @@
|
||||
#endif
|
||||
|
||||
// Enable stdio over USB Serial/JTAG peripheral
|
||||
// (SOC_USB_OTG_PERIPH_NUM is only 2 on the ESP32-P4, which supports both native USB & Serial/JTAG simultaneously)
|
||||
#ifndef MICROPY_HW_ESP_USB_SERIAL_JTAG
|
||||
#define MICROPY_HW_ESP_USB_SERIAL_JTAG (SOC_USB_SERIAL_JTAG_SUPPORTED && !MICROPY_HW_USB_CDC)
|
||||
#define MICROPY_HW_ESP_USB_SERIAL_JTAG (SOC_USB_SERIAL_JTAG_SUPPORTED && (!MICROPY_HW_USB_CDC || SOC_USB_OTG_PERIPH_NUM > 1))
|
||||
#endif
|
||||
|
||||
#if MICROPY_HW_USB_CDC && MICROPY_HW_ESP_USB_SERIAL_JTAG
|
||||
#if MICROPY_HW_USB_CDC && MICROPY_HW_ESP_USB_SERIAL_JTAG && (SOC_USB_OTG_PERIPH_NUM <= 1)
|
||||
#error "Invalid build config: Can't enable both native USB and USB Serial/JTAG peripheral"
|
||||
#endif
|
||||
|
||||
// type definitions for the specific machine
|
||||
|
||||
#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void *)((mp_uint_t)(p)))
|
||||
@@ -351,7 +364,7 @@ typedef long mp_off_t;
|
||||
|
||||
#ifndef MICROPY_BOARD_ENTER_BOOTLOADER
|
||||
// RTC has a register to trigger bootloader on these targets
|
||||
#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3
|
||||
#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32P4
|
||||
#define MICROPY_ESP32_USE_BOOTLOADER_RTC (1)
|
||||
#define MICROPY_BOARD_ENTER_BOOTLOADER(nargs, args) machine_bootloader_rtc()
|
||||
#endif
|
||||
|
||||
@@ -182,13 +182,13 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
}
|
||||
|
||||
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32P4
|
||||
eth_esp32_emac_config_t esp32_config = ETH_ESP32_EMAC_DEFAULT_CONFIG();
|
||||
#endif
|
||||
|
||||
esp_eth_mac_t *mac = NULL;
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32P4
|
||||
// Dynamic ref_clk configuration.
|
||||
if (args[ARG_ref_clk_mode].u_int != -1) {
|
||||
// Map the GPIO_MODE constants to EMAC_CLK constants.
|
||||
@@ -223,7 +223,7 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
#endif
|
||||
|
||||
switch (args[ARG_phy_type].u_int) {
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32P4
|
||||
case PHY_LAN8710:
|
||||
case PHY_LAN8720:
|
||||
self->phy = esp_eth_phy_new_lan87xx(&phy_config);
|
||||
@@ -251,7 +251,7 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
self->phy = esp_eth_phy_new_generic(&phy_config);
|
||||
break;
|
||||
#endif
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
#endif // CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32P4
|
||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
case PHY_KSZ8851SNL: {
|
||||
@@ -286,7 +286,7 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
#endif
|
||||
}
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32P4
|
||||
if (!IS_SPI_PHY(args[ARG_phy_type].u_int)) {
|
||||
if (self->mdc_pin == -1 || self->mdio_pin == -1) {
|
||||
mp_raise_ValueError(MP_ERROR_TEXT("mdc and mdio must be specified"));
|
||||
|
||||
@@ -40,6 +40,10 @@
|
||||
|
||||
static void uart_irq_handler(void *arg);
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
static uint8_t __DECLARE_RCC_ATOMIC_ENV __attribute__ ((unused));
|
||||
#endif
|
||||
|
||||
// Declaring the HAL structure on the stack saves a tiny amount of static RAM
|
||||
#define REPL_HAL_DEFN() { .dev = UART_LL_GET_HW(MICROPY_HW_UART_REPL) }
|
||||
|
||||
|
||||
@@ -42,18 +42,17 @@ void usb_phy_init(void) {
|
||||
// ref: https://github.com/espressif/esp-usb/blob/4b6a798d0bed444fff48147c8dcdbbd038e92892/device/esp_tinyusb/tinyusb.c
|
||||
|
||||
// Configure USB PHY
|
||||
usb_phy_config_t phy_conf = {
|
||||
static const usb_phy_config_t phy_conf = {
|
||||
.controller = USB_PHY_CTRL_OTG,
|
||||
.otg_mode = USB_OTG_MODE_DEVICE,
|
||||
.target = USB_PHY_TARGET_INT,
|
||||
};
|
||||
// Internal USB PHY
|
||||
phy_conf.target = USB_PHY_TARGET_INT;
|
||||
|
||||
// Init ESP USB Phy
|
||||
usb_new_phy(&phy_conf, &phy_hdl);
|
||||
}
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32S3
|
||||
#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4
|
||||
void usb_usj_mode(void) {
|
||||
// Switch the USB PHY back to Serial/Jtag mode, disabling OTG support
|
||||
// This should be run before jumping to bootloader.
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
#define MICROPY_HW_USB_MSC_INQUIRY_REVISION_STRING "1.00"
|
||||
#endif
|
||||
|
||||
#ifndef CFG_TUSB_RHPORT0_MODE
|
||||
#if !defined(CFG_TUSB_RHPORT0_MODE) && !defined(CFG_TUSB_RHPORT1_MODE)
|
||||
#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE)
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user