|
|
  |
SD Card - програмная реализация интерфейса, У кого нибудь есть примеры реализации взаимодействия с SD Card? |
|
|
|
May 18 2010, 13:02
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
У меня тоже софтверно сделано, это я просил Вас в ветке для начинающих выложить исходники). Сейчас сижу играюсь с задержками...Если ничего не выйдет, придется отказаться от использования силикона, хотя на складе партия лежит.
|
|
|
|
|
May 19 2010, 06:46
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата реализации FAT16 на SD Цитата Только песня совсем не о том... Полно может только не Keil
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Oct 28 2010, 08:32
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Paramedic @ Oct 28 2010, 12:16)  Народ , а кому-нибудь попадались карты, у которых SPI интерфейс не реализован или реализован криво? Есть девайс, работает с большинством карт по SPI, появилась партия карт miniSD no_name, в ридере на ПК проблем нету, в устройствах которые работают по SPI - не видится, даже не проходит процедура стандартной инициализации. Может, это SDHC? Цитата Карты SDHC не совместимы с карт-ридерами и прочими устройствами, изначально рассчитанными только на SD-карты. А вот устройства, способные работать с SDHC-картами, поддерживают также и SD-карты. Ключевым нововведением для SDHC-карт, позволившим им превзойти объем в 4Гб, стало введение посекторной адресации (аналогично жёстким дискам), в то время как обычные SD-карты имеют побайтную адресацию (как оперативная память) и, соответственно, при 32-х разрядном адресе могут иметь объем не более 4Гб.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Oct 28 2010, 08:55
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(KAlex @ Jan 3 2010, 13:45)  В свое время тоже намучился с CRC. Выбирая между табличным и вычислителным методами пришел к компромиссу. Как мне кажется оптимальным будет вычисление таблицы в ОЗУ и дальнейшая работа с ней. Недавно ковырялся с полями Галуа характеристики 2^m - полиномиальная арифметика, набрел на оптимальный алгоритм редукции на малочлен, подумалось почему бы не применить его и для CRC. В программной реализации для SD/MMC получилось две симпатичные функции, никаких циклов и таблиц: CODE //________________________________________________________________ // // Обновляет контрольную сумму CRC-7 - x^7 + x^3 + 1 // Быстрый нетабличный вариант потетрадного вычисления // HAL_INLINE_FORCED DWORD io_mmc_crc7( DWORD data, DWORD crc) { DWORD tmp;
tmp = (crc ^ (data >> 1)) >> 3; crc = (crc << 4) | tmp; crc = crc ^ (tmp << 3);
tmp = ((crc >> 3) ^ data) & 0x0F; crc = (crc << 4) | tmp; crc = crc ^ (tmp << 3); crc &= 0x7F;
return crc; }
//________________________________________________________________ // // Обновляет контрольную сумму CRC-16 - x^16 + x^12 + x^5 + 1 // Быстрый нетабличный вариант потетрадного вычисления // HAL_INLINE_FORCED DWORD io_mmc_crc16( DWORD data, DWORD crc) { DWORD tmp;
tmp = ((crc ^ (data << 8)) >> 12); crc = (crc << 4) | tmp; crc = crc ^ (tmp << 5); crc = crc ^ (tmp << 12);
tmp = ((crc >> 12) ^ data) & 0x0F; crc = (crc << 4) | tmp; crc = crc ^ (tmp << 5); crc = crc ^ (tmp << 12);
return crc & 0xFFFF; }
Все проверено на практике - работает
|
|
|
|
|
Oct 28 2010, 09:16
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436

|
Цитата(MrYuran @ Oct 28 2010, 12:32)  Нет, не SDHC. Да и в 2-х из 3-х девайсов SDHC поддерживается. Нашёл такое "Some MicroSD cards do not support SPI mode. " http://en.wikipedia.org/wiki/Secure_Digital
|
|
|
|
|
Oct 30 2010, 14:36
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
Вот поэтому перед тем, как закупать в наши девайсы в большом кол-ве microSD, мы потратились на 10-ок различных, оценили глючность/быстродействие/совместимость, где надо немного подрихтовали код и только потом делали закупку. На хорошем счету - Toshiba, Transcend. Kingston - ещё та девица, у кого хочет, у тех и покупает память, маркируя под себя. В итоге - от партии к партии может значительно отличаться скорость и наличие "камушков".
|
|
|
|
|
Oct 31 2010, 06:52
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436

|
Цитата(Altemir @ Oct 30 2010, 17:36)  Вот поэтому перед тем, как закупать в наши девайсы в большом кол-ве microSD, мы потратились на 10-ок различных, оценили глючность/быстродействие/совместимость, где надо немного подрихтовали код и только потом делали закупку. На хорошем счету - Toshiba, Transcend. Kingston - ещё та девица, у кого хочет, у тех и покупает память, маркируя под себя. В итоге - от партии к партии может значительно отличаться скорость и наличие "камушков". Мой опыт показывает что даже надписям на карте нельзя верить - что хотят то и пишут китайцы. А среди этого десятка были карты, которые вообще отказались работать по SPI?
|
|
|
|
|
Oct 31 2010, 10:35
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
Цитата(Paramedic @ Oct 31 2010, 10:52)  Мой опыт показывает что даже надписям на карте нельзя верить - что хотят то и пишут китайцы. А среди этого десятка были карты, которые вообще отказались работать по SPI? Нет, не было. А мы не надписям на карте верили. Считывали CID, CSD, проверяли по ним. Перед закупкой осведомлялись о наличии той же партиии у поставщика. Поставщик надёжный. Для отрекомендованных выше производителей никаких разбросов в пределах партии нет.
|
|
|
|
|
Nov 1 2010, 12:34
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 8-11-05
Пользователь №: 10 577

|
Народ, аццы, подскажите плиз в этой теме, чтобы новую не заводить!
Я так понимаю в этой ветке в основном народ пользует SD карту в SPI режиме, в котором потребление карты не такое большое... Пользую AT91SAM3U4. Пользую тамошний "High Speed Multimedia Card Interface", который о шести ногах: "CLK, CMD, DAT0, DAT1, DAT2, DAT3". Обратно пользую атмеловский пример работы с карточкой sdmmc_mci.c/sdmmc_mci.h, который идет в поставке с иаром. Вопрос в потреблении. После инициализации и чтении либо записи данных девайс начинает жрать на 20-30 мА больше, что собственно неприемлимо. Если "выключить" карточку командой Cmd12, то повышеное потребление прекращается. Но при этом для дальнейшей работы с карточкой необходимо заново её инициализировать. Выключение + инициализация в сумме занимают приличное время (по ощущениям на глаз). Есть какойто другой, быстрый способ снизить потребление SD карты кроме как командой Cmd12?
|
|
|
|
|
Feb 1 2012, 09:22
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003

|
Хочу поделиться своими результатами при работе с модулем TE-STM32F103 (красная). Мне нужно было запустить microSD через SDIO. Использую Keil v.4, файлы из библиотеки ST. При инициализации карты получила SD_INVALID_VOLTRANGE. Замерила U - оказалось на карту идет 1,8В! Это все транзистор Q3 оказался! Посадила PB0 на "0" - на карту пошло 3,3В.Это то что нужно). Потом пыталась прикрутить FATFS - но тут что-то не получилось...видела ошибку FR_NO_FILESYSTEM. Не без помощи добрых людей(Спасибо огромное Ивану Кузнецову!) в итоге Fatfs был укращен ))). Если кому нужно, могу поделиться проектом. http://narod.ru/disk/39273363001/microSD_FatFS.rar.html
|
|
|
|
|
Feb 1 2012, 15:06
|

Частый гость
 
Группа: Свой
Сообщений: 161
Регистрация: 17-08-04
Из: Караганда
Пользователь №: 516

|
QUOTE (prussta @ Feb 1 2012, 13:22)  Хочу поделиться своими результатами при работе с модулем TE-STM32F103 (красная). Мне нужно было запустить microSD через SDIO. Спасибо за пример, для меня очень кстати. Мне тоже нужен microSD через SDIO для STM32F103VCT6. Осваивать SD карту, я начал по тому же принципу по которому "ищут не там где потерял, а там где светлее", т.е. через SPI, уж очень много по этой теме информации. А вот с SDIO маловато. В моем приложении требуется по возможности избегать прерываний (по крайней мере не трогать Systick), в вашем проекте disk_timerproc задушен, а SDIO обробатывается по прерыванию, интересно, можно ли SDIO сделать полингом? А кто-нибудь пробывал делать стейт-машины для SD карт?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|