Отговори на тема  [ 6 мнения ] 
Инициализация на SD карта в SPI режим 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение Инициализация на 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


Чет Авг 09, 2007 9:59 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Аз също се борих с това известно време и го заебах. :) Според мен, има някво разминаване в чистия SPI, който е на микроконтролерите и интерфейса за SD.


Пет Авг 10, 2007 11:52 am
Профил
Ранг: Почетен член
Ранг: Почетен член

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

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


Пет Авг 10, 2007 11:58 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 03, 2005 11:31 am
Мнения: 766
Местоположение: Пловдив
Мнение 
http://elm-chan.org/docs/mmc/mmc_e.html


Пет Авг 10, 2007 6:12 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

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

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


Пет Авг 10, 2007 10:30 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Ето ги и обещаното упътване - как се подкарват тия карти:

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

Това при условие че процесора работи на 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]
207 пъти
Вто Авг 14, 2007 1:00 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни