Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
TespolTespol
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[STM32] Kasowanie FLASHa po szybkich zmianach zasilania.

09 Jan 2011 11:46 2862 15
  • Level 27  
    Witam.

    Czy ktoś spotkał się z problemem kasowania komórek pamięci FLASH mikrokontrolera STM32 po szybkich zmianach jego zasilania?

    Mam urządzenie wkorzystujęc SMT32F103RBT6. Zasilane to przetwornica na LM2576 ->5V, potem stab. liniowy 3,3V. Od strony eletronicznej wszystko zaprojektowane jest poprawnie.

    Urządzenie działa poprawnie. Jednak, gdy np, szybko włącza/wyłącza się zasilanie układu np. przez szybkie wkładanie/wyciąganie wtyku zasilającego z układu to po kilku próbach program w mikrokontrolerze przestaje się uruchamiać.
    Pomaga tylko ponowne zaprogramowanie urządzenia.
    Co może być tego przyczyną??
  • TespolTespol
  • MCUs specialist
    A da się zgrać program który się nie uruchamia? Jeśli się da to go zgraj i porównaj.

    4\/3!!
  • TespolTespol
  • Level 27  
    Tak, da się. Zgrana pamięć ma niektóre komórki pamięci wykasowane (ustawione 0xFFFFFFFF)...
  • MCUs specialist
    Hmm... Przez "niektóre komórki" rozumiesz tak totalnie jakieś arbitralne adresy, czy całe strony? Dziwne trochę, bo przecież flash da się kasować tylko stronami... Masz w swoim programie funkcje zapisu do flash'a?

    4\/3!!
  • Level 22  
    Osobiście byłem kiedyś świadkiem, jak kolega podłączył oscyloskop pod wyprowadzenia kwarcu w ATmega128 i flash się skasował. I to nie zdarzyło się raz, tylko kilka...
    Więc kto wie, może pojawiają się jakieś dziwne stany przejściowe... Może większe kondensatory na szynie 3,3V?
  • Level 27  
    Witam.

    Prawdopodobnie kasowały się całe strony.
    Program używa zapisu do FLASHa, ale wywoływany jest przez użytkownika, nie ma więc raczej możliwości by funkcja ta uruchamiała się sama, np przy starcie mikrokontrolera.

    Jeśli chodzi o AVRy to też kilka razy zdarzyło mi się spotkać z przypadkiem samoistnego kasowania programu we flashu.
    Przykład - urządzenie sprzedawane seryjnie, kilka sztuk w przeciągu paru lat wróciło z uszkodzonym programem. Przeprogramowanie procesora oczywiście pomogło...
  • User removed account  
  • Level 18  
    A czy po "Unlock flash" wykonujesz "Lock flash"? Teoretycznie mogłoby to mieć jakiś wpływ.
  • Level 27  
    Pamięć raczej nie jest blokowana po zapisie. Do programowania jest używany Rlink + środowisko Ride7.
    Jeśli chodzi o BOD (POR, PDR), są to domyślne ustawienia dla procesora (2V).

    Poniżej schemat zasilania, układu resetu i zasilania procesora.
    [STM32] Kasowanie FLASHa po szybkich zmianach zasilania.
  • MCUs specialist
    Nie chodzi o blokowanie przed odczytem czy o blokady w procesie programowania, tylko o zablokowanie możliwości zapisu flasha po programowaniu z poziomu aplikacji - przed zapisem pamięć trzeba odblokować, po zapisie dobrze ją ponownie zablokować.

    4\/3!!
  • User removed account  
  • Level 32  
    Jeżeli w aplikacji występuje procedura czy to zapisu do EEPROM czy do FLASH a nawet do RAM (tutaj raczej chodziłoby o zewnetrzy ram z własnym zasilaniem zeby sprawdzic) ze 100% pewnością można powiedziec że w przydku wystąpienia stanów nieustalonych bez zabezpieczenia sie BOD-em program prędzej czy później skoczy do tej procedury i zanim sie procesor na dobre wyłączy namiesza w pamieciach.
    I nie zalezy to od typu procera a czym szybsze tym gorzej sie zachowują pod tym względem.
  • Level 27  
    Dodanie odblokowywania i zablokowywania flasha po zapisie nie pomogło.

    W programie zakomentowana została funkcja zapisu do flasha. Niestety to także niewiele pomogło. Pamięc nadal ulega skasowaniu w sytuacjach opisanych w pierwszym poście.

    Kolejna dziwna sprawa. Program wgrany do procesora i odczytany z niego (bez wyłączana zasilania czy resetu procesora) różni się. Nie są to na pewno zmiany wywołane przez funkcje zapisu flasha z poziomu programu, bo po porównaniu dwóch plików hex widac różnice w komórkach pamięci w początkowym obszarze pamięci (natomiast na "kontrolowany" zapis przeznaczona jest ostatnia strona).
  • Level 18  
    Czym programujesz mikrokontroler (narzędzia)?
  • Level 26  
    kiedyś miałem podobny przypadek z AVR'em bez włączonego BOD'a.

    Ogólnie problem wygląda na wolo narastające/opadające zasilanie.

    Spróbuj zastosować POR, PDR na od wyższego progu, albo lepiej zewnętrzny reset od 3,0V.

    Chociaż po tym co napisałeś w ostatnim poście to już sam nie wiem...

    Pozdrawiam