Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32F107] Niskie napięcie zasilania USB

Olpad 25 Kwi 2012 22:30 3065 14
  • #1 25 Kwi 2012 22:30
    Olpad
    Poziom 2  

    Witam serdecznie
    Do tej pory projektowałem jedynie płytki pod AVRki i jak do tej pory nie spotkałem się z podobnym problemem.
    Na początku płytka nie działała poprawnie co było, jak się później okazało, winą niesprawnego kwarcu. Gdy układ nie działał napięcie podawane przez USB było w okolicach 5V, więc całkiem poprawne.
    Po wymianie kwarcu płytka ruszyła, jednak pojawił się problem z napięciem zasilania. Spadło ono dość drastycznie bo aż do ~4.5V co nie wystarcza stabilizatorowi. Układ ledwo pracuje przy około 2.9V. Co może być przyczyną takiego stanu rzeczy?

    Ach ta zawodna pamięć. Powyższe nie jest do końca prawdą. Układ ruszył po podłączeniu 3.3v do pinu NRST i wtedy napięcie tak drastycznie spadło. Kwarc to osobna kwestia :)
    Pomimo wewnętrznego Vdd i pullupa na pinie NRST cały czas pojawiał się stan niski co nie pozwalało na prawidłową pracę STMa. Dopiero podłączenie Vdd do pinu rozwiązało problem. A także wprowadziło opisany wyżej.

    Przeczytałem tutaj: http://www.st.com/internet/com/TECHNICAL_RESO...AL_LITERATURE/APPLICATION_NOTE/CD00167594.pdf (str. 22)
    że pin PA9, na który ma być podane napięcie Vbus ~5V może pobierać nieco zbyt wiele prądu, jednak czy to możliwe by zużycie było tak wysokie, że napięcie USB przygasło?

    Płytka ma służyć do konwersji sygnału audio przez USB na I2S.

    [STM32F107] Niskie napięcie zasilania USB

  • #2 26 Kwi 2012 10:51
    spuki
    Poziom 13  

    Hej,

    Tak na szybko:
    - Sprawdź kabelek USB. Te cienkie/tanie mają bardzo duży spadek napięcia.
    - LM317 to osobna sprawa. Do USB stosuje się zwykle stabilizatory low dropout lub przetwornice. Dropout dla LM'a przy 25 stopniach i prądzie 0,5A to minimum 1,8V. Zapasu jest więc niewiele.
    - O kondensatorach odsprzęgających to trzeba pamiętać aby były jak najbliżej CPU.
    - Dioda zapięta do portu PE7 (pin 38) prawdopodobnie go upali - brakuje rezystora ograniczającego prąd.
    - Zasilanie części analogowej - ładnie, ładnie... (czy będziesz korzystać z przetworników ADC/DAC? Jeśli nie to da się tą cześć uprościć)
    - Pin BOOT0 zapięty cały czas do VDD uniemożliwia uruchomienie programu z wewnętrznej pamięci Flash - Reference manual Table 9, page 60.
    - Co do pinu NRST ja stosuję praktycznie zawsze poniższą metodę i póki co się sprawdza
    [STM32F107] Niskie napięcie zasilania USB

    Co do zapięcia pinów to sensowności się nie doszukuję bo nie znam całej koncepcji.
    Ogólnie BARDZO ZACHĘCAM do zapoznawania się z dokumentacją układów zanim się nawet na niego kliknie w sklepie internetowym. Projektowanie urządzeń "na pałę" mija się z celem, a do zabawy/nauki są przecież duży wybór evalboard'ów (i szybciej i taniej).

    Pozdrawiam.

  • #3 26 Kwi 2012 11:09
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Jeśli zrobiłeś projekt płytki wg tego schematu, to tam conajmniej kilka elementów lata w powietrzu - taki to urok EAGLE'a...

    R1, C40 i C41

    A schemat max nieczytelny.

    4\/3!!

  • #4 26 Kwi 2012 11:19
    gaskoin
    Poziom 38  

    Parę ścieżek też jest niepołączonych a z tego co widzę to powinny.

    Do masy masz osobny "element" i to jego się powinno używać a nie ciągnąć makarony przez pół świata.

  • #5 27 Kwi 2012 02:22
    Olpad
    Poziom 2  

    spuki napisał:
    - LM317 to osobna sprawa. Do USB stosuje się zwykle stabilizatory low dropout lub przetwornice. Dropout dla LM'a przy 25 stopniach i prądzie 0,5A to minimum 1,8V. Zapasu jest więc niewiele.

    Stabilizator wymieniony na LDO już trzyma dobrze 3,3V :) To co prawda półśrodek, gdyż napięcie dalej wynosi 4,5V z jakiegoś powodu, nie mniej wszystko działa poprawnie.

    spuki napisał:
    - Dioda zapięta do portu PE7 (pin 38) prawdopodobnie go upali - brakuje rezystora ograniczającego prąd.

    W dokumentacji jest napisane, że prąd maksymalny pinu to 25mA, natomiast dioda potrzebuje 20mA (3,3V). Czy to wartość zbyt wysoka?

    spuki napisał:
    - Zasilanie części analogowej - ładnie, ładnie... (czy będziesz korzystać z przetworników ADC/DAC? Jeśli nie to da się tą cześć uprościć)

    Nie będę, jednak chciałem to zrobić 'po Bożemu', zgodnie z dokumentacją (gdzie radzą ją dobrze filtrować mimo wszystko), wszelkimi kanonami sztuki, zapisami w starych pismach oraz wiedzą i doświadczeniem przekazywanymi przez wieki z pokolenia na pokolenie.

    spuki napisał:
    - Pin BOOT0 zapięty cały czas do VDD uniemożliwia uruchomienie programu z wewnętrznej pamięci Flash - Reference manual Table 9, page 60.

    Z jakiegoś powodu (prawdopodobnie nabuzowany kawą po całym dniu pracy) zapomniałem dorzucić zworki w tym miejscu a potem przy sprawdzaniu schematu i płytki mi to umknęło. Problem już zauważyłem :)

    spuki napisał:
    - Co do pinu NRST ja stosuję praktycznie zawsze poniższą metodę i póki co się sprawdza

    Z jakiegoś powodu u mnie dodanie praktycznie jakiegokolwiek rezystora na tę ścieżkę sprawia, że układ się nie uruchamia.

    Freddie Chopin napisał:
    conajmniej kilka elementów lata w powietrzu

    gaskoin napisał:
    Parę ścieżek też jest niepołączonych a z tego co widzę to powinny.

    Czy chodzi o te 'zielone kropki' przy nóżkach i złączeniach ścieżek?

    gaskoin napisał:
    Do masy masz osobny "element" i to jego się powinno używać a nie ciągnąć makarony przez pół świata.

    Freddie Chopin napisał:

    A schemat max nieczytelny.

    Przy projektowaniu następnego schematu wezmę to pod uwagę. :)

    Dziękuję bardzo za pomoc. Jeśli ktoś ma jakieś wskazówki, zastrzeżenia czy też wie/podejrzewa dlaczego napięcie jest niskie a pin NRST zachowuje się w tak dziwny sposób to będę wdzięczny za podzielenie się nimi.

  • #6 27 Kwi 2012 07:50
    felekfala
    Poziom 19  

    Kolego spuki, ja też stosowałem takie rozwiązanie układu resetu. W datasheet np uC STM32F103RB polecają takie rozwiązanie:


    [STM32F107] Niskie napięcie zasilania USB

    Pin jest podciągany wewnętrznym rezystorem do zasilania.

  • #7 27 Kwi 2012 07:57
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Olpad napisał:
    W dokumentacji jest napisane, że prąd maksymalny pinu to 25mA, natomiast dioda potrzebuje 20mA (3,3V). Czy to wartość zbyt wysoka?

    Należy to jednak rozumieć jako maksymalny DOPUSZCZALNY prąd, a nie maksymalny możliwy do wyciągnięcia w sytuacji zwarcia (czyli np podłaczenia diody bez rezystora - to taki pół-zwarcie). Do diody LED zawsze daje się rezystor ograniczający prąd.

    Olpad napisał:
    Z jakiegoś powodu u mnie dodanie praktycznie jakiegokolwiek rezystora na tę ścieżkę sprawia, że układ się nie uruchamia.

    Też zawsze stosuję taki układ (bez tego można zapomnieć o odporności na zakłócenia zewnętrzne) i działa bezproblemowo. Na pewno mówimy o takim samym podłączeniu? linia reset z JTAGa, przycisku czy czegokolwiek innego bezpośrednio na układ, podciągnięcie rezystorem 10k do zasilania i ściągnięcie kondensatorem 100n do masy?

    Olpad napisał:
    Czy chodzi o te 'zielone kropki' przy nóżkach i złączeniach ścieżek?

    Zielone kropki dodawane są przez Ciebie. Tak gdzie łączą się 3 lub 4 ścieżki (końcówki elementów się wliczają) EAGLE powinno wstawić kropkę w kolorze ścieżek (nazwijmy go kolorem bordowym <; ), jeśli tego nie wstawia, to tak naprawdę element nie jest podłączony, więc i na projekcie płytki tak właśnie może być. Jeśli więc nie jesteś pewny, że te wszystkie elementy są prawidłowo podłączone, to nie można być pewnym, że projekt płytki jest prawidłowy... /; Żeby się upewnić, że element jest dobrze podłączony można go przesunąć - jeśli ścieżki się za nim "ciągną", to jest dobrze.

    felekfala napisał:
    Kolego spuki, ja też stosowałem takie rozwiązanie układu resetu. W datasheet np uC STM32F103RB polecają takie rozwiązanie:
    ...
    Pin jest podciągany wewnętrznym rezystorem do zasilania.

    Polecać to oni sobie mogą - fakty są takie, że bez tego rezystora i kondensatora przy zakłóceniach zewnętrznych układ się resetuje. Co więcej - taki układ RC potrzebny jest też na liniach BOOTx (jeśli nie są spięte na stałe bez rezystora z jakimś potencjałem).

    4\/3!!

  • #8 27 Kwi 2012 08:35
    spuki
    Poziom 13  

    Zgadzam się z Freddiem w całej rozciągłości. Po prostu pin resetu jest to bardzo newralgiczna część uC. Jakiekolwiek szpilki pojawiające się na tej linii będą objawiać się naprawdę "kosmicznym" działaniem programu i ciężko to później zdebuggować (sam reset uC to najmniejszy problem). Trzeba odpowiednio zadbać o wielkość prądu jaki może tam wpływać i o odpowiednią charakterystykę narastania napięcia.
    Co do pullupa wewnętrznego (RPU) w STM32F1xx to jego wartość wynosi 30-50 kohm. Jak dla mnie to trochę mało.

    Współczesne rozwiązania likwidują większość problemów ale pamiętam jeszcze z nie tak zamierzchłych czasów jedną z kopii 8051, która jak dostała szpilę na reseta to skakała sobie po kodzie jak żabka (i weź to potem wykryj).

    I jeszcze jedno - co innego uruchamiać urządzenie na biurku z zasilacza regulowanego a co innego przy silnikach szczotkowych i z przetwornicy AC/DC za 5 zł. Lepiej od razu wyrabiać sobie prawidłowe nawyki.

    Pozdrawiam wszystkich,
    Spuki.

    gaskoin napisał:
    ...a nie ciągnąć makarony przez pół świata.

    Dobre, dobre. Powaliło mnie to z krzesła :D

  • #10 27 Kwi 2012 09:36
    spuki
    Poziom 13  

    Zgadza się - w sensie za mało bo za dużo :D

  • #11 27 Kwi 2012 09:40
    gaskoin
    Poziom 38  

    Kondensatory C25 i C26 koło LM317 powinny iść do ziemii, a idą do powietrza. Trochę Ci się żywioły pomyliły :D

    Poza tym, jeśli to ma być usb host to połączenie jest trochę złe. Powinieneś użyć jakiegoś power switcha etc. bo to przecież host zasila a nie na odwrót :)

  • #12 27 Kwi 2012 10:08
    felekfala
    Poziom 19  

    Dla tego napisałem, że do tej pory stosowałem układ z zewnętrznym Pull-upem resetu do Vdd. Chciałem się dowiedzieć co myślicie o tym zaproponowanym przez ST.

    Proponujecie np. takie podłączenie końcówki BOOT0/1 ?

    [STM32F107] Niskie napięcie zasilania USB

    Do tej pory nie używałem kondensatora.

  • #13 27 Kwi 2012 10:17
    gaskoin
    Poziom 38  

    Możesz dać bezpośrednio do masy, takie podłączenie tylko jeśli masz jakiś przycisk, zworki czy inne cuda.

  • #14 27 Kwi 2012 10:33
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Dokładnie - albo na sztywno wprost do masy/zasilania, albo - jeśli jest jakaś możliwość zewnętrznego sterowania - przez taki własnie filtr RC.

    4\/3!!

  • #15 27 Kwi 2012 16:26
    felekfala
    Poziom 19  

    Dzięki za odpowiedź do tej pory podłączałem BOOT0 do masy przez rezystor R = 10k. Boot1 używałem jaki GPIO.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME