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

Niskopoziomowa komunikacja z kartą MMC

mojzesz101 28 Oct 2011 18:31 1106 4
  • #1
    mojzesz101
    Level 12  
    Witam wszystkich, próbuję obczaić komunikację z kartą pamięci (Atmega32, język C), nie chodzi mi jeszcze o odczyt i zapis danych, ale po prostu wysłanie jakiejś komendy do karty i odebranie odpowiedzi, podgląd rejestrów itp. Próbowałem mądrości z różnych źródeł ale jakoś mi to nie wychodzi:


    Code: c
    Log in, to see the code


    w funkcji main m.in. napisałem tak:

    Code: c
    Log in, to see the code


    Jak pisałem w komentarzu, nawet nie wiem czy karta przechodzi do komunikacji SPI, próbuję odebrać coś z karty, bo w nocie .pdf pisało, że przy komunikacji SPI po komendzie GO_IDLE_STATE karta wysyła jednobajtową odpowiedź (R1). Jedyne co odbieram od karty to zapełniony bajt (255) co nie może mieć miejsca z tego co wiem z noty katalogowej. Od strony hardware'owej myślę że wszystko jest OK, bo sprawdzałem programem napisanym w bascomie i inicjalizacja karty przebiega pomyślnie...
    W miarę możliwości bardzo bym prosił o pojaśnienie jak to powinno wyglądać prawidłowo.
  • #2
    Piotrek_P
    Level 18  
    Kilka lat temu testowałem soft z tej strony. Karta MMC 32MB śmigała całkiem nieźle :)

    Pozdrawiam
    Piotrek
  • #3
    Jado_one
    Level 22  
    Witam,

    A zmniejszasz szybkość SPI poniżej 400kHz przed jakąkolwiek komunikacją z kartą? (bo z tego fragmentu kodu, to nie da sie tego wywnioskowac)
    Pierwsze 80 clocków trzeba wysłać przy MOSI & SSEL=1 - oczywiście o ile jest taka możliwość w ATMEDZE - niezależnego sterowania pinami od modułu SPI (ja pisałem swój kod na ARM7).
  • Helpful post
    #4
    Mundi1970
    Level 24  
    Zbyt szybko spodziewasz się odpowiedzi R1, odczytujesz ją tylko 1 raz ;).

    Mały przykład (BASCOM):

    Code: vbnet
    Log in, to see the code
  • #5
    mojzesz101
    Level 12  
    Jado_one wrote:
    A zmniejszasz szybkość SPI poniżej 400kHz przed jakąkolwiek komunikacją z kartą?


    Tak, mam ustawioną prędkość transmisji na 125khz

    Mundi1970 wrote:
    Zbyt szybko spodziewasz się odpowiedzi R1, odczytujesz ją tylko 1 raz Wink.


    Nooooooo, teraz to działa :D karta w odpowiedzi wysyła 1 czyli IN IDLE STATE :) dzięki Ci wielkie Mundi ;)