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

SDCard+FreeRTOS+DMA как правильно пользоваться?

12.03.2017, 16:11. Показов 5693. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю на stm32f429 с sd картой. В FriiRTOS крутится поток, в него поступают данные, он их записывает на карту памяти.
Исходники Friirtos скачивал с сайта Чена и реализовал необходимые функции, подглядев примеры от ST. (Без уровня BSP, и т.п. вещей, которые сильно усложняли восприятие).
Например тело функции чтения с карты выглядит так:
Code
1
return (HAL_SD_ReadBlocks(&hsd, (uint32_t*)buff, (uint64_t) (sector * BLOCK_SIZE), BLOCK_SIZE, count)==SD_OK)?RES_OK:RES_ERROR;
Это я все к чему... Иногда при попытке закрыть файл (а может и при других действиях) возникает ошибка в низкоуровневом драйвере. У меня такое подозрение, что из-за RTOS нарушаются какие-нибудь тайминги. Пробовал добавлять критические секции (точнее запрет перехода в другие потоки, т.к. прерывания отключать в моем случае нельзя, принимаются данные) - ничего не изменилось. Ошибок в общем-то мало, но они есть и напрягают.
Хотел использовать для записи DMA, соответственно используя HAL_SD_ReadBlocks_DMA() вместо HAL_SD_ReadBlocks() - вообще ничего не пишется и не читается. Примеров с DMA не нашел.
Как правильно работать с SD картой из RTOS?
У кого-нибудь получилось использовать DMA для работы с SD картой?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2017, 16:11
Ответы с готовыми решениями:

STM32F4 + USB FLASH + DMA + USART + CAN + DSP + FreeRTOS ?
Добрый вечер! Нужен совет. Делаю проект на STM32F4Dyscovery. К USB подключил FLASHку (Transcend на 4Гб). Активно используется...

Как правильно настроить FIFO в DMA?
В памяти лежит массив Half-wordов. Через DMA хочу передать его по UART. Соответственно в настройках DMA ставлю: ...

Как правильно отработать флаги в прерываниях по DMA
Всем привет! Пытаюсь разобраться с приемом/передачей по usart через dma. Шаблон генерировал в stm32cubemx. В целом и прием и передача...

1
Oxford
13.03.2017, 04:57
Операционная система не влияет на работу периферии микроконтроллера, она только распределяет процессорное время между задачами.

Мои рекомендации:
1. Создать программу без ОС, настроить SDIO/SPI периферию согласно Reference Manual микроконтроллера, подключить и настроить драйвер SD карты.
2. Научиться работать с картой (чтением и записью случайных секторов), до тех пор пока не будет работать правильно без DMA.
3. Изучить Reference Manual на микроконтроллер и настроить DMA контроллер для совместной работы с периферией SDIO/SPI.
4. Научиться работать с картой (чтением и записью случайных секторов), до тех пор пока не будет работать правильно c DMA контроллером.
5. Подключить к программе операционную систему, изучить как создавать, настраивать и работать с задачами согласно документации поставщика продукта.
6. Повторять предыдущие пункты пока не заработает все.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2017, 04:57
Помогаю со студенческими работами здесь

ШИМ через DMA-как правильно настроить посылку данных (HAL)?
Что-то не дается мне DMA в STM32 через HAL... Настраиваю таймер TIM3 первый канал на генерацию ШИМа. Все работает как часы. Шим...

как правильно пользоваться
Здравствуйте, нашел интересный код для интересной задачи (Удалить комментарии из файла), но как сделать так,чтобы программа брала input.txt...

Как правильно пользоваться dispatchEvent?
В процессе освоения as столкнулся с такой задачей: Из movieClip1 нужно отключать/включать слушатель событий для movieClip2.Выключить...

Как правильно пользоваться процедурами?
Здраствуйте, прошу помощи. У меня есть такая процедура: Public Sub ShowDescText_1() LDesc_1.Visible = True ...

Transparent. Как правильно пользоваться?
Не получается наложить картинку поверх фона чтоб лишнее становилось прозрачным без уничтожения фона :( Помогите как правильно сделать....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник 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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru