Otázka:
STM32 USB: detekce připojení a odpojení
David
2014-10-14 03:27:30 UTC
view on stackexchange narkive permalink

Jak pomocí příkladu řadiče velkokapacitního úložiště USB STM32F4 v režimu zařízení detekujete připojení a odpojení od hostitelského řadiče?

Zkoušel jsem dotazovat stav kolíku VBUS, přesto by mohl být vysoký ze síťového adaptéru vysoká bez jakékoli komunikace s hostitelem.

Existuje registr ke kontrole? Všiml jsem si DSTS (stav myslím?) Ve strukturách knihovny USB, ale nemohl jsem najít jeho dokumentaci ani žádné užitečné komentáře v kódu.

vezměte tuto otázku na fórum STM, pošlete e-mail na jejich technickou podporu.Je to vlastní deska plošných spojů se STM32 nebo deska objevu / jiné vývojové desky?
Vidění aktivity sběrnice USB by bylo silným vodítkem.
Tři odpovědi:
Tim
2015-02-25 08:42:08 UTC
view on stackexchange narkive permalink

Dalo by se zjistit připojení a odpojení od tohoto souboru:

usbd_core.c

a API pro něj je toto

  USBD_StatusTypeDef USBD_LL_DevConnected (USBD_HandleTypeDef * pdev) USBD_StatusTypeDef USBD_LL_DevDisconnected (USBD_HandleTypeDef * pdev)  

Nejsem si jistý třídou USB Mass Storage, ale ve třídě CDC, ale ve třídě CDC si nejsem jistý připojení a odpojení USB, možná to pomůže

Je třeba si uvědomit:

  • Připojení> když je fyzický kabel USB zapojen do USB portu
  • Odpojení> když je fyzický kabel USB odpojen z USB portu

Použil jsem STMCubeMX ke generování třídy USB CDC.

`usbd_core.c` má `USBD_StatusTypeDef USBD_LL_DevConnected (USBD_HandleTypeDef * pdev) { vrátit USBD_OK; } ` ...Jak tohle funguje?
OP se ptá * jak detekovat * připojení, ne co dělat poté, co je detekováno.
To se zdá být správná odpověď, ale tento kód AFAICS je aktivní pouze v případě, že USB je OTG.
Ale tato zpětná volání jsou již implementována v ** usbd_core.c ** a nemůžete tam přidat uživatelský kód.Jak tedy může událost zpracovat uživatel?
Myslím, že pokud používáte CubeMx, přepíše váš kód pokaždé, když stisknete tlačítko pro generování.
Chcete-li vyřešit problém, který jsem zmínil, můžete upravit soubor `C: \ Program Files \ STMicroelectronics \ STM32Cube \ STM32CubeMX \ db \ templates \ usbdconf_f7_c.ftl` (v závislosti na názvu vaší desky) a jednoduše smazat implementaci zpětných volání vtento soubor.Nyní můžete do svých souborů přidat vlastní implementaci a CubeMx váš kód nepřepíše.
Guill
2014-10-21 22:42:13 UTC
view on stackexchange narkive permalink

Odpověď je velmi jednoduchá. Stejně jako jste vyzkoušeli VBUS, zkuste DSTS a uvidíte, co se stane! Hodně štěstí.

To je sotva odpověď.Otázka uvádí, že DSTS není jasně zdokumentován.Máte nějaký přehled, který chcete přidat?Nebo navrhujete pouze protokolování hodnoty, abyste zjistili, co se stane, aniž byste se obtěžovali pochopit, co představuje?
@Guill o tom pravděpodobně mluví: „Bit0 SUSPSTS: Suspendstatus V režimu zařízení je tento bit nastaven, dokud je na USB detekována podmínka pozastavení.Jádro přejde do stavu Pozastaveno, když na datových linkách USB nebude po dobu 3 ms žádná aktivita.Jádro vychází z pozastavení: - Při aktivitě na datových linkách USB "
Dohodnuto, ale jako profesionál potýkající se s tímto hrozným jádrem USB a související dokumentací je to zbytečně škádlení.
Иван
2019-01-16 21:08:11 UTC
view on stackexchange narkive permalink
  void HAL_PCD_SuspendCallback (PCD_HandleTypeDef * hpcd)
{
  / * Informovat knihovnu USB, že jádro vstupuje do režimu pozastavení.* /
  USBD_LL_Suspend ((USBD_HandleTypeDef *) hpcd->pData);
......
 

v usbd_conf.c

Funkce volá při odpojení kabelu USB

(testováno na zařízení Mass Storage, CubeMX)



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...