Elektroda.pl
Elektroda.pl
X

Search our partners

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

24c128 i magistrala i2c

31 May 2004 23:12 1652 6
  • Level 20  
    W danych katalogowych wyczytalem, ze odczyt danych z eepromu, z kolejnych adresow komorek moze nastepowac kolejno po sobie:
    ADRES n - ACK - ADRES n+1 - ACK - ... - ACK - ADRES n+x - NACK - STOP
    i tu moje pytanie. Jezeli program ma tylko i wylacznie zapisywac (bez odczytu) dane do eepromu, to czy mozna tylko jeden raz wystartowac transmisje, wyslac kilka danych, po ktorych nastapi przerwa na wykonanie innych instrukcji zajmujacych pewien okreslony czas (ale nie zwiazanych z eeprom), a nastepnie wysylac znowu dane do eeprom itd, az wreszcie zastopowac? Czy mozna "znaczny czas" czekac przed wyslaniem nastepnych danych, czy trzeba za kazdym razem stopowac i startowac od nowa?
    Za odpowiedzi wielkie dzieki.
  • Level 30  
    chodzi ci pewnie o tryb w którym adres jest inkrementowany automatycznie a wysyła się tylko same bajty danych. Jest taka możliwość(page mode) ale pamięci zawsze mają ograniczoną liczbę dostępnej pamięci strony(page) a wyczytałem że 128/256 mają po 64 bajty pamięci page. Więc tylko tyle bajtów można bez problemu wysłać a dopiero potem poczekać aż pamięć się zapisze. Jak się przekroczy te 64 to ona zaczyna zapisywac znowu od adresu który podaliśmy. To się nazywa sequential read/write i działa - sam sprawdzałem.
  • Level 20  
    Wielkie dzieki szymtro.
    A czy isnieje jakies ograniczenie dotyczace czasu, po ktorym moge zapisac kolejna dane w tym sequential?
  • Level 30  
    w manualu doczytałem się tylko tyle że potrzeba(chyba) tyle samo czasu na zapisanie co na jeden zapis - ale o to się nie założę aczkolwiek to jest bardzo prawdopodobne(to by się równało szybszy zapis niż w detalu)
  • Level 12  
    szymtro wrote:
    wyczytałem że 128/256 mają po 64 bajty pamięci page. Więc tylko tyle bajtów można bez problemu wysłać a dopiero potem poczekać aż pamięć się zapisze. Jak się przekroczy te 64 to ona zaczyna zapisywac znowu od adresu który podaliśmy.


    Witam :)
    Chciałbym jeszcze dodać:
    Jak już zostało wspomniane pamięć podzielona jest na strony(128mka na 64bajtowe). Wysłanie ciągu znaków po sobie jest możliwe, jezeli wszystkie ich adresy znajdują się na jednej stronie.
    to znaczy. od adresu początkowego strony możesz wysłać 64 bajty, ale od 32adresu strony juz tylko 32 bajty a każdy następny zostanie wpisany na początek strony.
    w 128semce adres początkowy strony wyliczasz: nr strony*64
    i tak pierwsza strona ma adres 0 druga 64 trzecia 128 ...

    Proszę niech mnie ktoś poprawi jeśli sie mylę

    Pozdrawiam
  • Level 14  
    Udios ma rację. Tak to fajnie działa. :D
  • Level 19  
    Odswiezam strasznie stary temat ale mam problem nastepujacy.
    - chce odczytac 4 bajty z pierwszej strony, rozpoczynajac od adresu 0x6, wysylam odpowiedni zestaw komend przez TWI w mikrokontrolerze at91SAM7x256, odbieram 4 bajty i jest w porzadku, dane sie zgadzaja
    - chce zapisac 4 bajty do pierwszej strony rozpoczynajac od adresu 6 i jest klops. pamiec zapisuje mi te 4 bajty ale rozpoczynajac od adresu 0x0 (czyli poczatku strony).

    Czy nie jest przypadkiem tak, ze zapis jest mozliwy tylko od poczatku strony? Czyli ze nie moge nic dopisac w srodku strony?
    Pamiec to AT24C128. Mikrokontroler AT91SAM7X256. W konfiguracji TWI raczej nie mam zadnych nieprawidlowosci (tymbardziej ze odczyt ze srodka strony dziala).
    Niestety w dataszicie Atmela ani innych producentow nie znalazlem informacji na ten temat (raczej wskazuje na to ze zapis od srodka strony powinien byc mozliwy).
pcbway logo