eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › USB, czasem nie wykrywa urzadzenia
Ilość wypowiedzi w tym wątku: 8

  • 1. Data: 2023-06-05 18:54:55
    Temat: USB, czasem nie wykrywa urzadzenia
    Od: Artur <n...@g...com>

    Cześć.
    Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że linia
    DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest oczywiście
    "self powered" . Przeważnie to działa, ale problem jest podczas restartu tego
    urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go nie
    wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w stanie
    zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i czemu
    czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski na DP,
    ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli host
    będzie coś nadawał akurat?

    A.


  • 2. Data: 2023-06-05 19:27:46
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: Adam Górski <g...@w...pl>

    W dniu 05.06.2023 o 18:54, Artur pisze:
    > Cześć.
    > Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    > I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w stanie
    zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i czemu
    czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski na DP,
    ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli host
    będzie coś nadawał akurat?
    >
    > A.

    Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    się w usb_20_20230224.zip ze strony
    https://www.usb.org/document-library/usb-20-specific
    ation

    W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.

    Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.

    Pozdrawiam

    Adam Górski


  • 3. Data: 2023-06-05 19:57:19
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: AW <a...@g...com>

    poniedziałek, 5 czerwca 2023 o 19:27:48 UTC+2 Adam Górski napisał(a):
    > W dniu 05.06.2023 o 18:54, Artur pisze:
    > > Cześć.
    > > Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    > > I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w
    stanie zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i
    czemu czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski
    na DP, ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli
    host będzie coś nadawał akurat?
    > >
    > > A.
    > Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    > się w usb_20_20230224.zip ze strony
    > https://www.usb.org/document-library/usb-20-specific
    ation
    >
    > W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.
    >
    > Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    > pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.
    >
    > Pozdrawiam
    >
    > Adam Górski

    Tylko, ze ten pull-up jest na stale podpiety do 3.3V, nie da sie go odpiac :)
    Jedyne, co mozna zrobic to sciagnac linie DP do masy konfigurujac na chwile ten pin
    jako zwykle wyjscie.
    Zastanawiam sie jak bardzo jest to ryzykowne.


  • 4. Data: 2023-06-05 20:45:47
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: Artur <n...@g...com>

    poniedziałek, 5 czerwca 2023 o 19:27:48 UTC+2 Adam Górski napisał(a):
    > W dniu 05.06.2023 o 18:54, Artur pisze:
    > > Cześć.
    > > Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    > > I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w
    stanie zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i
    czemu czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski
    na DP, ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli
    host będzie coś nadawał akurat?
    > >
    > > A.
    > Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    > się w usb_20_20230224.zip ze strony
    > https://www.usb.org/document-library/usb-20-specific
    ation
    >
    > W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.
    >
    > Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    > pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.
    >
    > Pozdrawiam
    >
    > Adam Górski

    Ten pull-up jest podpięty na stałe do 3.3V. Jedyna opcja to skonfigurować pin DP jako
    wyjście i ustawić 0 na kilkadziesiąt ms, a później zainicjować USB. Pytanie tylko jak
    bardzo jest to ryzykowne.
    No i czemu przeważnie działa nawet jeśli host nie dostaje informacji w standardowy
    sposób, że coś zostało odłączone i podłączone?


  • 5. Data: 2023-06-05 20:54:40
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: Adam Górski <g...@w...pl>

    W dniu 05.06.2023 o 19:57, AW pisze:
    > poniedziałek, 5 czerwca 2023 o 19:27:48 UTC+2 Adam Górski napisał(a):
    >> W dniu 05.06.2023 o 18:54, Artur pisze:
    >>> Cześć.
    >>> Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    >>> I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w
    stanie zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i
    czemu czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski
    na DP, ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli
    host będzie coś nadawał akurat?
    >>>
    >>> A.
    >> Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    >> się w usb_20_20230224.zip ze strony
    >> https://www.usb.org/document-library/usb-20-specific
    ation
    >>
    >> W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.
    >>
    >> Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    >> pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.
    >>
    >> Pozdrawiam
    >>
    >> Adam Górski
    >
    > Tylko, ze ten pull-up jest na stale podpiety do 3.3V, nie da sie go odpiac :)
    > Jedyne, co mozna zrobic to sciagnac linie DP do masy konfigurujac na chwile ten pin
    jako zwykle wyjscie.
    > Zastanawiam sie jak bardzo jest to ryzykowne.


    Dokumentacja od STM32F niestety nie wspomina nic na temat ograniczania
    prądu. Jedynie , że prąd max dla portu I/O jest w okolicy 25mA.
    Fajnie by było gdyby otwarcie napisali czy są tam źródła prądowe
    szeregowo z mosfetami wyjściowymi. Lub może szeregowe rezystory wyjściowe.

    Nie martwił bym się jednak specjalnie tym zwieraniem D+ czy D- do masy.
    Sygnały na D+ i D- są na poziomie 400mV względem masy w czasie
    transmisji. Lub jak kto woli +/-400mV różnicowo.
    Razem z rezystorami szeregowymi dopasowującymi rzędu 22-33R na liniach
    D+ i D- skutecznie ograniczy ten prąd w okolicy < 20mA.

    Zatem zwierać i się nie przejmować.

    pozdrawiam

    Adam Górski


  • 6. Data: 2023-06-05 20:58:55
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: Adam Górski <g...@w...pl>

    W dniu 05.06.2023 o 20:45, Artur pisze:
    > poniedziałek, 5 czerwca 2023 o 19:27:48 UTC+2 Adam Górski napisał(a):
    >> W dniu 05.06.2023 o 18:54, Artur pisze:
    >>> Cześć.
    >>> Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    >>> I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w
    stanie zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i
    czemu czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski
    na DP, ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli
    host będzie coś nadawał akurat?
    >>>
    >>> A.
    >> Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    >> się w usb_20_20230224.zip ze strony
    >> https://www.usb.org/document-library/usb-20-specific
    ation
    >>
    >> W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.
    >>
    >> Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    >> pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.
    >>
    >> Pozdrawiam
    >>
    >> Adam Górski
    >
    > Ten pull-up jest podpięty na stałe do 3.3V. Jedyna opcja to skonfigurować pin DP
    jako wyjście i ustawić 0 na kilkadziesiąt ms, a później zainicjować USB. Pytanie
    tylko jak bardzo jest to ryzykowne.
    > No i czemu przeważnie działa nawet jeśli host nie dostaje informacji w standardowy
    sposób, że coś zostało odłączone i podłączone?

    Zobacz jak działa wykrywanie urządzenia.

    To jednak 7.1.7.3 Connect and Disconnect Signaling

    Adam


  • 7. Data: 2023-06-09 23:41:30
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: Artur <n...@g...com>

    poniedziałek, 5 czerwca 2023 o 20:58:57 UTC+2 Adam Górski napisał(a):
    > W dniu 05.06.2023 o 20:45, Artur pisze:
    > > poniedziałek, 5 czerwca 2023 o 19:27:48 UTC+2 Adam Górski napisał(a):
    > >> W dniu 05.06.2023 o 18:54, Artur pisze:
    > >>> Cześć.
    > >>> Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    > >>> I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w
    stanie zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i
    czemu czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski
    na DP, ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli
    host będzie coś nadawał akurat?
    > >>>
    > >>> A.
    > >> Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    > >> się w usb_20_20230224.zip ze strony
    > >> https://www.usb.org/document-library/usb-20-specific
    ation
    > >>
    > >> W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.
    > >>
    > >> Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    > >> pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.
    > >>
    > >> Pozdrawiam
    > >>
    > >> Adam Górski
    > >
    > > Ten pull-up jest podpięty na stałe do 3.3V. Jedyna opcja to skonfigurować pin DP
    jako wyjście i ustawić 0 na kilkadziesiąt ms, a później zainicjować USB. Pytanie
    tylko jak bardzo jest to ryzykowne.
    > > No i czemu przeważnie działa nawet jeśli host nie dostaje informacji w
    standardowy sposób, że coś zostało odłączone i podłączone?
    > Zobacz jak działa wykrywanie urządzenia.
    >
    > To jednak 7.1.7.3 Connect and Disconnect Signaling
    >
    > Adam
    Spędziłem trochę czasu z analizatorem stanów logicznych bo mnie męczyło czemu to
    jednak przeważnie działa, a nie powinno. Tzn. przeważnie po restarcie urządzenia jest
    ono wykrywane przez windows tj. znika i pojawia się ponownie port COM. Okazuje się,
    że podczas uruchamiania sterownika USB w tym urządzeniu, po zainicjalizowaniu gpio
    przez chwilę tj. 4us na linii DP wymuszane jest "0". Windowsowy sterownik przeważnie
    ten krótki impuls wykrywa i inicjalizuje ponownie połączenie. Linuxowy sterownik ten
    impuls zawsze ignoruje i w 100% przypadków po restarcie port szeregowy nie działa. Co
    ciekawe dokumentacja USB mówi, że 0 na obu liniach przez czas dłuższy niż 2.5us to
    stan DISCONNECT. Czyli nawet ten krótki impuls powinien być zawsze wykrywany jako
    rozłączenie urządzenia.
    Artur


  • 8. Data: 2023-06-12 19:40:22
    Temat: Re: USB, czasem nie wykrywa urzadzenia
    Od: Adam Górski <g...@w...pl>

    W dniu 09.06.2023 o 23:41, Artur pisze:
    > poniedziałek, 5 czerwca 2023 o 20:58:57 UTC+2 Adam Górski napisał(a):
    >> W dniu 05.06.2023 o 20:45, Artur pisze:
    >>> poniedziałek, 5 czerwca 2023 o 19:27:48 UTC+2 Adam Górski napisał(a):
    >>>> W dniu 05.06.2023 o 18:54, Artur pisze:
    >>>>> Cześć.
    >>>>> Jest sobie urządzonko na STM32F3 w którym ktoś zrobił port USB w ten sposób, że
    linia DP jest cały czas podciągnięta do +3.3V rezystorem 1.5k. Urządzenie jest
    oczywiście "self powered" . Przeważnie to działa, ale problem jest podczas restartu
    tego urządzenia z poziomu oprogramowania, bo raz na kilkanaście restartów Windows go
    nie wykrywa. Zgaduję że problemem jest ten na stałe podłączony pull-upie.
    >>>>> I teraz pytanie. Jaki jest mechanizm, że zwykle to działa tj. windows jest w
    stanie zrobić enumerację nawet jeśli nie było odłączenia/podłączenia pull-up-a i
    czemu czasem nie działa. Kombinuję, żeby przy starcie na chwilę wymusić poziom niski
    na DP, ale pewnie jest ryzyko uszkodzenia albo portu USB albo mikrokontrolera, jeżeli
    host będzie coś nadawał akurat?
    >>>>>
    >>>>> A.
    >>>> Na 99% opisane jest to w punkcie 7.1.5.1 z pliku usb_20.pdf znajdującego
    >>>> się w usb_20_20230224.zip ze strony
    >>>> https://www.usb.org/document-library/usb-20-specific
    ation
    >>>>
    >>>> W skrócie - enumeracja następuje po wykryciu lub zaniku pullup na D+ lub D-.
    >>>>
    >>>> Jeżeli chcesz zrobić to dynamicznie, dodaj tam coś co będzie odpinało
    >>>> pullupa. Na ile czasu ? Tego nie wiem. 100 ms pewnie wystarczy.
    >>>>
    >>>> Pozdrawiam
    >>>>
    >>>> Adam Górski
    >>>
    >>> Ten pull-up jest podpięty na stałe do 3.3V. Jedyna opcja to skonfigurować pin DP
    jako wyjście i ustawić 0 na kilkadziesiąt ms, a później zainicjować USB. Pytanie
    tylko jak bardzo jest to ryzykowne.
    >>> No i czemu przeważnie działa nawet jeśli host nie dostaje informacji w
    standardowy sposób, że coś zostało odłączone i podłączone?
    >> Zobacz jak działa wykrywanie urządzenia.
    >>
    >> To jednak 7.1.7.3 Connect and Disconnect Signaling
    >>
    >> Adam
    > Spędziłem trochę czasu z analizatorem stanów logicznych bo mnie męczyło czemu to
    jednak przeważnie działa, a nie powinno. Tzn. przeważnie po restarcie urządzenia jest
    ono wykrywane przez windows tj. znika i pojawia się ponownie port COM. Okazuje się,
    że podczas uruchamiania sterownika USB w tym urządzeniu, po zainicjalizowaniu gpio
    przez chwilę tj. 4us na linii DP wymuszane jest "0". Windowsowy sterownik przeważnie
    ten krótki impuls wykrywa i inicjalizuje ponownie połączenie. Linuxowy sterownik ten
    impuls zawsze ignoruje i w 100% przypadków po restarcie port szeregowy nie działa. Co
    ciekawe dokumentacja USB mówi, że 0 na obu liniach przez czas dłuższy niż 2.5us to
    stan DISCONNECT. Czyli nawet ten krótki impuls powinien być zawsze wykrywany jako
    rozłączenie urządzenia.
    > Artur

    I tak bywa.

    Adam

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: