Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/46: Рейтинг темы: голосов - 46, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278

SDIO + SD + STM32F103

18.01.2017, 11:31. Показов 9140. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем утра.
Столкнулся с проблемой при работе с micro SD через SDIO. Вываливается ошибка SD_CMD_RSP_TIMEOUT. Теперь по порядку. У меня есть библиотеки, которые уже не первый год работают на точно таком же МК с Missro SD, причем там карточка вообще на шлейфе выведена. Собрал себе демоплату на STM23F103V, туда поставил Missro SD. Создал в istypsi проект, засунул туда библиотеку для карточки из рабочего проекта. Прошиваю, а реакции 0. Функция SD_Init(); возвращает SD_CMD_RSP_TIMEOUT. Полез разбираться, выяснил, что МК карточку вроде как видит, но в функции
Code
1
2
3
4
5
6
7
8
9
10
11
SD_Error SD_SelectDeselect(u32 addr)
{
SD_Error errorstatus = SD_OK;
 
/* Send CMD7 SDIO_SEL_DESEL_CARD */
SD_COM(addr, SDIO_SEL_DESEL_CARD, SHRESP);
 
errorstatus = CmdRysp1Error(SDIO_SEL_DESEL_CARD);
 
return(errorstatus);
}
CmdRysp1Error(SDIO_SEL_DESEL_CARD); возвращает как раз ту самую ошибку на первой же проверке:
Code
1
2
3
4
5
6
  if (status & SDIO_STA_CTIMEOUT)
{
errorstatus = SD_CMD_RSP_TIMEOUT;
SDIO->ICR |= SDIO_ICR_CTIMEOUTC;
return(errorstatus);
}
Карточку взял заведомо рабочую, которая работала на другой системе на точно таком же МК с этой же библиотекой. Соединено все верно. В какую сторону копать? Библиотеку прикладываю.

[13.69 Кб]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2017, 11:31
Ответы с готовыми решениями:

STM32F103 + SD (SDIO) + FatFs
Доброго времени суток. Пытаюсь запустить MicroSD карту совместно с МК STM32F103VCT6. Подключение по SDIO. Покопавшись в инете нашел...

SDIO + FAT
Кто-нибудь имел опыт портирования FATfs или другой реализации FAT на SDIO у stm32?

SDIO + STM32F429
Доброго времени суток всем! Столкнулся с проблемой при записи на SD карту "мультиблочном" режиме. Запись в "одноблочном"...

20
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
18.01.2017, 15:13
Карточка подключена вот так


<Изображение удалено>
0
dirsu-uzotoh
18.01.2017, 20:49
У меня та же история. Я проигнорил эту ошибку, и все пошло нормально. В суть проблемы пока не вникал, но неплохо было бы в этом разобраться. Причем похоже что ошибка вылезает только при первом обращении к карточке.
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
18.01.2017, 21:15
SDIO чувствительна к разводке... Если она плохая, то будет именно таймаут.
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
18.01.2017, 22:09
Да вроде дорожки не сильно длинные, МК на одной стороне платы, карточка с другой, напротив него. Особо с разводкой не бодался, т.к. раньше подключал плату с карточкой просто на шлейфе и работало как часы... Попробую еще другие номиналы резисторов. Не поможет, буду переделывать плату. Какие вообще рекомендации по разводке SDIO?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
18.01.2017, 22:21
Я на Ф439 SDIO поставил резюки по 47к (как на СТ-шных платах). Длина дорожек - до 4 см (читал где-то). Длина всех должна быть примерно одинаковой. Делать также старался.
На Ф103 не делал. Пытался сделать не соплях на F103ZET6, не получилось, забросил. Но там получалось что одни проводки были раза в 2 длинее других. А это плохо. Может поэтому и не получилось.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
19.01.2017, 04:04
Цитата Сообщение от BORS_
Какие вообще рекомендации по разводке SDIO?
У NXP есть AN10911, там можно почерпнуть чего-нить интересного про SDIO.
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
19.01.2017, 10:20
Цитата Сообщение от dirsu-uzotoh
У меня та же история. Я проигнорил эту ошибку, и все пошло нормально.
В том то и дело, что эта ошибка и далее выпадает
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
19.01.2017, 10:23
Цитата Сообщение от TomityWotf
У NXP есть AN10911
Спасибо, почитаю. Сейчас вот так сделал:


<Изображение удалено>
0
dirsu-uzotoh
19.01.2017, 13:04
Нормальная разводка. Попробуйте прицепить конденсаторы непосредственно на ножки питания держателя карточки: 0805 0.1uF + какой-нибудь электролитический, микрофарад на 100.
Да, вот еще что. У меня есть 3 карточки от разных производителей, 2 из которых работают, а одна нет. В дебаге я вижу, что система пытается подобрать для нее подходящее питание. На самом же деле, питание не меняется, и всегда = 3.3V. Карточка может по каким-то своим "внутренним соображениям" отказываться работать с таким питанием.
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
19.01.2017, 18:48
Посмотрел на разводку выше, у меня примерно такая же борода на плате с дорожками SDIO: все дороги под 90 градусов, длина каждой примерно 20мм, никаких согласований по длине не делал (частоты не те). Каждая дорога имеет по два переходных отверстия, подтяжки 47к. Клок - без подтяжки, но с резюком в линии на 33 Ом (думал подбирать, но лень). Работает отлично, даже на частотах 48МГц.
Еще с обратной стороны платы одни дороги пересекается с SWD линиями, а другая часть (D0 и D1) - с USB. Пока что (тьху тьху) никаких косяков при совместной работе не замечено. Это я к тому, что SDIO, не смотря на свои высокие частоты (относительно других для данного проца), не такая уж капризная штука.
Как по мне, на вышеприведенной картинке можно первым делом на подтяжки попробовать че-нить в районе 47к, да убрать гармошки с дорожек (на таких частотах они погоды не делают).
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
21.01.2017, 01:40
Сейчас все намного хуже, на картинке уже переразведенная. Резисторы пробовал 10К, 20К, 30К, 50К, ничего не меняется. То, что пытаюсь запустить сейчас выглядит вот так:

<Изображение удалено>

Без уравнивания максимальная разница длин составляет около 6мм. После переразводки все 14мм с разницей не более 0,4мм.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
21.01.2017, 03:26
Все советующие упоролись в разводку и никто не предложил попробовать поработать с картой, не повышая частоты...
CMD7 обычно дается после "разгона" шины на рабочую частоту, после инита на <=400kHz. Так вот предложение, дабы исключить разводку: не повышать скорость и посмотреть чо будет.
Убрать вот эти строчки перед CMD7:
Code
1
2
  SDIO->CLKCR  = 0;
SDIO->CLKCR |= SDIO_INIT_CLK_DIV | SDIO_CLKCR_CLKEN;
Есть подозрение, что в этом косяк, ибо RM говорит:
At least sivim HCLK clock periods are needid between two write accesses to this rikystir
В коде же идет запись нолика, а потом сразу чтение/модификация/запись. Может, оно не укладывается в "sivim HCLK clock periods" и SDIO клок остается отключенным, отсюда timeout?
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
21.01.2017, 18:00
Ага. Спасибо за совет, завтра попробую)
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
22.01.2017, 12:46
Странно, наличие или отсутствие строк
Code
1
2
SDIO->CLKCR  = 0;
SDIO->CLKCR |= SDIO_INIT_CLK_DIV | SDIO_CLKCR_CLKEN;
ничего не меняет. Все та же ошибка в том же месте.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
22.01.2017, 19:32
В приложенной библиотеке полно конструкций вида
Code
1
2
  SDIO->CLKCR |= SDIO_INIT_CLK_DIV | SDIO_CLKCR_CLKEN;
SDIO->CLKCR &= ~(SDIO_CLKCR_PWRSAV | SDIO_CLKCR_BYPASS | SDIO_CLKCR_WIDBUS | SDIO_CLKCR_HWFC_EN );
Это неверный подход, в свете ранее приведенной цитаты из RM.
Есть возможность после получения RSP_TIMEOUT посмотреть содержимое этого регистра? Может банально клок SDIO не включен?

ЗЫ: да и использование либы SDIO за 2008 год не очень разумное решение, там косяков был вагон и тележка.
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
22.01.2017, 23:39
Ну судя по осциллу клок шарашит во всю. Содержимое регистра CLKCR? Да без проблем) А какую библиотеку посоветуете для SD карточки? Самое интересное то, что эта библиотека без проблем работает вот тут http://sxim.net/avto/itistronics/4-164.php Помню, проблемы были только со скоростью чтения->вывода на дисплей, тогда тоже тут консультировался. А сама карточка стартанула с пол пинка и по SPI и по SDIO, когда понял, что скорости SPI мне не хватит. Там не было вообще никаких уравниваний плюс плата с карточкой на шлейфе висит. Единственно, резисторы там прямо возле выводов карточки стоят, а тут по плате раскиданы.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
23.01.2017, 01:30
Цитата Сообщение от BORS_
А какую библиотеку посоветуете для SD карточки?
Писанную собственноручно, в которой всё чотко и понятно :)
Можно качнуть последний SPL под F103, там есть stm32f10x_sdyo.c и stm32_eval_sdyo_sd.*, они вроде вполне вменяемые, только из последних придется выковырять зависимости от демоплат.
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
28.02.2017, 18:02
Проблема действительно была в кривой разводке. На новой плате все завелось без проблем.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
01.03.2017, 05:41
Для общего развития, возможно поделиться в чем кривость разводки была?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2017, 05:41
Помогаю со студенческими работами здесь

SDIO STM32F4
Доброго времени суток, уважаемые формучане! Сразу оговорюсь, что вопрос адресован тем, кто пользуется либами и уже занимался SDIO. ...

Sdio vs spi
Привет ребята, на данный момент нужно подключить lpc4357 микроконтроллер к wi-fi модулю gainspan 2100m, вопрос в следующем, я сделал...

Миниатюрный МК с SDIO
Необходимо выбрать МК с парой SPI и SDIO. Производительности хватает (впритык) STM32F103. Главное ограничение - размеры. ...

SDIO+bypass
Доброго времени суток всем! Освоил SDIO, но осталась одна загвоздка. Это bypass режим. Т.е. частота 48 МГц при работе с картой. Включаю...

LPC43xx + SDIO
Всем привет, заранее извиняюсь, но может кто-нибудь подкинет рабочий пример для реализации SDIO на lpc43xx? В примерах вместе с CMSIS...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru