logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błędny odczyt z AT45DB161D przez ATmega16 na SPI - różnice napięć?

nemoo 18 Wrz 2007 21:46 1517 9
REKLAMA
  • #1 4297399
    nemoo
    Poziom 14  
    Posty: 95
    Pomógł: 8
    Ocena: 4
    Witam. Mam oto taki problem., że nie mogę odczytac poprawnej wartości zapisanej do bufora pamięci Serial Flash poprzez ATMege16 poprzez interface SPI. Np. gdy wpisuje 0x26 to wyciągam 0x0A itp bez żadnej logiki te dane sa poupychane. W czym może być problem?? Wykorzystuje do tego zarówno biblioteke dataflash albo samemu tworze kod i ciągle to samo. Zasilam 3V3 ale logia pracuje na 5V. Jednak przecież w dokumentacji jest napisane że układ to rozumie. Walcze juz z tym dwa dni i kompletna klapa. Kable są bardzo krótkie rzędu max 5cm. Prosze o pomoc.
  • REKLAMA
  • #2 4297492
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Bufor tej pamięci nie służy do przechowywania danych tylko pośredniczy pomiędzy interfejsem a pamięcią flesh. Czyli po jego zapisaniu należy go przesłać do pamięci flash a potem można do ponownie pobrać z niej i wtedy można odczytać ten bufor i powinno być to samo. Jeszcze musisz powiedzieć przez, który bufor to robisz bo niektóre pamięci mają dwa bufory. Ta pamięć ma dwa po 528 bajtów.
  • REKLAMA
  • #3 4297573
    nemoo
    Poziom 14  
    Posty: 95
    Pomógł: 8
    Ocena: 4
    Pracuje tylko na pierwszym buforze i zajmuję się tyko jedną komórką bufora. Jak sprawdze jak wygląda sprawa gdy odczytam po wysłaniu do pamięci to dam znać. Jednak oprócz danych odczytuję tez inne Manufacturer i ID Device niz jest to zapisane w dokumentacji do tej pamięci

    Dodano po 2 [godziny] 6 [minuty]:

    Już mam!

    Okazało się że jak obniżyłem napięcie zasilania z 3v3 na 2v5 zaczęło dobrze działać. Dane z bufora też są prawidłowo odczytywane. Po wielu godzinach walki temat uważam za zamknięty.
  • REKLAMA
  • #5 4298548
    nemoo
    Poziom 14  
    Posty: 95
    Pomógł: 8
    Ocena: 4
    Naprawdę nie wiem. Zacząłem zabawę z DF parę dni temu. Poczytałem w internecie i w dokumentacji co i jak podłączyłem do 3v3 jak pisali forumowicze i do dzieła... a tu klapa jaką opisałem w temacie.
    Jednak faktem jest to że teraz działa tak jak powinien:
    <dana>--<bufor>--<pamięć>--<bufor>--<dana> i dana jest prawidłowa.
    A Ty podłączałeś już tą pamięć pod 3v3 i było dobrze?
  • #6 4298573
    Mad Bekon
    Poziom 23  
    Posty: 794
    Pomógł: 31
    Ocena: 36
    Tak, ja jakiś czas temu podłączałem pod 3v3. Głównie działała dobrze, czasami się krzaczyła, ale to przypuszczam z powodu złego zasilania. Za jakiś czas spróbuję z stabilizatorem 3v3. Na diodzie zenera miałem za duży spadek :/
  • REKLAMA
  • #7 4298583
    nemoo
    Poziom 14  
    Posty: 95
    Pomógł: 8
    Ocena: 4
    Hmm to albo mam jakąs "Chińską" kość albo twoje krzaczki były spowodowane tym samym co u mnie . Przy pierwszych próbach podłączania proponuje sprawdzić jak się będzie zachowywał twój układ gdy obniżysz mu napięcie do "moich" 2V5
  • #8 4301491
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Testuję AT45DB041B i przy 2,5V zapisuje i czyta się bez problemu.
  • #10 4301985
    arturt134
    Poziom 27  
    Posty: 792
    Pomógł: 76
    Ocena: 24
    Ja używam AT45DB041B na 3,3V. Działa bezbłędnie. Albo masz jakąś podrobioną kość, albo błąd jest w czym innym.

Podsumowanie tematu

✨ Problem dotyczył błędnego odczytu danych z pamięci Serial Flash AT45DB161D podłączonej do mikrokontrolera ATmega16 przez interfejs SPI. Odczytywane wartości były niezgodne z zapisanymi, mimo stosowania zarówno biblioteki DataFlash, jak i własnego kodu. Pamięć była zasilana napięciem 3,3 V, natomiast logika układu pracowała na 5 V, co według dokumentacji powinno być obsługiwane poprawnie. Wskazano, że bufor pamięci nie służy do bezpośredniego przechowywania danych, lecz pośredniczy między interfejsem SPI a pamięcią flash i wymaga przesłania danych do pamięci, a następnie odczytu z niej. Po wielu próbach okazało się, że obniżenie napięcia zasilania pamięci do 2,5 V rozwiązało problem i odczyty były prawidłowe. Inni użytkownicy potwierdzili, że pamięci AT45DB041B działają stabilnie przy 2,5 V lub 3,3 V, choć czasem mogą występować problemy z zasilaniem, np. przy użyciu diody Zenera. Sugerowano możliwość uszkodzenia lub podróbki układu w przypadku nieprawidłowego działania przy 3,3 V. Kluczowe jest prawidłowe zarządzanie buforami oraz stabilne i odpowiednie napięcie zasilania pamięci.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA