mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-28 16:20:26 +00:00
correctly set turn around according to cpu clock
help to run with low speed mcu
This commit is contained in:
parent
77315ba7ce
commit
e3974d6869
@ -255,8 +255,33 @@ static void set_turnaround(USB_OTG_GlobalTypeDef * usb_otg, tusb_speed_t speed)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Turnaround timeout depends on the MCU clock
|
||||||
|
extern uint32_t SystemCoreClock;
|
||||||
|
uint32_t turnaround;
|
||||||
|
|
||||||
|
if ( SystemCoreClock >= 32000000U )
|
||||||
|
turnaround = 0x6U;
|
||||||
|
else if ( SystemCoreClock >= 27500000U )
|
||||||
|
turnaround = 0x7U;
|
||||||
|
else if ( SystemCoreClock >= 24000000U )
|
||||||
|
turnaround = 0x8U;
|
||||||
|
else if ( SystemCoreClock >= 21800000U )
|
||||||
|
turnaround = 0x9U;
|
||||||
|
else if ( SystemCoreClock >= 20000000U )
|
||||||
|
turnaround = 0xAU;
|
||||||
|
else if ( SystemCoreClock >= 18500000U )
|
||||||
|
turnaround = 0xBU;
|
||||||
|
else if ( SystemCoreClock >= 17200000U )
|
||||||
|
turnaround = 0xCU;
|
||||||
|
else if ( SystemCoreClock >= 16000000U )
|
||||||
|
turnaround = 0xDU;
|
||||||
|
else if ( SystemCoreClock >= 15000000U )
|
||||||
|
turnaround = 0xEU;
|
||||||
|
else
|
||||||
|
turnaround = 0xFU;
|
||||||
|
|
||||||
// Fullspeed depends on MCU clocks, but we will use 0x06 for 32+ Mhz
|
// Fullspeed depends on MCU clocks, but we will use 0x06 for 32+ Mhz
|
||||||
usb_otg->GUSBCFG |= (0x06 << USB_OTG_GUSBCFG_TRDT_Pos);
|
usb_otg->GUSBCFG |= (turnaround << USB_OTG_GUSBCFG_TRDT_Pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user