Files
micropython/ports/stm32/usbd_conf.h
Damien George 63c94fe73e stm32: Fix init sequence of USB hardware and TinyUSB stack.
This commit fixes the initialization sequence for TinyUSB when enabled on
the stm32 port:

- Following other ports, `mp_usbd_init()` should be called just after
  running `boot.py`, to give the user a chance to configure USB.

- Hardware initialization (via `pyb_usbd_init()`) should only occur once,
  the first time TinyUSB is started up.  This is achieved by adding a hook
  to the shared TinyUSB bindings to call `pyb_usbd_init()`, and only do the
  hardware init if TinyUSB was not already initialized.

Also, `pyb_usbd_init()` is renamed `mp_usbd_ll_init()` to make it match
with the rest of the stared TinyUSB binding code.

Signed-off-by: Damien George <damien@micropython.org>
2025-11-29 23:35:20 +11:00

74 lines
2.6 KiB
C

/*
* This file is part of the MicroPython project, http://micropython.org/
*/
/**
******************************************************************************
* @file USB_Device/CDC_Standalone/Inc/usbd_conf.h
* @author MCD Application Team
* @version V1.0.1
* @date 26-February-2014
* @brief General low level driver configuration
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/
#ifndef MICROPY_INCLUDED_STM32_USBD_CONF_H
#define MICROPY_INCLUDED_STM32_USBD_CONF_H
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "py/mpconfig.h"
#define USBD_MAX_NUM_INTERFACES 8
#define USBD_MAX_NUM_CONFIGURATION 1
#define USBD_MAX_STR_DESC_SIZ 0x100
#if MICROPY_HW_USB_SELF_POWERED
#define USBD_SELF_POWERED 1
#else
#define USBD_SELF_POWERED 0
#endif
#define USBD_DEBUG_LEVEL 0
// Whether the core USBD driver passes through vendor device requests to the class implementation.
#ifndef USBD_ENABLE_VENDOR_DEVICE_REQUESTS
#define USBD_ENABLE_VENDOR_DEVICE_REQUESTS (0)
#endif
// For MCUs with a device-only USB peripheral
#define USBD_PMA_RESERVE (64)
#define USBD_PMA_NUM_FIFO (16) // Maximum 8 endpoints, 2 FIFOs each
// For MCUs with multiple OTG USB peripherals
#define USBD_FS_NUM_TX_FIFO (6)
#define USBD_FS_NUM_FIFO (1 + USBD_FS_NUM_TX_FIFO)
#define USBD_HS_NUM_TX_FIFO (9)
#define USBD_HS_NUM_FIFO (1 + USBD_HS_NUM_TX_FIFO)
#if MICROPY_HW_TINYUSB_STACK
void mp_usbd_ll_init(void);
#endif
#endif // MICROPY_INCLUDED_STM32_USBD_CONF_H
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/