Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Podłączenie karty SD/MMC do Atmega

19 Lis 2011 01:48 8637 27
  • Poziom 18  
    Witam
    Czy wartości elementów podane na schemacie poniżej będą prawidłowe do poprawnej pracy Atmega z kartą SD ?

    Podłączenie karty SD/MMC do Atmega

    Oprócz tych spotkałem się jeszcze z 1,8k/3,3K ( projekt Kolegi Duch ) oraz 5K/10K (na płytce EVB4.3 )
  • PCBway
  • Użytkownik obserwowany
    Kolego wartości nie są krytyczne a dzielnik napięcia w skrócie 1/3 do - 1/2 żeby zbić napięcie 5V do logiki 3.3V. Każda wartość dla sumy rezystancji 10 - 15k będzie dobra :)
  • PCBway
  • Poziom 42  
    opamp napisał:
    Kolego wartości nie są krytyczne a dzielnik napięcia w skrócie 1/3 do - 1/2 żeby zbić napięcie 5V do logiki 3.3V. Każda wartość dla sumy rezystancji 10 - 15k będzie dobra :)


    Kolego, wartości tych rezystorów i ich staranne dobranie są o tyle krytyczne, że zdecydowanie najlepiej jak najszybciej zastąpić je choćby scalakiem 74HC125 i mieć sięty spokój z ich dobieraniem. A tak w ogóle to dobieranie nie polega na zbijaniu, tylko precyzyjnym dobraniu rezystorów tak żeby dało radę w miarę jak najlepsze zbocza sygnałów osiągnąć a w efekcie jeszcze możliwość uzyskiwania dobrych prędkości SPI. W przypadku w/w scalaka w ogóle nie ma takich problemów.
  • Poziom 18  
    wiem, że można 74HC125, ten układ jest używany na płytce modułu LAN EVB, który kupiłem oraz w schemacie modułu bluetooth. Ale płytkę mam już wykonaną - wzorowałem się na schemacie EVB 4.3 i na powyższym schemacie, więc pozostaje tylko dobrać właściwie rezystory.

    Na płytce EVB 4.3 działa to ok - zarówno softwarowe i hardwarowe SPI - jest problem z większymi kartami od 1 Gb w dórę.
  • Poziom 42  
    Dziwne, ja w tym temacie:

    https://www.elektroda.pl/rtvforum/viewtopic.php?t=2133447&highlight=

    nie mam najmniejszego problemu z kartami większymi niż 2GB. Właśnie na końcu napisałem post że PetitFat nawet pięknie działa z kartami SDHC 4GB oraz 8GB przy użyciu FAT32. A dodam, że korzystam z bardzo dużej prędkości SPI bo aż 12MHz !!! (kwarc 24MHz a do tego ustawiony bit SPI2X przy podziale FCLK/2) ;)

    Oczywiście przy tych rezystorkach to mógłbym o takich osiągach zapomnieć.
  • Poziom 18  
    Póki co to pozostanę na dzielniku 1,8 K / 3,3k

    Do Kolegi Mirka mam pytanie o podłączenie tego układu 74HCT125. Czy poniższy schemat jest poprawny ?
    i do czego podpiąć zasilanie układu 74HCT125 ? 3,3V czy 5V, bo na Elektrodzie znalazłem dyskusję , że trzeba zasilić z 3,3V, a ma schemat użycia 74HCT125 z układem ENC28J60 i tam jest podpięte do 5V

    Podłączenie karty SD/MMC do Atmega
  • Poziom 42  
    Tak tylko Panowie dodam, że hmm sorki pomyliłem się z symbolem układu. Nie 74HC125 (chociaż ten też by jeszcze działał przy zasilaniu 3,3V nawet jeśli przekroczy się dopuszczalne napięcie wejściowe powyżej VCC+0,5V) a już NA PEWNO NIE 74HCT125

    Zdecydowanie trzeba użyć 74LVC125 !!!!
  • Poziom 18  
    no to z tym 74LVC125 będzie problem, chyba że Kolega Mirek ma swoje sprawdzone źródło - w TME mają w katalogu, ale brak na stanie.

    Znalazłem jedynie tutaj
  • Poziom 42  
    W tme zwykle są ale ja sam ostatnio zakupiłem chyba resztkę bo 250szt ;) więc śmiało bierz ze Sławmira - też dobra cena.
  • Poziom 42  
    aaadamw napisał:
    a może 74LVC245? Też powiniec działać i jest w TME


    Jak najbardziej również się nadaje do takiego celu w 100% (też korzystam niejednokrotnie z tej wersji tego scalaka w takim celu). No tylko, że tutaj pozostanie 5 wolnych buforków i ciut większa obudowa jest. Ale w sumie do jednokrotnego użycia to co to za różnica ?
  • Poziom 18  
    Faktycznie jest dostępny. Można prosić o schemat jego podłączenia ? Ściągnąłem już PDF do tego układu - nie wiem jak podłączyć DIR i OE

    Obudowa mnie nie przeraża i tak jest tylko w SMD
  • Poziom 42  
    OE to aktywacja całego scalaka, nie pamiętam noty ale zdaje się sterowane jest to wejście stanem niskim więc można go na stałe do GND. A DIR ? no weź zajrzyj do noty PDF ;) .... ustalasz kierunek przepływu albo od wejść A do B lub od B do A w zależności czy na DIR podasz 0 czy 1 i w zależności jak sobie to podłączysz. Masz prostą tabelkę stanów w PDF.
  • Poziom 18  
    Z OE masz rację - ściągnąłem PDF do konkretnie 74LVC245A

    tabelka jest mniej więcej taka:
    OE T/R An Bn
    L L A=B Inputs
    L H Inputs B=A

    Czy dla A jako wejście OE ma być L , a DIR ma być H

    Głupie pytanie - jak w Eagle wyświetlić podłączenie GND i VCC ? bo domyślnie nie wyświetla i jednocześnie podłącza do VCC 5V, a nie o to tutaj chodzi.

    Poniższy schemat będzie OK ?
    Podłączenie karty SD/MMC do Atmega
  • Poziom 42  
    no to już trzeba eagla troszkę poznać ;) masz taką opcję zdaje się Invoke i wyciągasz nią nogi zasilania takich scalaków ;)
  • Poziom 18  
    kilka płytek już zaprojektowałem i zostały wykonane w Satland, jakoś do tej pory nie miałem problemów z brakiem wyprowadzeń zasilania - ale kiedyś musi być pierwszy raz.

    W załączniku PDF do tego LVC
    A jeśli chodzi schemat to OK ?
  • Poziom 42  
    No właśnie schemat nie jest ok bo brak zasilania scalaka
  • Poziom 42  
    Chociaż w zasadzie to wejście OE też można byłoby podłączyć pod sygnał CS, ale teraz schemat wygląda merytorycznie OK. Na przyszłość tylko poćwicz jeszcze samo rysowanie i zobacz jak się korzysta z narzędzia typu LABEL w Eagle ;)
  • Poziom 18  
    A co Kolega myśli o
    SN74LVC4245ADW

    Cena trochę wysoka, ale do okazjonalnego wykorzystania powinien być OK
  • Poziom 42  
    Tak ale pomyśl sobie, że ten 74LVC245 spełni w zasadzie dla ciebie dokładnie to samo zadanie ;) i o ile taniej.
  • Poziom 18  
    Skoro już jesteśmy przy dopasowaniu poziomów, to czy ten 74LVC245 nada się do pracy z ENC28J60 ?
    Na Ebay Chińczycy sprzedają moduły z ENC28J60 po 24 zł z wysyłką, ale jak widać z zdjęć na ich aukcjach brakuje układu dopasowującego poziomy.

    Na Elektrodzie znalazłem taki schemat

    Podłączenie karty SD/MMC do Atmega

    jest tam co prawda 74AC125D, ale zasilany z 5V ( na 3,3V nie zadziała ), co chyba mija się z celem, jakim jest dopasowanie poziomów. Gdybym chciał go wykorzystać do zaprojektowania własnej płytki to wymieniając 74AC125D na 74LVC245 powinno działać.

    A i jeszcze jedno, 74LVC245 ma 8 wejść i 8 wyjść, więc chyba nic nie stoi na przeszkodzie, żeby jeden układ wykorzystać do karty SD i ENC28J60 ?
  • Poziom 42  
    Tak nawiasem mówiąc, to mój schemat znalazłeś ;) .... i tu zwróć uwagę, że 74HC125 (bo taki użyłem a nie ten AC) .... jest i może być zasilany z +5V a nie z 3,3V. Zauważ w którą stronę idzie konwersja. W inną niż DO karty SD.

    Ale wydaje się, że jeden 74LVC245 uda się zastosować z powodzeniem i do ENC i do karty SD
  • Poziom 18  
    Jeszcze mam pytanie do Kolegi

    Jakiś czas temu napisałem na Elektrodzie pytanie, czy Atmega328p wyrobi się zapisem SD. Jako, że nikt nie protestował mam już gotową płytkę.

    założenia były takie:
    PD0, PD1 - UART
    PD2 - przełączanie transmisji RS485
    PD3 - INT1 do układu PCF8574 ( podciągnięte rezystorem oczywiście )
    PC4, PC5 - I2C ( TWI ) pod EEPROM + PCF8563
    PC0, PC1, PC2, PC3 - linie danych wyświetlacza
    PB1, PB2 - linie E i RS wyświetlacza
    PB2 ( Pwm1b ) - podświetlanie wyświetlacza
    PD4, PD5, PD6, PD7 - programowe SPI dla karty SD

    Zegar i PCF8574 w przerwaniu działa OK.

    Dołożenie obsługi karty SD powoduje problem z wyświetlaniem czasu, ale dopiero w momencie wystąpienia żądania zapisu - sekundy się zatrzymują i po chwili przeskakują do przodu. W sumie to chyba najmniej uciążliwe.

    Konfigurację SPI mam taką:
    Code:

    '******************** SPI Programowe
     Const Cmmc_soft = 1
     Config Spi = Soft , Din = Pind.5 , Dout = Portd.7 , Ss = Portd.6 , Clock = Portd.4


      ' Chip Select Pin  => Pin 0 of MMC/SD
       Config Pind.6 = Output                                   '6
       Mmc_cs Alias Portd.6                                     '6
       Set Mmc_cs

       ' SCK - Pin CLK  => Pin 1 of MMC/SD
       Config Pind.4 = Output                                   '4
       Set Pind.4                                               '4
       Mmc_portsck Alias Portd
       Bmmc_sck Alias 1

       ' MOSI - Pin DI => Pin 3 of MMC/SD
       Config Pind.5 = Output                                   '5
       Set Pind.5                                               '5
       Mmc_portmosi Alias Portd
       Bmmc_mosi Alias 2

       ' MISO - Pin  D0 => Pin 2 of MMC/SD
       Config Pind.7 = Input                                    '7
       Mmc_portmiso Alias Pind
       Bmmc_miso Alias 3

     Spiinit


    Podpięcie jest takie:
    CD/DAT3 - przez dzielnik do PD.6
    CMD/DI - przez dzielnik do PD.5
    DAT0 - bezpośrednio do PD.7
    CLK/SCLK - przez dzielnik do PD.4

    Zmienna Gbdriveerror daje 225 po każdej próbie zapisu.

    Czy takie wykorzystanie pinów do SPI programowego może sprawiać problemy ( wiem mogłem użyć sprzętowego ). Dodam, że na portach PD jest jeszcze UART, który zamierzam wykorzystać - na razie nie używam, staram się uruchomić obsługę kart SD.

    Dodam, że programowe SPI uruchomiłem z powodzeniem na Atmega32.

    Oj, coś mi się wydaje, że będzie konieczność zrobienia nowej płytki z sprzętowym SPI dla SD.
  • Poziom 42  
    A jakiż mógłby to być tajemniczy powód żebyż to taki KOŃ jak ATmega328 miała się nie wyrobić z obsługą karty SD, skoro procki ATtiny się wyrabiają ;)

    Nie pomogę tu koledze za bardzo bo kolega pisze w Bascomie, którego już prawie nie pamiętam. (Narząd nieużywany zanika) ;)

    Na prawdę nie wiem w czy może też przeszkadzać programowe SPI ?

    Dlatego proponuję koledze, zamiast tworzyć dziesiątki płytek, które będą nietrafione i marnować czas i kaskę, odpalić to najpierw na jakimś układzie prototypowym, najlepiej jakimś sprawdzonym przez siebie zestawie uruchomieniowym albo nawet na płytce stykowej.
  • Poziom 24  
    W konfiguracji portów do AVRDOSA masz błędy, raczej powinno być tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 18  
    Wszystkie peryferia ( poza kartą SD ) miałem "przerobione" na płytce testowej z Atmega8. Sam zapis na SD po SPI programowy ( użyłem PB.0 - PB3, zamiast sprzętowego PB4-PB.7 ) działał u mnie na Atmega32 na płytce testowej EVB4.3 z modułem GPS.

    Spróbuję jeszcze zmienić dzielnik z obecnie używanego 1,8K/3,3K na 5K/10K - taki był na płytce testowej EVB, co prawda nei widziałem tam stabilizatora na 3,3V, ale napięcie mierzone ma 3,7V

    Niestety to samo z innym dzielnikiem - przyjdzie poczekać na zamówione w TME 74LVC245

    Kolega Mundi1970 - niestety ten kod nie działa, jest nawet gorzej, bo nawet nie próbuje zapisać