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] szukamy błędu w projekcie

przema86 13 Paź 2011 20:45 4448 16
  • #1 13 Paź 2011 20:45
    przema86
    Poziom 10  

    Witam

    Mam problem ze swoim projektem na STM32F107RCT6
    Jest to swego rodzaju płytka ewaluacyjna która miała mi służyć do nauki programowania tej rodziny procesorów, niestety…

    Problem polega na tym, że nie mogę programować ani nawiązać łączności z procesorem. Odpowiedź w Keilu uVision brzmi „core not halted”, natomiast w ST Visual Programmer wyskakuje komunikat o sprawdzeniu kabli i ponownym podłączeniu kabla USB.

    Używałem, już programatora STM32 Discovery poprzez (SWD), a teraz mam dokładnie te same komunikaty z programatorem JTAG - ZL30PRG (Kamami) (który jest zgodny z ST-Link).


    Mam niestety przeczucie, iż musiałem wykonać jakiś błąd na etapie projektowania schematu ideowego lub projektu płytki, dlatego też proszę was o konsultację.
    (sprawdziłem 3 razy połączenia pomiędzy wszystkimi pinami, wszystkie nóżki są przylutowane prawidłowo, ani też nie znalazłem żadnych zwarć na płytce)

    Zamieszczam tutaj moje projekty w Eaglu oraz zdjęcia wykonanej płytki
    Przyznam się, że jeśli chodzi o schemat ideowy to przy otoczeniu procesora wzorowałem się na schemacie ideowym od płytki ewaluacyjnej ZL29ARM (też firma Kamami).

    Lista moich pytań:
    - Kondensatory 100nF, dopiero teraz zauważyłem w innych projektach że te kondensatory są umieszczane pomiędzy poszczególnymi parami VDD i VSS. Ja niestety tego nie zrobiłem. Umieściłem te kondensatory praktycznie w jednym miejscu. Czy to może mieć aż taki wpływ na (nie)działanie procesora ?

    - pozostałe układy na płytce, czy zauważa ktoś jakiekolwiek błędy ? czy umieściłem na płytce cokolwiek co mogłoby tak negatywnie wpływać na procesor?

    - nRST, czy nRST powinno być podciągnięte przez rezystor 100k do 3,3 V ? – wg dokumentacji procesora takie podciągnięcie jest realizowane wewnątrz procesora, płytka Butterfly takiego podciągnięcia nie miała, jednak widziałem różne projekty na których takie podciągnięcie się pojawiało.

    0 16
  • Pomocny post
    #2 13 Paź 2011 23:10
    Jado_one
    Poziom 22  

    Witam,

    Niedawno również robiłem devboard na tym procesorku (działa) - i porównując schemat samego procesora i jego nabliższego otoczenia, to w zasadzie identyczny - z tym , że ja dałem dodatkowo układ resetu na STM1818, no i kondensatorki odsprzęgające znajdują sie jakieś 3-5mm od scalaka.... Możesz dać podciągnięcie resetu rezystorem do + - nie zaszkodzi sprawdzić. Gdzieś czytałem tez o jakiś kłopotach gościa, bo dał kondensatory odsprzęgające w odległości 7cali od procka - ale nie pomne juz czy to o STM32 czy inny procek chodziło - w kazdym razie układ mu po tym zadziałał, jak se przeniósł bliżej.
    No i najciekawszy przypadek - inny gosciu po przylutowaniu procka do plytki....nie zmył resztek pasty lutowniczej, a ta lubiła "zasysać wilgoć" - w rezultacie miał ciągle jakąs rezystancję między nózkami.... Wymienił tak kilka procków......a potem coś go tknęło i zmył pastę rozpuszczalnikiem - i procek odżył :-)
    Dobrze jest, też podejrzeć pod dobrym szkłem powiększającym czy któraś z nózek procka nie wisi czasem w powietrzu niedolutowana - albo przemierzyć sondą szpilkową przejscie miedzy nózką, a goldpinem.

    --


    Pozdrawiam


    Jado.

    0
  • Pomocny post
    #3 13 Paź 2011 23:20
    MirekCz
    Poziom 35  

    1. Brak kondensatorów to poważny błąd
    2. Próbowałeś bootloader przez USB uruchomić?
    3. Daj schemat jako plik graficzny...

    0
  • #4 14 Paź 2011 09:23
    przema86
    Poziom 10  

    1.po napisaniu tego postu jeszcze trochę siedziałem nad płytką próbowałem z podciągnięciem nRST „na pająka” przez rezystor 100k do +3,3 V nie było żadnych efektów.

    2. jeśli chodzi o bootloader to USB na płytce umieściłem tylko po to aby brać z niego zasilanie
    3. ale też czytałem gdzieś (tu na elektrodzie był ten temat poruszany), że te procesory w obudowie 64-nóżkowej mają jakiś błąd i bootloader w ogóle w nich nie działa, w załączniku dodaje ten artykuł, a tutaj fragment:

    Cytat:

    „W przypadku mikrokon trolerów w obudowie LQFP64 wymuszenie tego stanu na wszystkich wymaganych liniach jest niemożliwe, w związku z czym bootloader w tych układach jest po prostu niedostępny.”



    Poniższe linki do schematu:

    [STM32F107] szukamy błędu w projekcie

    [STM32F107] szukamy błędu w projekcie


    4. kondensatory umieściłem w górnym prawym rogu na płytce, wszystkie w jednym miejscu, bardzo daleko od procesora, wiem już że to błąd, ale musiałbym mieć jeszcze pewność że to jest jedyny i główny błąd, ponieważ chce poprawić ten projekt i zamówić nową płytkę więc chciałbym wyeliminować wszystkie możliwe przyczyny

    0
    Załączniki:
  • Pomocny post
    #5 14 Paź 2011 10:45
    Jado_one
    Poziom 22  

    Jesli chodzi o projekt PCB, to ogólnie radziłbym ścieżki zasilania (+), ciągnąć tak grube jak tylko się da przy danym miejscu na PCB - u Ciebie jak widzę nie róznią się one grubością od ścieżek sygnałowych. Może układ cyfrowy zadziała, ale przy wykorzystaniu przetworników A/C, spadki napięcia na ścieżkach, będą powodowały, że wynik pomiaru będzie pływał w takt zmian obciązenia na scieżkach zasilania.
    A zamiast scieżek masy - oblać całość strefą masy, ew. też dawać grube jak to możliwe.
    Ja nie waham się dawać scieżek doprowadzających zasilanie nawet 2mm szerokości - jeśli jest tylko na to miejsce na PCB.

    Co do Bootloadera - to ew. problem dotyczy USB czy RS?.....

    0
  • #6 21 Paź 2011 17:51
    przema86
    Poziom 10  

    Witam,

    po kilku dniach walki problem nawet o krok się nie rozwiązał...

    Prze-lutowałem nowy procesor, i przylutowałem do niego kondensatory 100 nF na pająka tak jak na obrazku..

    Zaopatrzyłem się w inny układ testowy (ze sklepu), żeby mieć pewność że programator działa, co się potwierdziło.

    Sprawdzałem z 10 razy istotne Piny czyli wszystkie VDD i VSS oraz piny od JTAGA, PB3, PB4, PA13, PA14, PA15 i nRST - do sprawdzania styczności mam jedynie tani miernik który mi pika kiedy jest połączenie..

    z dokumentacji STM32 wiem już na pewno, że nie potrzebne jest podciąganie nRST w jakąkolwiek ze stron, dlatego że jest to zrealizowane wewnątrz procesora.


    [STM32F107] szukamy błędu w projekcie

    Zastanawiam się jeszcze tylko, czy możliwe że elementy C45 i L3 umieściłem za daleko od procesora? (to sa te elementy zaznaczone na czerwono na zdjęciu). powinny one być blisko VDD i VSS Piny 13 i 14 (z tym że na mojej płytce nie są one znowu aż tak daleko).

    Prosiłbym raz jeszcze , gdyby ktoś miał na tyle siły żeby sprawdzić mój projekt Pin po Pinie czy nie popełniłem tutaj jakiegoś banalnego błędu i po prostu mi to umyka..

    0
  • Pomocny post
    #7 21 Paź 2011 17:54
    Freddie Chopin
    Specjalista - Mikrokontrolery

    przema86 napisał:
    z dokumentacji STM32 wiem już na pewno, że nie potrzebne jest podciąganie nRST w jakąkolwiek ze stron, dlatego że jest to zrealizowane wewnątrz procesora

    Uwierz mi, że z dokumentacji wynika tylko, że nie są KONIECZNE, za to ja gwarantuję Ci, że są potrzebne i to nie tylko podciąganie, ale i kondensator 100n do masy. Niemniej jednak to nie jest przyczyną Twojego problemu, więc tym się nie przejmuj obecnie.

    Podłącz się UARTem i włącz bootloader - sprawdź czy ten układ w ogóle działa.

    4\/3!!

    0
  • #8 21 Paź 2011 19:55
    przema86
    Poziom 10  

    spójrz na mój post wyżej, tam masz link do pliku EP.pdf

    to jest jeden z artykułów z Elektronii Praktycznej który tłumaczy jak uruchomić własnie bootloader i jest tam jasno napisane że na procesorach w obudowie 64-pinowej to po prostu nie zadziała...

    0
  • Pomocny post
    #9 21 Paź 2011 20:06
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Skoro wydawca EP jest producentem układu to na pewno wie o nim wszystko... A czekaj, przecież to nie EP produkuje STM32 tylko ST, a w oficjalnej erracie wyczytałbyś coś takiego:

    Cytat:
    2.17 Bootloader unavailability on STM32F105xx and
    STM32F107xx devices with a date code below 937
    [...]
    Note: This limitation concerns only STM32F105xx and STM32F107xx devices with a date code
    below 937.
    STM32F105xx and STM32F107xx devices with a date code of 937 and above are not
    impacted.

    See Appendix A: Revision and date codes on device marking for where to find the date code
    on the device marking.


    No ale kto by tam zaglądał do oficjalnych dokumentów, przecież jest EP...

    4\/3!!

    0
  • Pomocny post
    #10 21 Paź 2011 21:52
    Jado_one
    Poziom 22  

    Przejrzałem scieżki zasilania i podłaczenia JTAG'a na Twoim PCB - błedów nie znalazłem. Reszta sygnałów z procka jest chyba podłaczona do Goldpinów czyli są w tym momencie w powietrzu. Jedyny sygnał, który idzie dalej to sygnał resetu idący do tego drugiego scalaczka. Na próbę możesz go odciąć, bo jeśli jest np. jakiś bład w pozostałej części PCB, związany z tym scalaczkiem, to może on blokować sygnał resetu procka.
    No, a druga jeszcze mozliwość to błedy na PCB ukryte pod soldermaską - czasami producentowi PCB coś się takiego zdarza - warto przeleciec pod szkłem powiększającym i dobrym oświetleniem (albo omomiarką) - przerwa lub zwarcie.

    0
  • #11 21 Paź 2011 22:06
    przema86
    Poziom 10  

    Jado_one dzięki wielkie za sprawdzenie.. na chwilę obecną odpadło mi kilka ścieżek :P ale zaraz sprawdze ten trop z nRST (przy czym ten drugi scalak jak do tej pory nie był podłaczany w ogóle do zasilania przezemnie)

    Freddie Chopin - a gdzie moge sprawdzić ten data code ? na moim scalaczku sa takie numery :
    GH22S 93
    CHN GH 118

    0
  • Pomocny post
    #12 21 Paź 2011 22:20
    Pituś Bajtuś
    Poziom 28  

    Freddie Chopin napisał:
    No ale kto by tam zaglądał do oficjalnych dokumentów, przecież jest EP...

    4\/3!!

    Przecież w tym artykule z EP również informacja o kodzie daty jest zawarta, więc o co to larmo?
    Cytat:
    Wada ta występuje w  przypadku mikrokontrolerów oznaczonych kodem daty produkcji mniejszym niż 937

    0
  • Pomocny post
    #13 21 Paź 2011 22:43
    Freddie Chopin
    Specjalista - Mikrokontrolery

    przema86 napisał:
    Freddie Chopin - a gdzie moge sprawdzić ten data code ?

    Ostatnie cztery lub (w tym przypadku) trzy cyfry. Zwykle rok-tydzień.

    Pituś Bajtuś napisał:
    Przecież w tym artykule z EP również informacja o kodzie daty jest zawarta, więc o co to larmo?

    No to o nic, nie chciało mi się czytać do końca <:

    4\/3!!

    0
  • #14 22 Paź 2011 18:22
    przema86
    Poziom 10  

    Rety udało się zapalić LEDa, wszystko działa już.... a przyczyna mnie najbardziej rozbija.. bo sie okazuje że teoretycznie płytka mogłabyć od początku dobra.. (ja ją teraz zniszczyłem i to ostro) :(

    nRST procesora mam podłączony razem z układem DP83848CVV (taki fajny układ do Ethernetu)... wszystko zaczęło działać jak podłączyłem ten układ do zasilania

    wcześniej tego nie robiłem bo nie chciałem jeszcze go uruchamiać, nRST jest aktywne zerem logicznym, a wewnątrz procesora jest podciągnięcie do Vcc więc nie myślałem, że to może przeszkadzać... a jednak, kiedy ten układ jest odcięty od VCC (mam w na mojej płytce do tego zworkę), wtedy nie da się programować procesora.

    mało tego.. obecnie odpadł mi jeden z tych kondensatorów które dolutowałem na pająka, dokładnie to te przy Vcc3 (w dokumentacji STM jest napisane że tam MUSI być kondensator 100nF + 4,7uF ) - widać że nie musi..


    Dzięki wszystkim za pomoc...

    Ale tematu bym nie chciał jeszcze zamykać, ponieważ, teraz zabieram się za sprawdzanie właśnie tego modułu Ethernetowego :) i jak natrafię na jakieś problemy to będę jeszcze pytał :)

    0
  • Pomocny post
    #15 22 Paź 2011 18:41
    Jado_one
    Poziom 22  

    No to się cieszę, że sie udało układ uruchomić :-)

    Te kondensatory to są bardziej ze wzgledu na EMC - przy skokowym poborze prądu przez scalak (np. procek właczajacy LED'a), na scieżce - a zwłaszcza cienkiej i długiej ścieżce zasilania, czyli o stosunkowo duzej rezystancji - odłoży się spory spadek napięcia i ścieżka zadziała jak antena promieniując falę elektromagnetyczną zakłócającą otoczenie. I z certyfikatu na zgodność z EMC nici ;-)
    A sam układ może działać. Albo zakłocać np. wejscie przetwornika A/C we własnym procesorze.
    Ten kondensator w momencie nagłego skoku prądowego oddaje swój ładunek i przez scieżke nie płynie impuls prądowy generujący zakłócenie. Dlatego wazne jest, żeby był on możliwie blisko nóżki układu scalonego - umieszczony daleko nie spełni swojej roli.

    No i tak to wygląda :-)

    0
  • Pomocny post
    #16 22 Paź 2011 19:05
    MirekCz
    Poziom 35  

    1. Układy mają zazwyczaj na wejściu diody do VCC/GND. Mogłeś zasilać ten układ DP83... z pina resetu ;P Oczywiście oznacza to, że jak wykorzystywałeś tylko słabe wewnętrzne podciąganie to ono nie dawało rady (mierzyłeś tam napięcie?)

    2. Kondensatory zazwyczaj nie są niezbędne do działania układu. Są natomiast niezbędne do PRAWIDŁOWEGO działania układu. Bez kondensatorów okaże się, że wszystko działa dobrze 99% czasu, ale czasami przestaje. Powód? No właśnie... ;-)
    Jak będziesz tak podchodził do sprawy to niedługo się doigrasz i założysz nowy temat - że w losowych momentach resetuje się Tobie procesor, albo program idzie w maliny.
    Oczywiście wymienione przez kolegę zakłócenia EMC to kolejny powód, który powinien Ciebie skłonić do używania kondensatorów. Jak robisz coś w małej ilości to lepiej nawet kilka kondensatorów za dużo niż jeden za mało ;)

    0
  • #17 31 Paź 2011 19:02
    przema86
    Poziom 10  

    Witam ponownie,

    mam teraz niezwykłą zagadkę,

    tak więc posklejałem kawałek kodu który obsługuje USART + Ethernet - program polega jedynie na tym że jak odbierze jakąkolwiek ramkę Ethernetową to powiadomi o niej i wyśle przez RS-232 MAC address nadawcy i odbiorycy (przy czym tutaj kwestia estetyczna jest niedopracowana) - tak czy inaczej kod ten przetestowałem na płytce ewaluacyjnej Butterfly2 i działa

    teraz z tym samym kodem przeniosłem się na moj projekt, przy czym ja mam procesor STM32F107RC (tam był STM32F107VC) - wg noty katalogowej róznice polegają tylko na obudowie tam jest 100 Pinów ja mam 64 piny

    program uruchamiałem krok po kroku, sprawdzając czy się ustawiają zegary, czy działa USART, diody do testowania itd. - wszystko było OK do momentu podłączenia Ethernetu (17 różnych linii sygnałowych) - na mojej płytce wszystkie te linie są doprowadzone do wyprowadzeń od procesora w taki sposób aby dało się wszystko połączyć za pomocą zworek

    otóż po dłuższych testach i pomiarach okazuje się, że problemy są przy podłączaniu RX_CLK oraz TX_CLK - razem lub pojedynczo zawsze jest problem
    - kiedy podłączam te linie to USART zaczyna nadawać "smieci/krzaki"

    najdziwniejsze jest to, że kiedy przestawiłem BAUD w Terminalu (w kompie) - z 9600 na 600 - to okazuje się że przy takich ustawieniach odbieram znów poprawnie. Czyli tak jakby po podłączaniu lini RX_CLK i Tx_CLK procesor zwalnia 16 razy ????

    oczywiście na tamtej płytce nic z takich rzeczy się nie działo.
    Aha dodam jeszcze, że na tamtej płytcę, używałem przeremapowanego USART2 - port D - a tutaj używam przeremapowanego USART3 - bo nie mam tu portu D
    oraz tam używałem przeremapowanego Ethernetu a tutaj normalnego - ze względu różnież na brak portu D

    Natomiast moje pytanie brzmi ? co o tym myślicie, czy to kwestia kodu? czy kwestia tego że ta płytka jest już na tyle zmasakrowana (ciągle nie ma tych dwóch kondensatorów które odpadły) czy właśnie jakiś błąd w projekcie?
    proszę o opinie bo ja mam tendencje do zwalania winy na Hardware i najpierw poprawiam lutownicą a potem tego żałuję



    Wklejam KOD jakby ktoś chciał skorzystać, dodam, że w tym kodzie napewno działa USART oraz konfiguracja RCC - dla procesorów z serii Connectivity Line - napewno STM32F107VC i STM32F107RC


    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Dodano po 4 [godziny] 57 [minuty]:

    kilka godzin testów więcej i powiem tyle, ze ethernet działa pomimo tego wszystkiego .. bo pinguje swoją plytkę jednak problemy z tym zegarem występują cały czas

    jednak są to problemy tylko z zegarem od USART3 - "wszystko zależy jak leży" :P
    czyli albo taki duży wpływ na płytkę mają zakłócenia, że aż USART zmienia swoje parametry - albo coś mam tutaj źle z konfiguracją

    czasem nadaje on z Baud = 9600 czasem 600 a przewaznie coś pomiedzy i są krzaki... - jednak zmienia się to w trakcie działania programu.. i to jest najdziwniejsze

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo