#usb-device #devices #usb #peripheral #ip #otg-fs #otg-hs

no-std synopsys-usb-otg

'usb-device' implementation for Synopsys USB OTG IP cores

10 releases

0.4.0 Nov 19, 2023
0.3.2 Jan 14, 2023
0.3.1 Oct 6, 2022
0.3.0 Jan 4, 2022
0.1.0 Feb 12, 2020

#538 in Hardware support

Download history 642/week @ 2024-06-11 512/week @ 2024-06-18 477/week @ 2024-06-25 534/week @ 2024-07-02 575/week @ 2024-07-09 529/week @ 2024-07-16 546/week @ 2024-07-23 910/week @ 2024-07-30 496/week @ 2024-08-06 576/week @ 2024-08-13 523/week @ 2024-08-20 506/week @ 2024-08-27 480/week @ 2024-09-03 377/week @ 2024-09-10 393/week @ 2024-09-17 453/week @ 2024-09-24

1,780 downloads per month
Used in 11 crates (5 directly)

MIT license

425KB
8K SLoC

crates.io crates.io Build Status

synopsys-usb-otg

usb-device implementation for Synopsys USB OTG IP cores.

This project is a successor to the great work started by @mvirkkunen.

Supported microcontrollers

  • STM32F429xx (OTG_FS and OTG_HS in FS mode)
  • STM32F401xx
  • STM32F446xx (OTG_FS and OTG_HS in FS mode)
  • STM32F723xx (OTG_FS and OTG_HS with internal HS PHY)
  • STM32H7xxxx (OTG1_HS and OTG2_HS in FS mode, and OTG1_HS with external HS PHY)
  • And others...

Usage

This driver is intended for use through a device hal library. Such hal library should implement UsbPeripheral for the corresponding USB peripheral object. This trait declares all the peripheral properties that may vary from one device family to the other. Additionally, hal should pass fs of hs feature to the synopsys-usb-otg library to define a peripheral type:

  • fs - for FullSpeed peripherals
  • hs - for HighSpeed peripherals

Only one peripheral type can be selected at the moment.

ULPI Transciever Delay

Some ULPI PHYs like the Microchip USB334x series require a delay between the ULPI register write that initiates the HS Chirp and the subsequent transmit command, otherwise the HS Chirp does not get executed and the deivce enumerates in FS mode. Some USB Link IP like those in the STM32H7 series support adding this delay to work with the affected PHYs. Enable the xcvrdly feature to add this delay.

Examples

See the usb-otg-workspace repo for different device-specific examples.

Dependencies

~2MB
~33K SLoC