|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||||||
SD карта SDIO на STM32F4Discovery - странности21.02.2013, 16:00. Показов 24470. Ответов 20
Метки нет (Все метки)
Вот пытаюсь запустить :(
Все инициализации, размер карты (CSD) - всегда без проблем. Нарыскал в интернете 2 драйвера, реализующих функционал карты на базе SDIO - оба прилагаю. SDIO-old и SDIO-new. Первый - моя переделка примера от платы STM3240G-EVOT, 2-й отсюда Начал читать сектора, просто в цикле, для проверки:
SD_ReadBlock кидает ошибку SD_ADDR_MISALIGNED SD_ReadMultiBlocksFIXED - SD_CMD_RSP_TIMEOUT От номера сектора никак не зависит. Единственное исключение - MBR. Соответственно и FatFs сразу обламывается и прочие гадости. Пробовал 2 SD карты, одна 32МБ "демка" от фотоаппарата Canon, 2-z 4ГБ Transcend (не SDHC!!). Монтаж - на проводках, примерно такой же, как и в ST-шной ссылке выше. Кто-нибудь может сказать, в чём здесь дело? Спасибо. [18.9 Кб] [18.97 Кб]
0
|
||||||
| 21.02.2013, 16:00 | |
|
Ответы с готовыми решениями:
20
STM32F4DISCOVERY и ENC28j60 вот странности... SD карта по SDIO FAT SD карта (SDIO) + STM32F103ZET6 не работает |
|
6502
|
|
| 21.02.2013, 21:38 | |
|
Вы используете SD_DMA_MODE для SDIO?
У вас где-нибудь определены макросы SD_DMA_MODE или SD_POLLING_MODE? Полагаю что используете DMA , так как в sdyo_sd.h определен SD_DMA_MODE. Если используете SD_DMA_MODE, то после SD_ReadBlock() или SD_ReadMultiBlocks() нужно обязательно вызвать SD_ReadWoytOperation() и SD_GetStatus(). Подробнее смотрите в шапке sdyo_sd.с, там есть небольшая инструкция. |
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 22.02.2013, 00:38 | |
|
6502, спасибо.
С SD_GetStatus понятно, я её добавил, но SD_ReadWoytOperation я нигде не могу найти. Ни в том примере, ссылка в 1 посте, ни в примерах к плате STM3240G-EVOT, откуда я брал этот драйвер. Странно ...
0
|
|
|
6502
|
|
| 22.02.2013, 00:46 | |
|
Сори, SD_WoytReadOperation а не SD_ReadWoytOperation, драйвер писали индусы у них там опечатка в комментах в шапке а я оттуда скопипастил ))
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||||||
| 22.02.2013, 16:47 | ||||||
|
Вот почитал инструкции в sdyo_sd.c, немного поэкспериментировал.
Получился код:
На всех других секторах прерываний нету, SD_WoytReadOperation висит во внутреннем цикле (смотрел отлдчиком). Хрень какая-то...
0
|
||||||
|
6502
|
|
| 23.02.2013, 14:36 | |
|
А в режиме опроса (SD_POLLING_MODE) вы пробовали? Тоже все плохо?
В режиме опроса функцию SD_WoytReadOperation вызывать не нужно. Прилагаю свой вариант драйвера + драйвер дисковых операций FatFS для SDIO. Хотя у меня почти то-же что и у вас, сравнивайте, экспериментируйте. [18.36 Кб] |
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 23.02.2013, 16:24 | |
|
6502, спасибо, попробую.
SD_POLLING не пробовал. Была мысль о нём, отвлёкся, забыл. Попробую.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 24.02.2013, 00:49 | |
|
C SD_POLLING та же хрень...
SD_ReadBlock кидает SD_ADDR_MISALIGNED. SD_ReadMultiBlocks висит на SD_WoytReadOperation ( ); ... Ваш пример пока не смотрел.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 30
|
|
| 24.02.2013, 04:27 | |
|
Посмотрите эту тему, может поможет
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 24.02.2013, 17:40 | |
|
otix_avr, вроде помогло, но как-то не сразу...
Короче SD_ReadMultiBlocksFIXED заработал через DMA. Прошёл под отладчиком, boot сектор, корневой каталог в буфере увидел ... Что именно там помогло, не знаю. Голова вспухла за 2 часа ковыряний в потрохах sdyo_sd.c. И матюкаться очень хочется. Отдышусь, посмотрю ещё. Если будет стабильный результат, сегодня-завтра выложу рабочий вариант. Запись и FatFs пока не трогал, просто сектора читал в цикле.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 26.02.2013, 17:12 | |
|
Как и обещал, прилагаю рабочие SDIO_SD и DyskIo для FATFs. Работает через DMA.
Все необходимые обработчики прерываний и низкоуровневые функции находятя в SDIO_SD.c. Опрос датчиков разъёма закомментирован (у меня макетка "кривая", ноги эти закорочены). Протестировал только чтение/запись через команды многосекторной работы. Режим опроса не пробовал. SD_ReadBlock упорно ведёт себя, как описано выше. Передачу данных даже не начинает. Запись сектора односекторной командой также не тестировал. Если кто знает, что означает загадочная ошибка SD_ADDR_MISALIGNED, стукните плиз. На карте 32 MB (шла в комплекте с фотоаппаратом Canon) запись ведёт себя странно: Пишу в сектор числа 1..10 по кругу - нормально, пишу последовательность 0..255 - получаю некие "куски" по 10 байт с каким-то сдвигом. Т.е. наблюдается некая закономерность. Что это за хрень, я не понял. На карте Transcend SD 4GB - нормально. Вечером постараюсь проверить другие карты, отпишусь. По руками пока только эти 2.. FatFs погонял. на 4Гб карте FAT32 - корень считал, всё ок. На 32МБ, FAT12 он пытается подсунуть мне какой-то мусор в качестве корневого каталога, хотя когда я последовательно читал сектора, глазами я каталог видел. Лезть в его кишки и разбираться, на чём он там спотыкается, мне пока неохота. Пока сделал вывод, что с FAT12 у него проблемы. FAt16 не проверял, не попалась под руки такая карта. Дома есть карта на 2GB, но какая там FAT, не знаю. [21.57 Кб]
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 27.02.2013, 00:10 | |
|
Погонял ещё на разных картах - SD 2GB FAT16, SDHC 8GB FAT32.
Сектора пишутся везде нормально. А вот с FatFs проблемы - корневой каталог на SDHC 8GB читается хрен знает как. НА 2ГБ нормально. Интересно, есть ли другие, стабильно работающие реализации FAT? Спасибо.
0
|
|
|
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 107
|
|
| 17.06.2013, 20:03 | |
|
SD_ADDR_MISALIGNED Насколько я понял из сегодняшних раскуриваний туториалов, то это означает, что запись начинается не с начала страницы. То есть адрес не кратен 0х200 или 512 байтам. Пока ещё каша в голове, но, возможно, это вам поможет.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 18.06.2013, 11:30 | |
|
HikuTos, спасибо. Я тоже мельком что-то такое слышал.
Как я Вас понял, номер сектора надо на размер сектора умножить? Перепаяю разъём, проверю (сейчас он у меня под SPI переделан).
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 18.06.2013, 11:47 | ||
А у SDHC-карт секторная адресация, у них умножение делать не надо (да и не влез бы результат умножения в 32 бита, из-за этого тип адресации и поменялся на High Capacity карточках).
0
|
||
|
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 107
|
|
| 18.06.2013, 12:18 | |
|
Скажите, а без EVLA_BOARD файлов можно обойтись? А то их прикручивание взрывает мозк.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 18.06.2013, 13:13 | |
|
Можно.
Я под другие проекты убрал их. В частности, сделал свои функции для светодиодов платы и для кнопки. А этот SDIO у меня пока в воздухе висит ....
0
|
|
|
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 107
|
|
| 20.06.2013, 18:05 | |
|
Я так и не смог понять, почему при значиении 242 (241 - ОК)
#define NUMBEROFBLOCKS 200 SD_WriteMultiBlocks престаёт генерировать прерывание. Чтобы такое там могло бы преполниться?
0
|
|
|
Domymykomiz
|
|
| 21.10.2013, 17:45 | |
|
Прошу прощения за непреднамеренный ап, но никто не подскажет ли, ремаппинг пинов SDIO на stm32f4 возможен или надо юзать только отведенные под это ноги?
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 21.10.2013, 18:08 | ||
0
|
||
| 21.10.2013, 18:08 | |
|
Помогаю со студенческими работами здесь
20
SD карта. Посекторное чтение. SDIO. FATFS Миниатюрный МК с SDIO SDIO+bypass SDIO + FAT LPC43xx + SDIO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|