stm32: Add support for USB on G0 MCUs.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George
2023-03-21 17:19:27 +11:00
parent b7ea90d4cb
commit c7923b1139
6 changed files with 91 additions and 44 deletions

View File

@@ -50,6 +50,15 @@
#if MICROPY_HW_ENABLE_USB
#if !MICROPY_HW_USB_IS_MULTI_OTG
#define USE_USB_CNTR_SOFM (1)
#elif defined(STM32G0)
#define USE_USB_CNTR_SOFM (1)
#define USB USB_DRD_FS
#else
#define USE_USB_CNTR_SOFM (0)
#endif
// CDC control commands
#define CDC_SEND_ENCAPSULATED_COMMAND 0x00
#define CDC_GET_ENCAPSULATED_RESPONSE 0x01
@@ -152,7 +161,7 @@ int8_t usbd_cdc_control(usbd_cdc_state_t *cdc_in, uint8_t cmd, uint8_t *pbuf, ui
// configure its serial port (in most cases to disable local echo)
cdc->connect_state = USBD_CDC_CONNECT_STATE_CONNECTING;
usbd_cdc_connect_tx_timer = 8; // wait for 8 SOF IRQs
#if !MICROPY_HW_USB_IS_MULTI_OTG
#if USE_USB_CNTR_SOFM
USB->CNTR |= USB_CNTR_SOFM;
#else
PCD_HandleTypeDef *hpcd = cdc->base.usbd->pdev->pData;
@@ -263,7 +272,7 @@ void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) {
--usbd_cdc_connect_tx_timer;
} else {
usbd_cdc_msc_hid_state_t *usbd = ((USBD_HandleTypeDef *)hpcd->pData)->pClassData;
#if !MICROPY_HW_USB_IS_MULTI_OTG
#if USE_USB_CNTR_SOFM
USB->CNTR &= ~USB_CNTR_SOFM;
#else
hpcd->Instance->GINTMSK &= ~USB_OTG_GINTMSK_SOFM;