Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD

phanick 11 Sep 2012 01:23 9144 8
  • Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD
    Komunikacja z kartą MMC/SD odbywa się jak wszyscy wiemy poprzez protokół SPI. Problemem jest jednak fakt, że poziomy napięć akceptowane przez kartę to +3.3 V, zatem podanie jej poziomów +5 V mogłoby ją zniszczyć.

    Jak więc mikrokontrolery mogą się z nią komunikować? Są różne pomysły - np. zastosowanie diod zenera 3.3V albo rezystory, pełniące funkcje dzielników napięcia.

    Oba pomysły wydają się zadawalające, jednak mają pewne wady - po pierwsze wprowadzają opóźnienia na liniach sygnałowych, co ogranicza maksymalną prędkość komunikacji z kartą, a więc i transfer danych.

    Drugim problemem jest fakt, że przy zastosowaniu dzielników napięciowych mogą wystąpić problemy, jeżeli z kartą będzie się chciało skomunikować urządzenie wystawiające poziomy +3.3 V (np. FPGA).

    Stworzyłem więc prosty moduł, w którym rolę konwertera pomiędzy poziomem wejściowym, a poziomem wyjściowym (+3.3) pełni układ 74LVC4245A.pdf.



    Jest on bardzo szybki (nie wprowadza żadnych opóźnień) oraz uniwersalny - na jego wejściu mogą być zarówno poziomy +3.3 V lub +5 V.

    Karta zasilana jest z napięcia +3.3 V, wytwarzanego przez stabilizator regulowany LM317 (na jego wejściu jest +5V).

    Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD

    Układ z powodzeniem działa z Atmegą oraz z CPLD.
    Dodatkowo została dodana zwoka umożliwiająca ściągnięcie linii !CS karty do masy i jej włączenie na stałe.

    Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD

    Ciekawostki:
    Warto pamiętać o podciągnięciu wyjściowej linii danych karty (MISO) do VCC, gdyż linia ta jest przez kartę obsługiwana na zasadzie otwartego kolektora, tj. ściągana do masy, gdy karta wysyła bit 0 i odłączana, gdy karta wysyła bit 1.
    Ja o tym rezystorze zapomniałem i musiałem się ratować przylutowaniem go pod płytką (ale pliki eagle już są poprawione pod tym względem)

    Karty SD i MMC obsługuje się dokładnie tak samo!
    Jakiś czas temu napisałem urządzenie, w którym od zera zaimplementowana została obsługa karty MMC oraz FAT16. Jakież było moje zdziwienie, gdy niedawno kupiłem kartę SD i po włożeniu urządzenie działało bezproblemowo!

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    phanick
    Level 28  
    Offline 
    Has specialization in: energetyk najwyższych napięć
    phanick wrote 2464 posts with rating 2553, helped 57 times. Live in city Warszawa. Been with us since 2007 year.
  • #2
    pier
    Level 23  
    Witam.
    Urządzenie bardzo przydatne ale średnio zrobione.
    Dlaczego akurat taki stabilizator? Pomijając wygląd całości wydaje mi się że Lm317 nie pracuje poprawnie. Jeśli mnie pamięć nie myli ten stabilizator do poprawnej pracy wymaga co najmniej 2.5V wyższego napięcia wejściowego a typowo jest to nawet 3V. Co nie znaczy że układ nie będzie działać. W tym miejscu najlepszy byłby stabilizator LDO np LM1117 oczywiście w smd.
    Mierzyłeś napięcie za Lm-em?
  • #3
    remiorn
    Level 18  
    phanick wrote:

    Stworzyłem więc prosty moduł, w którym rolę konwertera pomiędzy poziomem wejściowym, a poziomem wyjściowym (+3.3) pełni układ 74LVC4245A.pdf.

    Jest on bardzo szybki (nie wprowadza żadnych opóźnień) oraz uniwersalny - na jego wejściu mogą być zarówno poziomy +3.3 V lub +5 V.


    Wbrew pozorom 8ns to czasami opóźnienie na tyle znaczące, że dyskwalifikuje układ (nie mówię, że w tym zastosowaniu), więc nie za bardzo da się pisać, o żadnych opóźnieniach.

    Jak by nie patrzeć odpowiada to "tylko" 62,5 Mhz.
  • #4
    oskar777

    Level 26  
    To dla Kolegi dołożę działający schemat z wersją 1117 by miał za wzór, układ działający oczywiście. Piny wyglądają tak a nie inaczej gdyż PCB jest robione pod płytkę stykową.
    Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD
  • #6
    pier
    Level 23  
    phanick wrote:
    pier wrote:
    Mierzyłeś napięcie za Lm-em?

    3,27V

    Pewnie dlatego że w układzie jest pomijalny pobór prądu.
    Ale na przyszłość radzę na to uważać. No i na pewno że stabilizatorem smd układ wyglądałby o niebo lepiej.
  • #7
    User removed account
    User removed account  
  • #8
    ADI-mistrzu
    Level 30  
    Kiedyś zrobiłem coś podobnego, tylko dla kart microSD i znacznie mniejsze:
    Moduł do komunikacji AVR/FPGA/CPLD z kartą MMC/SD
    Zastosowałem własnie 74LVC125 oraz stabilizator liniowy LDO najmniejszy jaki był tylko dostępny (na płytce widoczny w dolnym prawym rogu).
    Po jednej stronie płytki było złącze microSD z wyrzutnikiem, po drugiej konwerter stanów i regulator napięcia. Za złączem pady do przylutowania złącza, przewodu czy czegoś innego.

    Ogółem jestem zwolennikiem takich rozwiązać w oparciu o serię LVC, dzielnik rezystancyjny sprawdza się, ale do małych częstotliwości (3-5MHz), potem już pojemności pasożytnicze się odzywają.
  • #9
    Hetii
    Level 16  
    Witam :)


    Nie wiem jak ma się sprawa z FPGA ale np jeżeli chodzi o RaspberryPI to problem sterowania poziomem napiec jest przyczyna ograniczenia prędkości przesyłu danych do 20MB/s.

    Zdaje się, ze bez specjalistycznego układu ani rusz... no chyba ze ktoś ma inny pomysł ?

    Pozdrawiam.