| Микроконтролери и електроника 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 картата работи добре - то проблема не е в хардуера - ама знам ли. Та всякаква помощ ще ми бъде от полза. Веднъж да го подкарам това - че жената вече зе да се сърди... |
|
| Автор: | Реконструктор [ Пет Авг 10, 2007 11:52 am ] |
| Заглавие: | |
Аз също се борих с това известно време и го заебах. |
|
| Автор: | juzisound [ Пет Авг 10, 2007 11:58 am ] |
| Заглавие: | |
Ами на мене ми е още рано да го зарежа - въпреки че и аз си милех за това. Интересна работа... ММЦто се инициализира и си бачка безпроблемно - ама СДто - което имам де, щото е само едно - минава ресет - ама на инит реве Illegal Command и това е. Каквото и команда да му пусна - все това връща. Гледам сега че има някакви SDIO карти - ама още несъм на ясно - точно каква е разликата. Може да се каже че не намерих 2 напълно еднозначни описания на инициализации из нета. Явно има някакви разлики - ама знае ли човек... Да се надяваме че някой из този форум е наясно та да ни светне |
|
| Автор: | 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кХз нещата се оправиха. Иначе пък инициализацията се оказа еднаква и за двете карти - което пък отново не трябваше да е така според спецификациите. Колко модела такива карти има - така и не разбрах... Сега обаче всичко се оправи де. Работят нормално и двете карти дето имам. Ще почакам да попробвам и с други карти и после мисля да кача кода и основните правила за подкарване на това чудо, за да спестя време на тези на които им е "за първи път"... Това е като изпитите. Като мине веднъж - вече гледаш с друго око на тях, и си викаш - "абе това не е страшно..." Нее нее - ама вече 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 карти, но ако се наложи - лесно може да се преправи. То просто се добавят няколко команди. Ми май това е. Ето ги и файлчетата: Айде със здраве...
|
|||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|