Pamięci, ale jakie?

Dyskusje ogólne na temat "cyfrówki" czyli wszystko o TTL/CMOS, językach VHDL i VERILOG, bramkach, rejestrach, przerzutnikach... Dobre miejsce na pytania odnośnie uniwersalnych programatorów (np. Willem) a także podłączania własnych peryferiów do komputera PC.
Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 23 mar 2008, 10:54

Ehhh... Tak, ponieważ posiadają 2-bajtowy adres.
Wygląda to mniej więcej tak:

Kod: Zaznacz cały

Odczyt_pamiec_eeprom:

I2cstart
I2cwbyte 160   'adres pamięci
I2cwbyte adres_MSB
I2cwbyte adres_LSB
I2cstart
I2cwbyte 161
I2crbyte odczytany_bajt , Nack
I2cstop

Return

Zapis_pamiec_eeprom:

I2cstart
I2cwbyte 160   'adres pamięci
I2cwbyte adres_MSB
I2cwbyte adres_LSB
I2cwbyte bajt_do_zapisu
I2cstop

Return
Oczywiście istnieje możliwość zapisu całej strony, wtedy możmna naraz zapisać od 1 - 256 bajtów.

Pozdrawiam ;)

Awatar użytkownika
gwozdex
Użytkownik
Posty: 879
Rejestracja: 24 lut 2006, 10:04
Lokalizacja: Czechowice-Dziedzice
Kontakt:

Post autor: gwozdex » 23 mar 2008, 10:55

Witam! Już podaję te listingi. Nie są one mojego autorstwa. Przydadzą się także artykuły z EP11/2005 oraz 12/2005. Podane w załączniku listingi są dedykowane właśnie tym artykułom. Pozdrawiam.
Załączniki
EEPROM I DATAFLASH.rar
(8.75 KiB) Pobrany 660 razy

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 23 mar 2008, 20:50

No tak, to logiczne!Dla pamięci powyżej 256kB potrzeba dłuższego niż BYTE słowa adresującego (np. WORD)! Jeśli to tylko tyle różnic, powinienem sobie poradzić.

Przeglądając notkę AT89C512B odkryłem kolejny problem. Te pamięci są przystosowane do zasilania 3,3V (max. 4,6V), podczas gdy ja będę zasilał cały układ z 5V. Obniżenie całkowitego napięcia urządzenia poniżej 5V raczej nie wchodzi w grę.

Dziękuję także Kolegom za wsparcie programowe, zapodane procedurki będą nieocenione! :)

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 24 mar 2008, 8:22

Wiesz co, nie wiele trzeba kombinować, zeby zasilać pamięci z 3,3V, a resztę układu z 5V :grin: Są fajne układy LF33 dostępne w TME, jeden kosztuję ok. 1zł. Z tym, że rezystory podciągające, powinieneś podłączyć do plusa zasilania pamięci, a nie mikroprocesora :D

Pozdrawiam ;)

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 24 mar 2008, 8:41

M@ciej pisze:No tak, to logiczne!Dla pamięci powyżej 256kB potrzeba dłuższego niż BYTE słowa adresującego (np. WORD)!
256B
Pozatym w niektórych pamięciach większych od 256B część adresu jest umieszczona w DEVSEL. To wszystko jest szczegółowo opisane w datasheetach konkretnych modeli pamięci.

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 24 mar 2008, 10:47

Wykombinowanie zasilania 3,3V nie stanowi problemu i podane przez Kolegę stabilizatory są mi znane. Problem jest w tym, czy procek zasilany napięciem 5V "dogada się" z pamięciami zasilanymi 3,3V?Chodzi zapewne o dopasowanie poziomów napięć?Czy są jakieś przekształtniki,czy trzeba kombinować, np. z transoptorami?

Przewertowałem notki układów AT24Cxxx pod kątem zasilania i tak:

AT24C01-AT24C64 mogą być zasilane max. z 5,5V (typowo 5V)

AT24C128-AT24C1024, można zasilać max, z 4,6V (typowo 3,3V).

Gdyby ustalić napięcie zasilania całego urządzenia na 4,4-4,5V (za pomocą LM317), powinny "ruszyć" wszystkie układy, tak sądzę.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 24 mar 2008, 12:06

Wiesz, jak powiedziałem, najprostszym sposobem jest połączenie rezystorów podciągających (3,3k ... 4,7k) do zasilania 3,3V. Jednak jeżeli chcesz, aby znajdowały się one na wyższym napięciu, bo masz więcej układów podłączonych do I²C to wystarczy dać niewielkie rezystory. Nie trzeba nic kombinować z transoptorami... O ile pamiętam, aby podłączyć mikroprocesor 5V i układ Slave 3,3V powinny to być rezystory 2k...5k, zależy to ile układów Slave na napięcie 3,3V chcesz podłączyć. Jak znajdę coś ciekawego w necie to dam linka ;)

Pozdrawiam ;)

[ Dodano: 2008-03-24, 12:20 ]
A tak w ogóle zajrzyj do noty pisze "Voltage on Any Pin with Respect to Ground .................................... –1.0V to +7.0V", także możesz bez większego problemu podłączyć zasilany z 5V mikroprocesor i tą pamięć. Tam pisze, że zasilanie powinno wynosić 3,3V, ale zasilania, a nie komunikacji. Znalazłem również stronę z podłączeniem STA013 dekodera MP3 zasilanego z 3,3V do mikroprocesora 5V.
Link

Pozdrawiam ;)

Awatar użytkownika
gwozdex
Użytkownik
Posty: 879
Rejestracja: 24 lut 2006, 10:04
Lokalizacja: Czechowice-Dziedzice
Kontakt:

Post autor: gwozdex » 24 mar 2008, 13:46

AT24C128-AT24C1024, można zasilać max, z 4,6V (typowo 3,3V).
Zasilałem te układy niejednokrotnie napięciem 5VDC i nie było z nimi żadnych problemów.
Kolega który napisał:
A tak w ogóle zajrzyj do noty pisze "Voltage on Any Pin with Respect to Ground .................................... –1.0V to +7.0V", także możesz bez większego problemu podłączyć zasilany z 5V mikroprocesor i tą pamięć.
ma rację.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 24 mar 2008, 14:46

Teraz patrzę i widzę, ze kolega tu jakieś głupoty popisał... Faktycznie AT24C512B zasilany jest 1,8V - 3,3V, ale AT24C512... przecież pisze, że zasilanie jest od 1,8V - 5V. Specjalnie zajrzałem w noty, bo wynikałoby z tego, że moje projekty nie powinny w ogóle działać, ponieważ mają pamięci AT24C1024 i AT24C512 zasilane z 5V :neutral:

Linki do not katalogowych:
AT24C512
AT24C512B

I jeszcze raz zachęcam do czytania lektur obowiązkowych, czyli NOT KATALOGOWYCH...

Pozdrawiam ;)

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 24 mar 2008, 15:30

Ostatnio bardzo dużo czasu spędzam na studiowaniu not katalogowych. Jeśli chodzi o pamięci AT24Cxx, mam chyba wszystkie, zarówno dla "zwykłych", jak i dla wersji B. Np. w nocie AT24C512B jest takie coś:

Absolute Maximum Ratings:

Voltage on Any Pin with Respect to Ground ....................................–1.0V to +7.0V
Maximum Operating Voltage .......................................................... 4.3V

Czyli między dowolnym pinem a masą może być aż 8V (od -1 do 7), natomiast maksymalne napięcie robocze wynosi tylko 4,3V? Nie za bardzo rozumiem, obie te informacje jakby się kłóciły.

W nagłówku wspomnianej noty jest podany zakres napięć 1.8-6V, natomiast w nagłówku noty np. AT24C64B jest podany 2,7-5,5V. Ale skoro Koledzy podłączali *512 i *1024 do 5V i działało, mi też powinno?

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 24 mar 2008, 19:39

Widzę, że się za bardzo nie rozumiemy... Wiesz te obie informacje się nie kłócą... Cała magistrala I²C pomyślana jest raczej dla układów zasilanych z 5V. No, więc jaki sens byłoby wypuszczenie pamięci, która nie potrafi się z takim układem porozumieć, albo potrzebuje mnóstwo dodatkowych elementów :?: O ile pamiętam takie układy na IO mają MOSFETy, a MOSFETy mają to do siebie, że maks. otwarcie jest przy napięciu ok. 4V, a dopuszczalne napięcie bramki to ok. 15V. Oczywiście mówię tu o dużych MOSFETach. Także wydaje mi się, że wszystko ma ręce i nogi i żaden konstruktor tych pamięci się nie pomylił.

Patrzę tak na noty katalogowe pamięci AT24C512B i AT24C1024B. Wychodzi na to, że pamięć AT24C512B jest wersją niskonapięciową AT24C512, a AT24C1024B jest pamięcią o rozszerzonym adresie układu, posiada chyba możliwość podłączenia 4 takich pamięci, nie jak w starszym typie, czyli AT24C1024, gdzie można było podłączyć tylko 2. Napięcia AT24C1024 są takie same. No z tym, że pamięć AT24C1024B ma możliwość działania z prędkością magistrali 1MHz już od 3,3V, a starsza wersja przy tym napięciu wyrabia tylko 400kHz.


Pozdrawiam ;)

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 26 mar 2008, 22:03

No dobra, więc kupię cztery '512 i zaadresuję je na 1 do 4. Można potem ewentualnie dodać jeszcze cztery '64 i zaadresować je od 5 do 8, bo na płytce są już przewidziane 8 miejsc (podstawek). Wszystko zasilę z 5V i powinno grać.

ODPOWIEDZ