fix usb issue with latest idf
This commit is contained in:
parent
b7ed18d622
commit
e1fc85c56b
@ -271,7 +271,7 @@ menuconfig: $(BUILD)/esp-idf/config
|
|||||||
$(HEADER_BUILD)/qstr.i.last: | $(BUILD)/esp-idf/config/sdkconfig.h
|
$(HEADER_BUILD)/qstr.i.last: | $(BUILD)/esp-idf/config/sdkconfig.h
|
||||||
|
|
||||||
# Order here matters
|
# Order here matters
|
||||||
ESP_IDF_COMPONENTS_LINK = freertos log esp_system esp32s2 bootloader_support pthread esp_timer vfs spi_flash app_update esp_common esp32s2 heap newlib driver xtensa soc esp_ringbuf esp_wifi esp_event wpa_supplicant mbedtls efuse nvs_flash esp_netif lwip esp_rom esp-tls
|
ESP_IDF_COMPONENTS_LINK = freertos log hal esp_system esp32s2 bootloader_support pthread esp_timer vfs spi_flash app_update esp_common esp32s2 heap newlib driver xtensa soc esp_ringbuf esp_wifi esp_event wpa_supplicant mbedtls efuse nvs_flash esp_netif lwip esp_rom esp-tls
|
||||||
|
|
||||||
ESP_IDF_COMPONENTS_INCLUDE = driver freertos log soc
|
ESP_IDF_COMPONENTS_INCLUDE = driver freertos log soc
|
||||||
|
|
||||||
@ -283,11 +283,11 @@ ESP_IDF_WIFI_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_WIFI_COMPONENT
|
|||||||
MBEDTLS_COMPONENTS_LINK = crypto tls x509
|
MBEDTLS_COMPONENTS_LINK = crypto tls x509
|
||||||
MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a)
|
MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a)
|
||||||
|
|
||||||
BINARY_BLOBS = esp-idf/components/xtensa/esp32s2/libhal.a
|
BINARY_BLOBS = esp-idf/components/xtensa/esp32s2/libxt_hal.a
|
||||||
BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a librtc.a libsmartconfig.a libphy.a
|
BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a librtc.a libsmartconfig.a libphy.a
|
||||||
BINARY_BLOBS += $(addprefix esp-idf/components/esp_wifi/lib/esp32s2/, $(BINARY_WIFI_BLOBS))
|
BINARY_BLOBS += $(addprefix esp-idf/components/esp_wifi/lib/esp32s2/, $(BINARY_WIFI_BLOBS))
|
||||||
|
|
||||||
ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/soc/soc/esp32s2/libsoc_esp32s2.a esp-idf/components/xtensa/esp32s2/libhal.a
|
ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/soc/soc/esp32s2/libsoc_esp32s2.a esp-idf/components/xtensa/esp32s2/libxt_hal.a
|
||||||
ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/esp32s2/esp32s2_out.ld $(BUILD)/esp-idf/esp-idf/esp32s2/ld/esp32s2.project.ld
|
ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/esp32s2/esp32s2_out.ld $(BUILD)/esp-idf/esp-idf/esp32s2/ld/esp32s2.project.ld
|
||||||
|
|
||||||
FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE)
|
FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE)
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
#include "components/driver/include/driver/periph_ctrl.h"
|
#include "components/driver/include/driver/periph_ctrl.h"
|
||||||
#include "components/driver/include/driver/gpio.h"
|
#include "components/driver/include/driver/gpio.h"
|
||||||
#include "components/esp_rom/include/esp32s2/rom/gpio.h"
|
#include "components/esp_rom/include/esp32s2/rom/gpio.h"
|
||||||
|
#include "components/esp_rom/include/esp_rom_gpio.h"
|
||||||
|
#include "components/hal/esp32s2/include/hal/gpio_ll.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
@ -68,6 +70,33 @@ void usb_device_task(void* param)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void configure_pins (usb_hal_context_t *usb)
|
||||||
|
{
|
||||||
|
/* usb_periph_iopins currently configures USB_OTG as USB Device.
|
||||||
|
* Introduce additional parameters in usb_hal_context_t when adding support
|
||||||
|
* for USB Host.
|
||||||
|
*/
|
||||||
|
for ( const usb_iopin_dsc_t *iopin = usb_periph_iopins; iopin->pin != -1; ++iopin ) {
|
||||||
|
if ( (usb->use_external_phy) || (iopin->ext_phy_only == 0) ) {
|
||||||
|
esp_rom_gpio_pad_select_gpio(iopin->pin);
|
||||||
|
if ( iopin->is_output ) {
|
||||||
|
esp_rom_gpio_connect_out_signal(iopin->pin, iopin->func, false, false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
esp_rom_gpio_connect_in_signal(iopin->pin, iopin->func, false);
|
||||||
|
if ( (iopin->pin != GPIO_FUNC_IN_LOW) && (iopin->pin != GPIO_FUNC_IN_HIGH) ) {
|
||||||
|
gpio_ll_input_enable(&GPIO, iopin->pin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
esp_rom_gpio_pad_unhold(iopin->pin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( !usb->use_external_phy ) {
|
||||||
|
gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
|
||||||
|
gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void init_usb_hardware(void) {
|
void init_usb_hardware(void) {
|
||||||
periph_module_reset(PERIPH_USB_MODULE);
|
periph_module_reset(PERIPH_USB_MODULE);
|
||||||
periph_module_enable(PERIPH_USB_MODULE);
|
periph_module_enable(PERIPH_USB_MODULE);
|
||||||
@ -75,10 +104,7 @@ void init_usb_hardware(void) {
|
|||||||
.use_external_phy = false // use built-in PHY
|
.use_external_phy = false // use built-in PHY
|
||||||
};
|
};
|
||||||
usb_hal_init(&hal);
|
usb_hal_init(&hal);
|
||||||
|
configure_pins(&hal);
|
||||||
// Initialize the pin drive strength.
|
|
||||||
gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
|
|
||||||
gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
|
|
||||||
|
|
||||||
(void) xTaskCreateStatic(usb_device_task,
|
(void) xTaskCreateStatic(usb_device_task,
|
||||||
"usbd",
|
"usbd",
|
||||||
|
Loading…
Reference in New Issue
Block a user