Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LilyGo T-Impulse Wristband, Dragino LGT92 tracker and AI RHF76-052 support #198

Open
wants to merge 31 commits into
base: master
Choose a base branch
from

Conversation

UT2UH
Copy link

@UT2UH UT2UH commented Feb 3, 2022

Just in case somebody else may be interested. T-Impulse WB has no VUSB so SerialUSB does not work. Even with PR#175.

matthijskooijman and others added 8 commits March 1, 2021 17:36
Since commit bdd33df (Refresh USB logic; callback for events; hotplug in
STOP mode; STOP mode in USB SUSPEND; bunch of race conditions in the
USB/CDC code; avoid SOF interrupt; 500mA max power in descriptiors),
the USBD code would assume a VBUS pin is available and only initialize
the USB stack when a VBUS voltage is present.

This commit restores the older behavior of, when
`STM32L0_CONFIG_PIN_VBUS` (so indirectly also `usbd_pin_vbus`) is
`STM32L0_GPIO_PIN_NONE`, assuming VBUS is always present. USB
initialization can still be controlled using `USBDevice.attach()`.
This is already done by usbd_conf.c which is also the place where it is
read, so no need to do it again here.
This can be useful to allow measuring the actual USB voltage, rather
than just detect presence.

Previously the USB code would always enable an internal pulldown on the
VBUS, which would skew the reading (and, if the divider is fairly high
impedance, can even prevent detecting VBUS presence using a digital
read).

With this commit, boards can indicate they use an external divider using
the STM32L0_CONFIG_PIN_VBUS_HAS_DIVIDER macro in their variant.h. When
this is defined, the internal pullup is not enabled to prevent it from
causing issues and because it is no longer needed (the external divider
functions as a pulldown).
It turns out that stopping the USB peripheral does not automatically
reset this pullup, so stopping USB (e.g. through USBDevice.detach())
would let the pullup enabled, making the USB host think the board was
still connected (but any subsequent communication would fail).
Additionally, this would use around 300μA of current.

This is a bug in the USB HAL used. This commit backports a small change
from the HAL v1.11.3 to fix this.

This fixes GrumpyOldPizza#171
@vshymanskyy
Copy link

@GrumpyOldPizza any chance to have this merged? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants