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

Jak podłączyć zewnętrzną pamięć do mikrokontrolera 8051? Linia danych, adresy, max rozmiar

cristof_w 01 Wrz 2007 12:42 2868 9
REKLAMA
  • #1 4238979
    cristof_w
    Poziom 17  
    Posty: 338
    Pomógł: 3
    Ocena: 9
    Witam. Jak w temacie.
    Czy ktoś może mnie wytłumaczyć (najlepiej piśmiennie i obrazowo) jak podłączyć zewnętrzną pamięć do procka rodziny '51 ? Ile potrzeba linii danych , adrsowych? Jaka może być max. pamięć, ile kilo? Sa jakieś ograniczenia? Może dobra literatura albo linki?
    Szukałem na google, nic sensownego nie znalazłem.
    Pozdrawiam.
  • REKLAMA
  • REKLAMA
  • #3 4239149
    cristof_w
    Poziom 17  
    Posty: 338
    Pomógł: 3
    Ocena: 9
    Dziękuję.
    Od razu mam pytanie, bo tego nie zakumałem.
    Pamięć (na schemacie jest to scalak U3) ma 8kB. I teraz :
    Jest 13 końcówek adresowych (od A0 do A12), wynika to z 2^8 co daje 8192. Dobrze wnioskuje?
    Natomiast dlaczego jest 8 danych? Dlaczego tyle?
    Jak się ma jedno do drugiego? Chciałbym to zrozumieć.
    Pozdrawiam.
  • REKLAMA
  • #4 4239193
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    Pamięci możesz max 64kB podłączyć, a stosując pewne triki możesz podłączyć znacznie więcej. W tym drugim przypadku podłączasz dodatkowe linie adresowe pod porty IO i ręcznie nimi sterujesz. Przy czym wtedy trzeba program podzielić na strony po 64kB i odpowiednio przełączać.

    Cytat:
    Jest 13 końcówek adresowych (od A0 do A12), wynika to z 2^8 co daje 8192
    ?? Chyba matematyka nie jest Twoją mocną stroną. Jakim cudem A0-A12 to 8 linii i jakim cudem 2^8 to 8192?
    I co to znaczy 8 danych? Chyba chodzi Ci o 8 linii danych, a to wynika z tego, że procesor jest 8-bitowy, czyli ma 8-bitową magistralę danych.
  • REKLAMA
  • #5 4239195
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    Pamięć 27C64 ma organizację: 8192 komórki 8-bitowe. Tak więc magistrala danych w tej pamięci jest 8-bitowa i po zaadresowaniu dowolnej komórki pamięci masz dostęp do wszystkich 8 bitów tej komórki. Multipleksowanie danych i młodszych 8 bitów adresu zapewnia zatrzask 74HCT573.
  • #6 4239312
    cristof_w
    Poziom 17  
    Posty: 338
    Pomógł: 3
    Ocena: 9
    Pomyliłem się...
    Oczywiście chodziło mnie o 13, i że 2^13 daje 8192.
    natomiast o szyne danych, która jest bitowa, to bierze się to stąd, że komórki są 8 bitowe, tak?
    Dobrze zrozumiałem?
    Pozdrawiam.
  • Pomocny post
    #7 4240346
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    Bierze się to z tego, że procesor wykonuje operacje jedynie na liczbach 8-bitowych, a więc pamięć też musi być 8-bitowa, czyli musi mieć 8 linii danych (D0-D7). Możesz dać pamięć 16-bitową, ale wtedy linie danych D8-D15 nie będą używane, co jest oczywistym marnotrawstwem.
  • #8 4241780
    cristof_w
    Poziom 17  
    Posty: 338
    Pomógł: 3
    Ocena: 9
    Ok, dziękuję, wszystko jasne. Pozdrawiam.
  • #9 4245753
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Cześć!

    Pamięć w C51 dzieli się na pamięć kodu i danych. I zarówno pamięci danych jak i kodu możesz mieć 64 kB.

    I tu uwaga wyborem pamięci kodu steruje pin EA , tzn jeśli masz kość klasy C51 to masz najczęściej 4 kB w kości , jesli C52 to 8 kB w kości. Więc jeśli nie ściągniesz EA do masy to 4kB w kości pokryją się z zewnętrzną pamięcią i procek najpierw będzie czytał z środka.

    Jeśli kod twojego programu przekracza 4kB w C51 to musisz dodać pamięć kodu sterowaną wyjściem PSEN.

    W procku masz jeszcze 256 bajtów RAM i możliwość podłączenia pamięci SRAM jako pamięci danych zewnętrznej. Tutaj do sterowania pamięcią służą sygnały RD i WR.

    Więc jeśli masz dużo danych to podłączasz pamięć zewnętrzną danych, a jeśli dużo kodu to pamięć kodu itd, itd, itd. Mam nadzieję że to jest czytelne Darek
  • #10 5814481
    dispelragnarok
    Poziom 1  
    Posty: 1
    moim pytaniem bylaby potrzeba podlaczenia tylko 32 kB pamieci ram
    Chcialbym wiedziec co musze zrobic aby tak bylo
    Prosilbym o jak najlepsze wytlumaczenie bo jestem poczatkujacy

Podsumowanie tematu

✨ Podłączenie zewnętrznej pamięci do mikrokontrolera rodziny 8051 wymaga zrozumienia organizacji linii adresowych i danych. Mikrokontroler 8051 ma 16-bitową magistralę adresową, co pozwala na adresowanie do 64 kB pamięci zewnętrznej. Linia danych jest 8-bitowa, ponieważ procesor operuje na 8-bitowych słowach, więc pamięć zewnętrzna powinna mieć 8 linii danych (D0-D7). Przykładowo, pamięć 27C64 ma 13 linii adresowych (A0-A12), co odpowiada 8192 (8kB) komórkom 8-bitowym. Maksymalny rozmiar pamięci zewnętrznej to 64 kB, ale można rozszerzyć przestrzeń adresową, stosując dodatkowe porty I/O do przełączania stron pamięci. W mikrokontrolerach 8051 pamięć dzieli się na pamięć kodu i danych; pamięć kodu zewnętrznego jest sterowana pinem EA i sygnałem PSEN, natomiast pamięć danych zewnętrznych sterowana jest sygnałami RD i WR. Wbudowana pamięć RAM to 256 bajtów, a pamięć wewnętrzna kodu zwykle wynosi 4 kB (C51) lub 8 kB (C52). Podłączenie większej pamięci wymaga odpowiedniego zarządzania liniami adresowymi i sygnałami sterującymi.
REKLAMA