USB: ensure USB D+ pullup is handled by USB lib

This commit is contained in:
King Kévin 2020-01-04 17:46:35 +01:00
parent 2fb4274ebc
commit a2f83e87b3
3 changed files with 15 additions and 4 deletions

View File

@ -96,10 +96,6 @@ void main(void)
rcc_clock_setup_in_hse_8mhz_out_72mhz(); // start main clock
board_setup(); // setup board to control LED
// setup USB D+ pull-up to indicate USB connect
rcc_periph_clock_enable(GPIO_RCC(DISPLAY_POWER_PIN)); // enable clock for GPIO peripheral
gpio_set_mode(GPIO_PORT(DISPLAY_POWER_PIN), GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO_PIN(DISPLAY_POWER_PIN)); // set pin to output open-drain since it is controlled by pMOS
gpio_clear(GPIO_PORT(DISPLAY_POWER_PIN), GPIO_PIN(DISPLAY_POWER_PIN)); // enable USB D+ pull-up to indicate connection
led_on(); // indicate bootloader started
#if defined(BUSVOODOO)
led_toggle(); // switch from blue to red LED

View File

@ -263,6 +263,11 @@ static void usb_disconnect(void)
rcc_periph_clock_enable(RCC_GPIOB);
gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO6);
gpio_clear(GPIOB, GPIO6);
#elif defined(USB_CABLE_TESTER)
// disable USB D+ pull-up using pMOS
rcc_periph_clock_enable(RCC_GPIOD);
gpio_set_mode(GPIOD, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO13);
gpio_set(GPIOD, GPIO13);
#endif
// pull USB D+ low for a short while
rcc_periph_clock_enable(RCC_GPIOA);
@ -459,6 +464,11 @@ void usb_cdcacm_setup(void)
rcc_periph_clock_enable(RCC_GPIOB);
gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO6);
gpio_set(GPIOB, GPIO6);
#elif defined(USB_CABLE_TESTER)
// enable USB D+ pull-up using pMOS
rcc_periph_clock_enable(RCC_GPIOD);
gpio_set_mode(GPIOD, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO13);
gpio_clear(GPIOD, GPIO13);
#endif
rcc_periph_clock_enable(RCC_GPIOA); // enable clock for GPIO used for USB
rcc_periph_clock_enable(RCC_USB); // enable clock for USB domain

View File

@ -145,6 +145,11 @@ static void usb_disconnect(void)
rcc_periph_clock_enable(RCC_GPIOB);
gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO6);
gpio_clear(GPIOB, GPIO6);
#elif defined(USB_CABLE_TESTER)
// disable USB D+ pull-up using pMOS
rcc_periph_clock_enable(RCC_GPIOD);
gpio_set_mode(GPIOD, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO13);
gpio_set(GPIOD, GPIO13);
#endif
// pull USB D+ low for a short while
rcc_periph_clock_enable(RCC_GPIOA);