Easyelectronics.ru

Электроника для всех
Текущее время: 14 ноя 2019, 09:52

Часовой пояс: 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
Сообщения: 2428
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
Сообщения: 2428
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
Сообщения: 2428
AlexPM писал(а):
Да всё там есть. Быстрее нажать эти три кнопки, чем столько времени гадать: есть ли, нет ли.

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


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

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2428
Нарыл кое-какое описание, может кому пригодиться
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
Сообщения: 2428
Вчера до 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
Сообщения: 2428
Берет из 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
Сообщения: 4384
Откуда: Кемеровская область, Киселевск
Код корявый просто

_________________
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
Сообщения: 2428
Спасибо всем!
Вроде пашет - и хрен с ним.
Будет время, покопаю поглубже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 1787
Откуда: Донецк, ДНР
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
Сообщения: 1580
Откуда: Киев
Резисторы подтяжки ставят, чтобы ноги не болтались, когда карта не вставлена. Иначе может ошибочно определить, что карта вставлена и пытатся что-то с ней делать.

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
Сообщения: 4384
Откуда: Кемеровская область, Киселевск
Кто-нибудь запустил запись в режиме мультиблок через 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
Сообщения: 4384
Откуда: Кемеровская область, Киселевск
не обязательно 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
Сообщения: 4384
Откуда: Кемеровская область, Киселевск
Т.е. получается в функции записи, вы сразу отправляете команду CMD24/25 и потом данные передаете? Никаких других команд не отправляете?
Длину блока, количество блоков не отправляете команды? Так как в драйвере от STM там так сделано.

_________________
RADIOWOLF.RU


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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