pub struct Driver<'d, T: Instance> { /* private fields */ }Expand description
USB driver.
Implementations§
Source§impl<'d, T: Instance> Driver<'d, T>
impl<'d, T: Instance> Driver<'d, T>
Sourcepub fn new_fs(
_peri: Peri<'d, T>,
dp: Peri<'d, impl DpPin<T>>,
dm: Peri<'d, impl DmPin<T>>,
_irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd,
ep_out_buffer: &'d mut [u8],
config: Config,
) -> Self
pub fn new_fs( _peri: Peri<'d, T>, dp: Peri<'d, impl DpPin<T>>, dm: Peri<'d, impl DmPin<T>>, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self
Initializes USB OTG peripheral with internal Full-Speed PHY.
§Arguments
ep_out_buffer- An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Sourcepub fn new_hs(
_peri: Peri<'d, T>,
dp: Peri<'d, impl DpPin<T>>,
dm: Peri<'d, impl DmPin<T>>,
_irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd,
ep_out_buffer: &'d mut [u8],
config: Config,
) -> Self
pub fn new_hs( _peri: Peri<'d, T>, dp: Peri<'d, impl DpPin<T>>, dm: Peri<'d, impl DmPin<T>>, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self
Initializes USB OTG peripheral with internal High-Speed PHY.
§Arguments
ep_out_buffer- An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Sourcepub fn new_hs_dedicated_pins(
_peri: Peri<'d, T>,
_irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd,
ep_out_buffer: &'d mut [u8],
config: Config,
) -> Self
pub fn new_hs_dedicated_pins( _peri: Peri<'d, T>, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self
Initializes USB OTG peripheral with internal High-Speed PHY, on chips where that PHY drives dedicated package pins instead of GPIO alternate functions.
On the STM32N6 the integrated UTMI+ PHY is wired to the OTGx_HSDP / OTGx_HSDM
balls (RM0486 Rev 4, Figure 982, p. 3763), which are not GPIOs and therefore have no
DpPin / DmPin implementations — there is nothing to hand over here.
For chips whose internal High-Speed PHY is reached through GPIO alternate functions
(STM32U5, STM32H7RS, …), use Driver::new_hs and pass the two pins.
§Arguments
ep_out_buffer- An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Sourcepub fn new_fs_ulpi(
_peri: Peri<'d, T>,
ulpi_clk: Peri<'d, impl UlpiClkPin<T>>,
ulpi_dir: Peri<'d, impl UlpiDirPin<T>>,
ulpi_nxt: Peri<'d, impl UlpiNxtPin<T>>,
ulpi_stp: Peri<'d, impl UlpiStpPin<T>>,
ulpi_d0: Peri<'d, impl UlpiD0Pin<T>>,
ulpi_d1: Peri<'d, impl UlpiD1Pin<T>>,
ulpi_d2: Peri<'d, impl UlpiD2Pin<T>>,
ulpi_d3: Peri<'d, impl UlpiD3Pin<T>>,
ulpi_d4: Peri<'d, impl UlpiD4Pin<T>>,
ulpi_d5: Peri<'d, impl UlpiD5Pin<T>>,
ulpi_d6: Peri<'d, impl UlpiD6Pin<T>>,
ulpi_d7: Peri<'d, impl UlpiD7Pin<T>>,
_irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd,
ep_out_buffer: &'d mut [u8],
config: Config,
) -> Self
pub fn new_fs_ulpi( _peri: Peri<'d, T>, ulpi_clk: Peri<'d, impl UlpiClkPin<T>>, ulpi_dir: Peri<'d, impl UlpiDirPin<T>>, ulpi_nxt: Peri<'d, impl UlpiNxtPin<T>>, ulpi_stp: Peri<'d, impl UlpiStpPin<T>>, ulpi_d0: Peri<'d, impl UlpiD0Pin<T>>, ulpi_d1: Peri<'d, impl UlpiD1Pin<T>>, ulpi_d2: Peri<'d, impl UlpiD2Pin<T>>, ulpi_d3: Peri<'d, impl UlpiD3Pin<T>>, ulpi_d4: Peri<'d, impl UlpiD4Pin<T>>, ulpi_d5: Peri<'d, impl UlpiD5Pin<T>>, ulpi_d6: Peri<'d, impl UlpiD6Pin<T>>, ulpi_d7: Peri<'d, impl UlpiD7Pin<T>>, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self
Initializes USB OTG peripheral with external Full-speed PHY (usually, a High-speed PHY in Full-speed mode).
§Arguments
ep_out_buffer- An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.
Sourcepub fn new_hs_ulpi(
_peri: Peri<'d, T>,
ulpi_clk: Peri<'d, impl UlpiClkPin<T>>,
ulpi_dir: Peri<'d, impl UlpiDirPin<T>>,
ulpi_nxt: Peri<'d, impl UlpiNxtPin<T>>,
ulpi_stp: Peri<'d, impl UlpiStpPin<T>>,
ulpi_d0: Peri<'d, impl UlpiD0Pin<T>>,
ulpi_d1: Peri<'d, impl UlpiD1Pin<T>>,
ulpi_d2: Peri<'d, impl UlpiD2Pin<T>>,
ulpi_d3: Peri<'d, impl UlpiD3Pin<T>>,
ulpi_d4: Peri<'d, impl UlpiD4Pin<T>>,
ulpi_d5: Peri<'d, impl UlpiD5Pin<T>>,
ulpi_d6: Peri<'d, impl UlpiD6Pin<T>>,
ulpi_d7: Peri<'d, impl UlpiD7Pin<T>>,
_irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd,
ep_out_buffer: &'d mut [u8],
config: Config,
) -> Self
pub fn new_hs_ulpi( _peri: Peri<'d, T>, ulpi_clk: Peri<'d, impl UlpiClkPin<T>>, ulpi_dir: Peri<'d, impl UlpiDirPin<T>>, ulpi_nxt: Peri<'d, impl UlpiNxtPin<T>>, ulpi_stp: Peri<'d, impl UlpiStpPin<T>>, ulpi_d0: Peri<'d, impl UlpiD0Pin<T>>, ulpi_d1: Peri<'d, impl UlpiD1Pin<T>>, ulpi_d2: Peri<'d, impl UlpiD2Pin<T>>, ulpi_d3: Peri<'d, impl UlpiD3Pin<T>>, ulpi_d4: Peri<'d, impl UlpiD4Pin<T>>, ulpi_d5: Peri<'d, impl UlpiD5Pin<T>>, ulpi_d6: Peri<'d, impl UlpiD6Pin<T>>, ulpi_d7: Peri<'d, impl UlpiD7Pin<T>>, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, ep_out_buffer: &'d mut [u8], config: Config, ) -> Self
Initializes USB OTG peripheral with external High-Speed PHY.
§Arguments
ep_out_buffer- An internal buffer used to temporarily store received packets. Must be large enough to fit all OUT endpoint max packet sizes. Endpoint allocation will fail if it is too small.