Автор |
Съобщение |
Пенев
Ранг: Минаващ
Регистриран на: Сря Юни 19, 2019 6:04 pm Мнения: 9
|
Проблем със SDHC карта
Здравейте колеги Правя библиотека за една сд карта модел SDHC 16ГБ - от новите.Почти запуснах картата - направих инициализацията , четенето на единичен сектор и на мулти сектори , направих и изтриването на сектори и записа на единичен сектор. Остана ми да направя записа на мулти сектори но не ми се получава. Описвам как го правя - подавам команда 25 за запис на мулти сектори , след което чакам отговора на картата , след което за въртам цикъл в който подавам за старт 0xFC и след това 512 байта данни (толкова ми е блока) и накрая два байта 0xFF 0xFF за чек сума като съм изключил предварително проверката на чек сумата. След първи блок картата ми отговаря нормално със 0x05 и 0x00 но на следващите блокове не ще. пак подавам 0xFC и пак 512 байта и пак 2 байта чек сума но повече не отговаря .Въпросът ми е - каква е правилната поредица байтове при записа на мулти сектори на сд картата ?
|
Сря Юни 19, 2019 6:08 pm |
|
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 5:52 pm Мнения: 10374 Местоположение: Добрич
|
Re: Проблем със SDHC карта
Предполагам ползваш SPI интерфейс (за SDIO e различно)... ей ти малко код: В началото имаш 23-та команда... еднократно. Не става ясно правиш ли го, как циклиш, чакаш ли картата също не ми е ясно... всъщност ето ти и трансфера:
|
Сря Юни 19, 2019 7:20 pm |
|
|
Пенев
Ранг: Минаващ
Регистриран на: Сря Юни 19, 2019 6:04 pm Мнения: 9
|
Re: Проблем със SDHC карта
Всичко ми е същото освен това if (xmit_datablock(rbuff, 0xFC) != RES_OK) промених кода да чака отговор и пак не се получава да не би да иска коректна чек сума въпреки че е изключена? При някой опити записва коректно само първия сектор а другите не ги записва въобще и зацикля картата като не приема никаква друга команда. При други опити записва още няколко сектора но пише глупости , явно не мога да улуча поредицата на подаване на команди и байтове както му е редът. На края на първия блок си отговаря нормално както си му е редът със 0xE5 и 0x00 което 0xE5 като се AND със 0x1F и се получава коректния отговор 0x05. И след това на втория блок става мишмаша. Рових в интернет няколко вечера но всичко което намирам за дадения проблем е една картинка със правоъгълничета вместо команди и данни и явно всички са копирали тази картинка едни от други и няма никакво ясно и коректно описание на алгоритъма и особенностите. Освен библиотеки и пдфи и страници описващи сд картите който изчетох не намерих нищо свястно по въпроса а само обща информация.
|
Сря Юни 19, 2019 8:42 pm |
|
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 5:52 pm Мнения: 10374 Местоположение: Добрич
|
Re: Проблем със SDHC карта
чек сумите са изключени по дефаулт, доколкото помня. Но искрено те съветвам да ги включиш. Още повече, че има вероятност да имаш и хардуерен проблем. Щом пишеш или четеш глупости Няма да е зле да боцнеш един скоп да видиш при теб картинката дали е с "правоъгълничета", дали сигналчета от сорта на чип селект са там, където трябват... ей такива работи Иначе стандарта си го има в нета и достатъчно подробно написан.
|
Сря Юни 19, 2019 9:43 pm |
|
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 8:27 pm Мнения: 2008
|
Re: Проблем със SDHC карта
Да не би още при буферирането да се получава този проблем? Чек сумата ? Ако ти е голяма програмата на чипа може да става мазано!
|
Сря Юни 19, 2019 10:21 pm |
|
|
Пенев
Ранг: Минаващ
Регистриран на: Сря Юни 19, 2019 6:04 pm Мнения: 9
|
Re: Проблем със SDHC карта
Установката ми за разработка е пик процесор на хид усб и програма на уиндоус. Пик процесора само предава и приема байтове по SPI и управлява чип селекта , така че нищо съществено нямам в него. Работи коректно понеже съм направил инициализацията и четенето и изтриването на блокове и записа на единичен сектор. В него и програмата за уин нямам съмнения. Хардуера ми е наред и софтуера. Просто не мога да улуча протокола за запис на мулти сектори и това е.
|
Сря Юни 19, 2019 10:27 pm |
|
|
Пенев
Ранг: Минаващ
Регистриран на: Сря Юни 19, 2019 6:04 pm Мнения: 9
|
Re: Проблем със SDHC карта
Пак нагодих алгоритъма след всички опити на старото положение. Сега записва четни сектори - 0 и 2 а пък нечетните 1 и 3 пише мишмаш но накрая като подам 0xFD и спира и приема вече други команди. Мислех че е от захранването понеже го захранвам от усб а картата си дърпа доста , та захраних директно от лабораторно захранване. Няма промяна.
|
Чет Юни 20, 2019 12:23 am |
|
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 8:27 pm Мнения: 2008
|
Re: Проблем със SDHC карта
Няма да съм ти много от полза, с тези карти не съм се занимавал но едва ли ще е такава екзотика понеже и старите устройства трябва да работят с тях. Скоро си дръпнах от фейсбук-а ти Micro SDHC Card и го разгледах като не видях много разлика. Да си призная че и за първи път чух за такива карти HC. Вече взе да ми писва от новите джаджи ....
|
Чет Юни 20, 2019 1:11 am |
|
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 8:22 am Мнения: 15501 Местоположение: София
|
Re: Проблем със SDHC карта
Нещо не ти е наред физически с интерфейса и/или управлението на SPI в пика. Особенно както казваш, че чете през едно...
Осцилоскопа закачи ли?
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
Чет Юни 20, 2019 9:01 am |
|
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2590 Местоположение: Велико Търново / София
|
Re: Проблем със SDHC карта
Защо не намалиш скоростта , намали я няколко пъти за пробата
|
Чет Юни 20, 2019 12:04 pm |
|
|
Н'бабане Гт'муан'га
Ранг: Форумен бог
Регистриран на: Сря Яну 25, 2012 8:14 am Мнения: 4623 Местоположение: Новата земя на племето Мутум'ба
|
Re: Проблем със SDHC карта
Инициализацията на картата се прави на 200 килохерца, после може да вдигаш клока, но не повече от 20 мегахерца. Ето ти тук моя файл от ритъла който работи много стабилно. Аз ползвам FatFs, но ти ако ползваш нещо друго си извади само нужните парчета.
_________________ 'просто' е технически синоним на 'красиво'
|
Чет Юни 20, 2019 12:23 pm |
|
|
Пенев
Ранг: Минаващ
Регистриран на: Сря Юни 19, 2019 6:04 pm Мнения: 9
|
Re: Проблем със SDHC карта
Начертах алгоритъма който ползвам и който гледах от документите и интернет. SPI ми е на 100кхц - възможно най-ниско. Между байтовете имам 1 мс понеже ползвам хид усб. Записва четни сектори - 0 и 2 а нечетните 1 и 3 пише мишмаш. На четните отговаря нормално със E5 и 00. На нечетните отговаря със FF. Някъде прочетох че във SPI режим се поддържат командите само за четене и запис на единичен блок а на мулти блокове не се поддържат.
|
Пет Юни 21, 2019 5:04 pm |
|
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 5:52 pm Мнения: 10374 Местоположение: Добрич
|
Re: Проблем със SDHC карта
Една жена каза има си стандарт... Прочети в него за кои класове CMD25 е mandatory, как се проверява какъв ти е класа, съответно дали трябва да информираш картата за броя на секторите преди да почнеш. Има описано как се прави трансфер с повече сектори, къде ти отговаря с R1, къде ти отговаря с data response, къде може да каже busy и т.н. Описано с думи и нарисувано с картинки... Стандарт като Слънце
|
Пет Юни 21, 2019 5:31 pm |
|
|