libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
USB peripheral API
Collaboration diagram for USB peripheral API:

Macros

#define RX_FIFO_SIZE   256
 
#define ENDPOINT_COUNT   4
 

Functions

static usbd_deviceefm32lg_usbd_init (void)
 Initialize the USB_FS device controller hardware of the STM32. More...
 
static void efm32lg_set_address (usbd_device *usbd_dev, uint8_t addr)
 
static void efm32lg_ep_setup (usbd_device *usbd_dev, uint8_t addr, uint8_t type, uint16_t max_size, void(*callback)(usbd_device *usbd_dev, uint8_t ep))
 
static void efm32lg_endpoints_reset (usbd_device *usbd_dev)
 
static void efm32lg_ep_stall_set (usbd_device *usbd_dev, uint8_t addr, uint8_t stall)
 
static uint8_t efm32lg_ep_stall_get (usbd_device *usbd_dev, uint8_t addr)
 
static void efm32lg_ep_nak_set (usbd_device *usbd_dev, uint8_t addr, uint8_t nak)
 
static uint16_t efm32lg_ep_write_packet (usbd_device *usbd_dev, uint8_t addr, const void *buf, uint16_t len)
 
static uint16_t efm32lg_ep_read_packet (usbd_device *usbd_dev, uint8_t addr, void *buf, uint16_t len)
 
static void efm32lg_poll (usbd_device *usbd_dev)
 
static void efm32lg_disconnect (usbd_device *usbd_dev, bool disconnected)
 

Variables

static struct _usbd_device _usbd_dev
 
const struct _usbd_driver efm32lg_usb_driver
 

Detailed Description

See also
USB Defines

Macro Definition Documentation

◆ ENDPOINT_COUNT

#define ENDPOINT_COUNT   4

Definition at line 50 of file usb_efm32.c.

◆ RX_FIFO_SIZE

#define RX_FIFO_SIZE   256

Definition at line 38 of file usb_efm32.c.

Function Documentation

◆ efm32lg_disconnect()

static void efm32lg_disconnect ( usbd_device usbd_dev,
bool  disconnected 
)
static

Definition at line 408 of file usb_efm32.c.

References USB_DCTL, and USB_DCTL_SDIS.

◆ efm32lg_endpoints_reset()

static void efm32lg_endpoints_reset ( usbd_device usbd_dev)
static

Definition at line 184 of file usb_efm32.c.

◆ efm32lg_ep_nak_set()

static void efm32lg_ep_nak_set ( usbd_device usbd_dev,
uint8_t  addr,
uint8_t  nak 
)
static

Definition at line 235 of file usb_efm32.c.

References USB_DOEP0CTL_CNAK, USB_DOEP0CTL_SNAK, and USB_DOEPx_CTL.

◆ efm32lg_ep_read_packet()

static uint16_t efm32lg_ep_read_packet ( usbd_device usbd_dev,
uint8_t  addr,
void *  buf,
uint16_t  len 
)
static

◆ efm32lg_ep_setup()

◆ efm32lg_ep_stall_get()

static uint8_t efm32lg_ep_stall_get ( usbd_device usbd_dev,
uint8_t  addr 
)
static

Definition at line 221 of file usb_efm32.c.

References USB_DIEP0CTL_STALL, USB_DIEPx_CTL, USB_DOEP0CTL_STALL, and USB_DOEPx_CTL.

◆ efm32lg_ep_stall_set()

static void efm32lg_ep_stall_set ( usbd_device usbd_dev,
uint8_t  addr,
uint8_t  stall 
)
static

◆ efm32lg_ep_write_packet()

static uint16_t efm32lg_ep_write_packet ( usbd_device usbd_dev,
uint8_t  addr,
const void *  buf,
uint16_t  len 
)
static

◆ efm32lg_poll()

◆ efm32lg_set_address()

static void efm32lg_set_address ( usbd_device usbd_dev,
uint8_t  addr 
)
static

Definition at line 100 of file usb_efm32.c.

References USB_DCFG.

◆ efm32lg_usbd_init()

Variable Documentation

◆ _usbd_dev

struct _usbd_device _usbd_dev
static

Definition at line 52 of file usb_efm32.c.

Referenced by efm32lg_usbd_init().

◆ efm32lg_usb_driver

const struct _usbd_driver efm32lg_usb_driver
Initial value:
= {
.set_address = efm32lg_set_address,
.ep_setup = efm32lg_ep_setup,
.ep_stall_set = efm32lg_ep_stall_set,
.ep_stall_get = efm32lg_ep_stall_get,
.ep_nak_set = efm32lg_ep_nak_set,
.ep_write_packet = efm32lg_ep_write_packet,
.ep_read_packet = efm32lg_ep_read_packet,
.poll = efm32lg_poll,
.disconnect = efm32lg_disconnect,
.base_address = USB_BASE,
.set_address_before_status = 1,
.rx_fifo_size = RX_FIFO_SIZE,
}
#define USB_BASE
static void efm32lg_disconnect(usbd_device *usbd_dev, bool disconnected)
Definition: usb_efm32.c:408
static void efm32lg_endpoints_reset(usbd_device *usbd_dev)
Definition: usb_efm32.c:184
static void efm32lg_ep_nak_set(usbd_device *usbd_dev, uint8_t addr, uint8_t nak)
Definition: usb_efm32.c:235
#define RX_FIFO_SIZE
Definition: usb_efm32.c:38
static uint8_t efm32lg_ep_stall_get(usbd_device *usbd_dev, uint8_t addr)
Definition: usb_efm32.c:221
static void efm32lg_set_address(usbd_device *usbd_dev, uint8_t addr)
Definition: usb_efm32.c:100
static void efm32lg_ep_setup(usbd_device *usbd_dev, uint8_t addr, uint8_t type, uint16_t max_size, void(*callback)(usbd_device *usbd_dev, uint8_t ep))
Definition: usb_efm32.c:107
static uint16_t efm32lg_ep_write_packet(usbd_device *usbd_dev, uint8_t addr, const void *buf, uint16_t len)
Definition: usb_efm32.c:251
static uint16_t efm32lg_ep_read_packet(usbd_device *usbd_dev, uint8_t addr, void *buf, uint16_t len)
Definition: usb_efm32.c:279
static void efm32lg_poll(usbd_device *usbd_dev)
Definition: usb_efm32.c:307
static usbd_device * efm32lg_usbd_init(void)
Initialize the USB_FS device controller hardware of the STM32.
Definition: usb_efm32.c:55
static void efm32lg_ep_stall_set(usbd_device *usbd_dev, uint8_t addr, uint8_t stall)
Definition: usb_efm32.c:190

Definition at line 419 of file usb_efm32.c.

Referenced by efm32lg_usbd_init().