Komunikacja z SD HC

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Komunikacja z SD HC

Post autor: Tranzystor » 31 sie 2010, 13:39

Witam,
piszę program wykorzystujący karty pamięci MMC oraz SD. Chciałbym, aby była również możliwość współpracy z kartami SD HC. Jednak nie za bardzo wiem czym różni się wysyłanie i odbieranie danych z tego typu karty od odbierania ich ze zwykłej karty SD.

Wiem, że karty SD HC to karty o zwiększonej pojemności. W kartach SD każdy bajt ma przypisany swój adres i po wysyłaniu komendy MMC_WRITE_BLOCK, aby odczytać właściwy sektor trzeba wartość przesunąć w lewo o 9. Czy różnica pomiędzy SD, a SD HC polega na tym, że pomija się te przesunięcie :?: Jest to jedynie mój domysł...

Pozdrawiam ;)

slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Post autor: slawek55 » 31 sie 2010, 14:32

Pomóc nie pomogę bo za bardzo nie wiem, lecz piszę aby prosić i spytać, czy podzielisz się funkcjami, jak już Ci się uda, bo też kiedyś z tym walczyłem (bez efektu)

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 31 sie 2010, 16:02

A w jakim języku ?

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 31 sie 2010, 16:36


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

Post autor: Tranzystor » 31 sie 2010, 19:12

slawek55 Jeżeli chodzi o Twoją prośbę to mogę jedynie na chwilę obecną wskazać Ci plik, z którego korzystam. Bardzo dobrze napisany, jest to biblioteka napisana w C pod mikroprocesor ARM7 (LPC2148). http://www.btc.pl/pliki/lpcwp.zip <- folder rozdz9przykl4.

Jeżeli chodzi o system plików FAT16/32 to polecam bardzo przejrzyście napisany kod ze strony https://ccrma.stanford.edu/courses/250a ... ource.html.

Bardzo dziękuję Passage, nie miałem jeszcze okazji przeczytać zaraz zabiorę się za lekturę ;)

Pozdrawiam ;)

slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Post autor: slawek55 » 31 sie 2010, 19:15

Dzięki.
A czy doszedłeś do tego jak jest różnica w obsłudze zwykłych kart SD a tych o większych pojemnościach? Być może to jest to co podesłałeś bo jeszcze tego nie analizowałem :-)

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

Post autor: Tranzystor » 31 sie 2010, 19:21

Jak na razie widzę pewne zmiany. Ale nie są one jakieś szczególne. Dam znać jak napiszę kod i sprawdzę. Pod wieczór jak wszystko pójdzie dobrze to napiszę o swoich sukcesach :grin:
A można wiedzieć w jakim języku będziesz pisał program :?:
To co podesłałem na pewno nie pozwala na obsługę kart SDHC :razz:

Pozdrawiam ;)

gjakubow
-
Posty: 13
Rejestracja: 19 lip 2007, 23:59
Lokalizacja: Sopot

Post autor: gjakubow » 04 wrz 2010, 7:45

Skorzystałem z opisu ze strony:

http://www.roland-riegel.de/sd-reader/index.html

i obsługa kart SDHC działa bez problemu.

pozdrawiam, Grzegorz

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

Post autor: Tranzystor » 05 wrz 2010, 8:31

Witam,
troszeczkę przekształciłem kod ze strony, który podaje kolega i niestety mam mały problem. Nie wszystkie karty SD są przez niego widziane. Nie wiem jaka jest tego przyczyna. Posiadam kartę SD Kingstona 2GB, taką najzwyklejszą(niebieska). Próbowałem również na karcie SDHC SanDisk-a Extreme III. Niestety obie karty nie chcą współpracować. Próbowałem też z kartą MMCplus Transcend-a i tu wszystko pięknie działa. Później pożyczyłem kartę SDHC Kingstona Class 4 i tu również wszystko działa. Nie bardzo rozumiem czemu dwie pierwsze karty w ogóle nie chcą się zainicjować... Podczas inicjacji wyskakuje mi na ekranie mojego urządzenia błąd INIT ERROR, czyli karta nawet nie została poprawnie zainicjowana. Nie wiem ktoś może jak rozwiązać ten problem :?:

Odpowiedzi na pytania, które podejrzewam, że zostaną zadane:
1. Częstotliwość SPI podczas inicjacji karty 250kHz.
2. Nóżka MISO nie ma podciągniętego wejścia poprzez rezystor do plusa zasilania.
3. Nóżki SCK, MOSI, SS są skonfigurowane jako wyjścia, konfiguracja dokonana przed włączeniem SPI.
4. Karta zasilana stabilizatorem impulsowym, napięcie 3,5V (czyli w zakresie obsługiwanym przez kartę).
5. Na wejścia karty czyli nóżki SCK, MOSI i SS podłączone są rezystory, które ustalają napięcie dla stanu wysokiego na ok. 3,45V.

Pozdrawiam ;)

[ Dodano: 2010-09-05, 18:11 ]
Witam ponownie,
znalazłem niewielki błąd w programie, który zmienił nieco działanie mojego urządzenia :grin:
Niektóre karty SD po wysłaniu komendy i odebraniu odpowiedzi, oczekują na kolejne 8 cykli zegarowych. Właśnie z tego względu karta SD Kingstona nie chciała współpracować. Niestety karta SDHC Extreme III SanDisk-a w dalszym ciągu nie działa.

Pozdrawiam ;)

[ Dodano: 2010-09-05, 20:16 ]
Witam,
chciałbym poinformować, że wszystkie karty działają poprawnie. Problem z tymi kartami wynikał z braku wysłania tego pustego bajtu. Dlaczego SDHC nie działała po zmianie :?: Dlatego, że wpisałem w złą część programu wysyłanie jednego bajtu. Należy go umieścić zawsze na samym końcu, po odebraniu pełnej odpowiedzi od karty. I wszystko działa jak trzeba.

Bardzo przepraszam za zamieszanie.
Pozdrawiam ;)

atelszewski
Użytkownik
Posty: 143
Rejestracja: 12 sie 2005, 9:36
Lokalizacja: Banie

Post autor: atelszewski » 10 wrz 2010, 18:26

Witam,

Jeśli jeszcze tego nie zrobiłeś, to poinformuj autora kodu o poprawkach...

ODPOWIEDZ