Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Инициализация на SD карта в SPI режим
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4614
Страница 1 от 1

Автор:  juzisound [ Чет Авг 09, 2007 9:59 pm ]
Заглавие:  Инициализация на SD карта в SPI режим

Здравейте!
Проблема е следния. Опитвам се да чета по сектори една MMC и една SD карта по SPI протокол. За да не ме оплюете предварително ще кажа, че изчетох всичко из форума а и не само из него, ама още не са ми ясни някои работи.
Докъде съм стигнал; MMC картата се инициализира и чете безпроблемно, ама SD неще да се инициализира. SD-то минава успешно през RESET командата и връща 0x01 както си трябва, обаче след това на инициализацията забива - тоест изтича time out и функцията връща грешка. Предполагам че проблема е в последователността на самото инициализиране. Много - много четох, ама нещата май само се влошиха. Попаднах на различни и даже противоречиви описания на инициализацията и от много опити работата започна да заприличва на налучкване - ама на тоя процесор 18F4550 почти му се изтъркаха краката да ходи ту на програматора - ту на платката. Та искам - ако може де - някой с опит да сподели как точно става тая работа - че вече 3ти ден се мъча. Интересува ме също как трябва да се свържат свободните пинове на SD картата - май 8 и 9 бяха, а и ако не е тайна какво връзване ползвате на самата карта - тоест с резисторен делител, с пулл-ъп резистори или нещо друго. Аз я връзвам така: Пика ми е на 5в, тя си е на 3.3. От пика към нея през резистори 1к и след това ценери 3.3 към маса. Предполагам че щом MMC картата работи добре - то проблема не е в хардуера - ама знам ли.

Та всякаква помощ ще ми бъде от полза.
Веднъж да го подкарам това - че жената вече зе да се сърди... :x

Автор:  Реконструктор [ Пет Авг 10, 2007 11:52 am ]
Заглавие: 

Аз също се борих с това известно време и го заебах. :) Според мен, има някво разминаване в чистия SPI, който е на микроконтролерите и интерфейса за SD.

Автор:  juzisound [ Пет Авг 10, 2007 11:58 am ]
Заглавие: 

Ами на мене ми е още рано да го зарежа - въпреки че и аз си милех за това.
Интересна работа...
ММЦто се инициализира и си бачка безпроблемно - ама СДто - което имам де, щото е само едно - минава ресет - ама на инит реве Illegal Command и това е. Каквото и команда да му пусна - все това връща. Гледам сега че има някакви SDIO карти - ама още несъм на ясно - точно каква е разликата. Може да се каже че не намерих 2 напълно еднозначни описания на инициализации из нета. Явно има някакви разлики - ама знае ли човек...

Да се надяваме че някой из този форум е наясно та да ни светне :wink: по въпроса...

Автор:  TheHungry [ Пет Авг 10, 2007 6:12 pm ]
Заглавие: 

http://elm-chan.org/docs/mmc/mmc_e.html

Автор:  juzisound [ Пет Авг 10, 2007 10:30 pm ]
Заглавие: 

Тия карти взеха че тръгнаха...
Проблемите се оказаха няколко:
Калпава инициализация на SPI порта на процесора - незнам защо беше направена така. Между другото на различни места тая инициализация беше различна. MMC-то е работило на "косъм" и това ме подведе че инициализацията е била наред. Прочетох какво очаква картата и преправих настройката.
Основния проблем обаче беше че уж за по-сигурно бях пуснал SPI на много ниска честота. Чак после видях че за инициализацията трябва да бъде от 100 до 400кХз а след това вече може от 0 до 25мХз. Аз го бях пуснал на около 60кХз. ММЦ то работеше, ама SD Картата нещеше на тая честота. Чак като я вдигнах на 250кХз нещата се оправиха. Иначе пък инициализацията се оказа еднаква и за двете карти - което пък отново не трябваше да е така според спецификациите. Колко модела такива карти има - така и не разбрах...
Сега обаче всичко се оправи де. Работят нормално и двете карти дето имам.
Ще почакам да попробвам и с други карти и после мисля да кача кода и основните правила за подкарване на това чудо, за да спестя време на тези на които им е "за първи път"... :D

Това е като изпитите. Като мине веднъж - вече гледаш с друго око на тях, и си викаш - "абе това не е страшно..."
Нее нее - ама вече 4-ти ден се мотам...

Автор:  juzisound [ Вто Авг 14, 2007 1:00 pm ]
Заглавие: 

Ето ги и обещаното упътване - как се подкарват тия карти:

Основни правила при свързване - и не само!!!

Това при условие че процесора работи на 5В а картата на 3.3В.
Всички изводи на картата без захранване и клок се връзват през последователни резистори 1-2к и с ценери към маса за 3.3 волта. Трябва да имат и Pull Upр резистори към 3.3В от по 10-47к.
Клока на картата само трябва да се върже с Pull Down резистор към маса, защото само неговото Idle ниво е LOW. На него също трябва да има ценер за 3.3В.
За отбелязване е, че картата работи и ако на клока има не Pull Down, a Pull UP резистор - като на другите изводи.
Неизползваните крачета /тези които са само за SD карти/ и те с Пулл Уп резистори към 3.3В.
На захранващите пинове на слота трябва да има 3 електролита - 220мф, 47мф и 4.7мф. Това за да се избегне ресет на процесора при пъхане на картата, особенно на карти с голям капацитет.
Всички нива на сигналите освен клока са с активно ниско ниво и неактивно високо. Клока е наобратно по спецификация. Това е важно за конфигурирането на SPI порта на процесора.
SPI порта трябва да се конфигурира така: SMP=0; CKE=1; CKP=0;
Честотата на SPI порта се конфигурира като четотата на процесора се дели на делителя в SSPCON1 регистъра и може да е 1/64, 1/16, и 1/4.
Първоначалната честота на SPI порта трябва да е от 100 до 400 кХз - това по време на процеса на инициализиране на картата.
След това честотата може да варира от 0 до 25 мХз по спецификация.

Добре е захранването на картата също да може да се контролира от процесора, а също и изводите за защита от запис и за налична карта в слота. Това е задължително ако се предвижда картата да може да се слага и маха по време на работа, а не да е сигурно че е пъхната в началото - както е на моя проект.

Малко за инициализацията. Та значи всички пробвани от мене карти се инициализираха с инициализацията за MMC карти. Пробвах и доста модели маркирани като SD. По принцип SD картите би трябвало да се инициализират различно, ама явно и така бачкат. В приложения код е направена само инициализацията за MMC карти, но ако се наложи - лесно може да се преправи. То просто се добавят няколко команди.
Ми май това е. Ето ги и файлчетата:

Айде със здраве... :D

Прикачени файлове:
mmc_sd.rar [4.41 KiB]
209 пъти

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/