Easyelectronics.ru

Электроника для всех
Текущее время: 17 сен 2019, 01:37

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 224 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 9  След.
Автор Сообщение
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 16 фев 2014, 22:45 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
AlexPM писал(а):
Pingvin писал(а):
DeviceMode == SD_POLLING_MODE
А это что за режим?
Здрасьте, приехали :-) Polling - это режим с программным опросом флагов (reference: English-Russian Dictionary) и программной же реализацией блочного чтения.
Когда Вы работаете с SD/SPI драйвером - там как раз polling, потому что периферийный модуль SPI знать не знает, что есть "особенный" размер данных ровно 512 байт.

SDIO-модуль умеет аппаратно прокачивать эти самые 512 байт, а основную программу извещает либо SDIO-прерывание, либо DMA-сигнал.

Догадывался.
Я Вас понимаю - когда сам что то знаешь, кажется, что это все должны знать, как само-собой разумеющееся.
В том и проблема, что знания приходиться выискивать и выколупывать по крупинкам.
Я так и не нашел подробного описания функций SDIO библиотеки и протокола обмена с картой по SDIO. :-(
Была одна толковая статья, да больше недоступна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 16 фев 2014, 23:01 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Ну, например, как проверить, есть ли поддержка режимов DMA и Interrupt в драйвере - то есть кода настроек соответствующей периферии? Искать/ждать какое-то суперпуперописание? Нет, конечно. Ctrl-Shift-F - поиск по всем файлам проекта слова "DeviceMode", потом быстрый просмотр результатов, задача решена менее чем за минуту. И другие вещи похоже решаются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 16 фев 2014, 23:13 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
AlexPM писал(а):
Ну, например, как проверить, есть ли поддержка режимов DMA и Interrupt в драйвере - то есть кода настроек соответствующей периферии? Искать/ждать какое-то суперпуперописание? Нет, конечно. Ctrl-Shift-F - поиск по всем файлам проекта слова "DeviceMode", потом быстрый просмотр результатов, задача решена менее чем за минуту. И другие вещи похоже решаются.

Да с поиском то понятно.
Файлы то "левые" - если там нет инициализации DMA или прерываний, то и поиск ничего не даст.

Хочется делать все осознанно, по четкому алгоритму, а не тыкаться как слепой котенок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 16 фев 2014, 23:35 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Да всё там есть. Быстрее нажать эти три кнопки, чем столько времени гадать: есть ли, нет ли.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 фев 2014, 00:10 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
AlexPM писал(а):
Да всё там есть. Быстрее нажать эти три кнопки, чем столько времени гадать: есть ли, нет ли.

Я уже писал - сегодня не смогу проверить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 фев 2014, 07:27 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
Нарыл кое-какое описание, может кому пригодиться
http://blog.frankvh.com/2011/09/04/stm32f2xx-sdio-sd-card-interface/

Досточка на 103, внизу страницы ссылки на доку и примеры.

http://www.kosmodrom.com.ua/el.php?name=STM32-TFT


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 фев 2014, 07:40 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
Вчера до 3 ночи ковырял пример по ссылке выше (портировал в кокос)!
Не открывался файл!
Пришлось пошагово проходить все вызовы.
Оказалось - почему то при инициализации карты и получении информации о ней размер блока определялся как 1024, с этим же размером и вызывалась функция SDreadBlock(...) которая может работать только с блоками, размером 512!
Уж как я только карту не форматировал!
В итоге просто явно указал размер в 512 - заработало.
Так это параметр (размер блока) - аппаратная особенность карты или параметр файловой системы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 фев 2014, 11:28 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Pingvin писал(а):
аппаратная особенность карты или параметр файловой системы?
Посмотрите, откУда (где самое начало) пришло это 1024. Если из CSD, то апаратная особенность карты. Но это вряд ли. Возможно, где-то в коде формула неправильная, или hardcoded значение (тоже заплатку ткнули, чтоб не разбираться :-) ), или неправильное использование значения 1024, в общем без телепатии или отладчика точно не скажешь.
У файловой системы тоже есть параметр, кратный 512 - размер кластера. Не его ли Ваш код "подхватил"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 22 фев 2014, 10:01 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
Берет из SDCardInfo
Код:
if(count==1)            /* 1ёцsectorµД¶БІЩЧч */     
    {       
     Status =  SD_ReadBlock( buff ,sector << 9 , 512/* SDCardInfo.CardBlockSize*/ );
    }                                               
    else                    /* ¶аёцsectorµД¶БІЩЧч */     
    {   
      Status = SD_ReadMultiBlocks( buff ,sector << 9 ,512/*SDCardInfo.CardBlockSize*/,count);
    }     


Мне вот что интересно, в файле sdio_sd.h определены различные типы карт
Код:
#define SDIO_STD_CAPACITY_SD_CARD_V1_1             ((uint32_t)0x00000000)
#define SDIO_STD_CAPACITY_SD_CARD_V2_0             ((uint32_t)0x00000001)
#define SDIO_HIGH_CAPACITY_SD_CARD                 ((uint32_t)0x00000002)
#define SDIO_MULTIMEDIA_CARD                       ((uint32_t)0x00000003)
#define SDIO_SECURE_DIGITAL_IO_CARD                ((uint32_t)0x00000004)
#define SDIO_HIGH_SPEED_MULTIMEDIA_CARD            ((uint32_t)0x00000005)
#define SDIO_SECURE_DIGITAL_IO_COMBO_CARD          ((uint32_t)0x00000006)
#define SDIO_HIGH_CAPACITY_MMC_CARD                ((uint32_t)0x00000007)


В функции SD_GetCardInfo(...) идет перебор этих типов.
Может тип моей карты не соответствует типу, под который пример написан?
В примере вот так определено
Код:
static uint32_t CardType =  SDIO_STD_CAPACITY_SD_CARD_V1_1;

Как узнать тип карты?
У меня на 2 Gb.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 22 фев 2014, 10:25 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4255
Откуда: Кемеровская область, Киселевск
Код корявый просто

_________________
RADIOWOLF.RU


Последний раз редактировалось Oxford 22 фев 2014, 10:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 22 фев 2014, 10:26 
Заглядывает иногда

Зарегистрирован: 08 янв 2014, 21:05
Сообщения: 130
С sdio не работал, но на вскидку могу предложить документик
https://www.sdcard.org/developers/overv ... d_Spec.pdf
Есть такой под рукой?

На 28 странице описание регистра в котором есть ссылка на cis.
На 51 странице описание структуры cis.
У меня есть подозрение, что оттуда можно чёрта лысого вытащить при желании, а не только информацию о карте)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 22 фев 2014, 14:31 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Pingvin писал(а):
Берет из SDCardInfo
...
В функции SD_GetCardInfo(...) идет перебор этих типов.
Типы тут ни при чём, форматов CSD всего три (по крайней мере для всех Ваших карт MMC..., SD..., SDHC...). Посмотрите сами на значения полей в блоке CSD (не CID, как тут советовали, а именно CSD), посчитайте по формуле. Формулы в функции уже есть - надеюсь, правильные. Если есть сомнение в формулах - со спецификацией сравните.

Если ничто не поможет :-) - выкладывайте свой CSD и информацию: из каких полей считалось, по какой формуле, какой результат получился. Разберёмся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 22 фев 2014, 14:42 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
alert80 писал(а):
С sdio не работал, но на вскидку могу предложить документик
Это не тот документ :-( Он про SDIO-карты, которые в общем случае не являются картами памяти, но частично совместимы с ними по системе команд и набору регистров.

Для информации по CIS и CSD регистрам карт памяти надо смотреть спецификации на MMC-card, SD-vard, SDv2-card.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 23 фев 2014, 22:08 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2346
Спасибо всем!
Вроде пашет - и хрен с ним.
Будет время, покопаю поглубже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 27 окт 2014, 00:46 
Заглядывает иногда

Зарегистрирован: 30 мар 2012, 19:50
Сообщения: 159
Откуда: Москва
Добра!

На различных форумах пишут, что линии SDIO надо подтягивать к питанию, увидел несколько вариантов и ни одного из официальных источников. Чаще всего встречается вариант про подтяжку всех линий 47k. Видимо это и есть официальная версия, но хочется убедиться. Киньте ссылкой где про это есть в официальном источнике.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 27 окт 2014, 00:52 
Старожил

Зарегистрирован: 13 фев 2012, 23:48
Сообщения: 754
Откуда: Украина, Харьков
Turkish945 писал(а):
Чаще всего встречается вариант про подтяжку всех линий 47k.

Вот так все и ставят по 47кОм, иногда встречается 33 кОм. Но главное условие, чтобы провода были как можно короче (1-3 см).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 27 окт 2014, 01:21 
Заглядывает иногда

Зарегистрирован: 30 мар 2012, 19:50
Сообщения: 159
Откуда: Москва
__bl__ писал(а):
Вот так все и ставят по 47кОм, иногда встречается 33 кОм. Но главное условие, чтобы провода были как можно короче (1-3 см).


еще часто встречается 10k. Также видел, что на CMD ставят 4k7, а на остальные 10k... Откуда это все берется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 27 окт 2014, 10:00 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1782
Откуда: Донецк, ДНР
47k стоят на всех ногах, кроме CLK, во всех ST-шных платах. Оттуда они и берутся :) .
Я спаял такое для F4Discovery - работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 29 окт 2014, 01:21 
Заглядывает иногда

Зарегистрирован: 30 мар 2012, 19:50
Сообщения: 159
Откуда: Москва
hd44780 писал(а):
47k стоят на всех ногах, кроме CLK, во всех ST-шных платах. Оттуда они и берутся :) .
Я спаял такое для F4Discovery - работает.


тогда откуда берется, что на CLK тоже надо ставить 47k? И надо ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 29 окт 2014, 02:43 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1578
Откуда: Киев
Резисторы подтяжки ставят, чтобы ноги не болтались, когда карта не вставлена. Иначе может ошибочно определить, что карта вставлена и пытатся что-то с ней делать.

RDAT and RCMD are pull-up resistors protecting the CMD and the DAT line against bus floating when no card is inserted or when all card drivers are in an high-impedance mode.

искать спецификацию
SD Specifications
Part 1
Physical Layer

но не упрощенную (simplified), а полную. Раздел 6

PS на CLK не надо ставить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 мар 2015, 00:02 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4255
Откуда: Кемеровская область, Киселевск
Кто-нибудь запустил запись в режиме мультиблок через SDIO с буфером например 2048 байт?
char BUFFER[2048];
sector = 0; //Стартовый сектор
SD_WriteMultiBlocks(BUFFER, sector << 9, 512, 4); //4 блока записываем с размером блока 512 байт
Вот с таким вызовом?

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 мар 2015, 00:34 
Старожил
Аватара пользователя

Зарегистрирован: 17 дек 2014, 23:08
Сообщения: 599
Откуда: Nowhere
Отлично пишет мультиблок (CMD25). Только реализация моя, без SPL. Тут вопрос конкретно про SPL?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 мар 2015, 01:01 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4255
Откуда: Кемеровская область, Киселевск
не обязательно SPL, камень STM32F103RET6. Поделитесь проектом где отлично пишит, а то тут умников хватает.
дабы потестировать SDIO с мультиблоком.
Любой работающий проект на камне 103 через SDIO с мультизаписью.
Мне скорость нужна 5мб/сек, так как записываем MJPEG видео с камеры.

У меня по SPI на частоте 36мгц запись 256кб в секунду с DMA.
А чтение 1МБ в секунду.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 мар 2015, 04:27 
Старожил
Аватара пользователя

Зарегистрирован: 17 дек 2014, 23:08
Сообщения: 599
Откуда: Nowhere
"Либу" аттачить не дает, говорит "достигнут максимальный общий размер ваших вложений" (12.5кБ)
Ссылка на dropbox, удалю через пару дней: https://www.dropbox.com/s/lulddmqqmbp7zjs/sdio.zip?dl=0
Написано под железяку STM32L151RD, реализация относительно сырая, там кой-чего заполировать надо и оптимизировать... плюс в планах есть порт на камень F103, но пока нет железа, чтобы опробовать на натуре.
Чтение на 24МГц 4-бит шине с DMA примерно 2-2.5Мбайт/с (точно не мерял, "на глаз")
Запись медленнее, но не так, чтобы сильно. Писать мне надо кусочки по 512 - 2048 байт, но не часто, поэтому мне этого хватает с головой.
С записью на 24МГц и 4-бит шине с DMA был прикол, я тему недавно поднимал об этом. Очень интересно, будет ли такое на других, более шустрых камнях.

Писать примерно так:
Код:
// address - адрес на карте, кратный 512 (размеру блока): 0, 512, 1024, etc.
// sector - собственно буфер с данными, которые записать надо
// 2048 - размер буфера
i = SD_WriteBlock_DMA(address,(uint32_t *)sector,2048);
if (i == SDR_Success) {
   i = SD_CheckWrite(2048); // Здесь указывается размер блока данных, чтобы подать команду CMD12 в случае multi-block записи (некрасиво, но пока так)
   if (i == SDR_Success) {
      // Записалось!
   } else {
      // Что-то пошло не так во время передачи блока...
   }
} else {
   // Карта отказывается записывать...
}


ЗЫ: буду рад любым советам и замечаниям по коду :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 19 мар 2015, 04:56 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4255
Откуда: Кемеровская область, Киселевск
Т.е. получается в функции записи, вы сразу отправляете команду CMD24/25 и потом данные передаете? Никаких других команд не отправляете?
Длину блока, количество блоков не отправляете команды? Так как в драйвере от STM там так сделано.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 224 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 9  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: AVI-crak


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB