Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для NoobsEnslaver
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238

STM32F0 запуск SPI DMA передачи по EXTI

23.01.2015, 18:11. Показов 3910. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет народ, дело такое. Есть у меня SPI с настроенными на него DMA каналами, всё работает. Как сделать так, чтобы DMA передача начиналась по внешнему прерыванию, не уходя в прерывание, автоматически? Есть у меня одна идея - взять еще один DMA канал и его подцепить к EXTI и делать он будет вот что - копировать 1 в бит запуска SPI, всё просто. Но не совсем мне подходит - дело в том, что у меня МК STM32F051, а у него всего 1 DMA с 5 каналами, 4 из которых я уже использую для передачи по SPI и USORT т.е. остается всего один, а запускать по EXTI надо и SPI и USORT, причём по разным EXTI. Есть идеи?
PS: Прерывания не хочу использовать т.к. у меня программа построена так, что там нет ни одного прерывания и ради этого момента не хотелось бы делать исключения, обламывать все старания. Ну и просто будет более качественный код, если всёже дожать DMA до конца.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2015, 18:11
Ответы с готовыми решениями:

STM32F4xx SPI (Master only) + DMA определение конца передачи
Вопрос собственно в следующем: как отслеживать, что SPI физически закончил передавать данные? DMA рапортует об окончании передачи тогда,...

LCD SPI ILI9341 переработка с обычной передачи на DMA
Всем привет. Есть экран который подключен к микроконтроллеру через SPI. Но быстродействия экрана не хватает. Поэтому я подключаю режим DMA....

STM32 триггер DMA по EXTI.
Скажите пожалуйста можно ли синхронизировать DMA по сигналу внешнего прерывания? Те чтобы ДМА бросал данные память->память с триггером...

6
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
24.01.2015, 19:08
не хотите использовать прерывания - используйте флаги EXTI . Мне кажется, задача слишком уж "автоматизирована" в ваших пожеланиях. DMA - мощных струмент, но не всесильный же...

ЗЫ: в чем заключается цель такого нежелания использовать прерывания? Вы ж не забывайте, что сработок может быть больше. Соответственно, канал DMA может быть запущен не один раз... Рассмотрите также вариант с таймером со счетом от внешней ноги. Может быть и есть у TIM1 какой-нить канал, который дернет ногу хотя бы одного канала DMA из двух, который вам нужен.
1
 Аватар для NoobsEnslaver
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
27.01.2015, 08:19  [ТС]
Ну я флаги и использую пока, но у них минус, что реакция не моментальная и задействуется ядро.
А смысл отказа от прерываний такой, что программу я разрабатываю в ДРАКОНе (ну и не хочу всегда оглядываться - соблюл ли я атомарность), и когда я её "спроектировал", реализовать намеченное оказалось проще всего через конечный автомат т.е. все состояния через флаги передаются, а в нужный момент - флаги проверяются и на их основании предпринимаются решения. Выходит пока очень элегантно, а из за того, что я точно знаю в каком порядке что будет происходить в программе царит порядок. Много стал уделять внимания порядку как пошел на работу (до этого для себя писал) - а всё из за того, что реальные проекты куда больше моих самых больших домашних проектов. И в них начинаешь путаться и плавать, я уже третий месяц пишу (отчасти из за новизны для меня STM32, я ж AVRил до этого) и уже плохо помню что было в начале
Ну крч с флагами это не то. И с таймером не выйдет - тут понимаешь в чём дело - DMA уже настроены на срабатывание по флагам RxNE и TxE, так что на таймер настроить их не получится, как и на EXTI. Походу придётся всёже прерывания включить по EXTI.

PS. Вот кста фотка мэйновой страницы проекта на ДРАКОНе, там где полоски по бокам квадратиков - это функции, там внутри значит еще такой же лист, а то и сложнее, а где чёрный квадратик - там код конкретный задан уже (во внутренних функциях уже много кода).
Миниатюры
STM32F0 запуск SPI DMA передачи по EXTI  
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
27.01.2015, 12:45
Цитата Сообщение от NoobsEnslaver Посмотреть сообщение
Ну крч с флагами это не то.
Ключевое в вашей схеме - это режим "сна". И когда вы приступите к его реализации, то поменяете свое мнение насчет пользы использования флагов .

ЗЫ: все конечно зависит от возможностей вашего "Дракона"... Я с ним не сталкивался. Но... учитывая, что это STM32, можно предположить, что чего-то сверхъестественного он все равно не предложит... Почитайте про возможности режимов энергосбережения, насколько они вам критичны, и какой именно режим сна вы будете использовать. Тогда будет понятно уже, что же вам в данном случае лучше.
0
 Аватар для NoobsEnslaver
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
28.01.2015, 07:52  [ТС]
Ну если сон, который с потерей состояния памяти - то это да, катастрофа Но я, скорее всего, буду просто ядро вырубать. А касаемо дракона - он здесь только как инструмент обуздания сложности проекта, вместо UML, генерировать код он не будет.
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
28.01.2015, 11:23
Цитата Сообщение от NoobsEnslaver Посмотреть сообщение
Ну если сон, который с потерей состояния памяти - то это да, катастрофа
ну, для F0 я еще ничего не писал, это да. Но у F1 есть много видов сна, а остановка ядра мало что дает. Хорошо помогает остановка клоков. Тогда спит вся периферия, кроме LSI и SysTick'а. Просыпаться довольно долго. Зато потребление падает в разы. Остановка ядра дает результат 10-20%. Если вам важно - потребляет ваш девайс 20 или 18мА - то это самый удачный вариант.
0
 Аватар для NoobsEnslaver
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
28.01.2015, 13:33  [ТС]
Нет, у меня немного другие требования к энергопотреблению. Это плата счётчика электроэнергии, так что вообще говоря энегии у него в достатке А сон ядра, без отключения клоков и перефериии лучший выбор т.к. каждые 20 мс у меня идёт обработка измерений и просыпаться долго - плохо, а просыпаться и начинать всё инициализировать заново - очень плохо. А вот сон ядра, если бы я смог настроить передачу от EXTI по DMA без ядра, был бы какраз кстати Короче сон тут это скорее хороший тон - не расходовать ресурсы России-матушки, да и всё. По этому его я особо в расчёт не беру.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2015, 13:33
Помогаю со студенческими работами здесь

STM32F0 ADC+DMA
Есть кто-то кто программировал АЦП с несколькими каналами STM32F0? Я настроил АЦП с DMA что бы опрашивать 5 АЦП входов. Делал это...

ILI9341 SPI DMA, SPI, UART библиотеки
Доброго времени, форумчане... Посоветуйте библиотек плиз... 0) Либа для работы с контроллером по типу HAL (чисто ваше мнение какая вам...

ILI9341 SPI DMA, SPI, UART библиотеки
Доброго времени, форумчане... Посоветуйте библиотек плиз... 0) Либа для работы с контроллером по типу HAL (чисто ваше мнение какая вам...

SPI DMA вопрос
читаю даташит. Там в таблице каналов дма STEAM5 и STEAM7 это SPI3_TX. Могу ли я отправлять буфер через STEAM5, в это время закачивать...

STM32 ili9341 SPI+DMA
Всем привет. У меня никак не получается правильно настроить работу дисплея ili9341. Сейчас подключен он по SPI с использованием DMA. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru