|
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
|
|
STM32F0 запуск SPI DMA передачи по EXTI23.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
|
|
| 23.01.2015, 18:11 | |
|
Ответы с готовыми решениями:
6
STM32F4xx SPI (Master only) + DMA определение конца передачи LCD SPI ILI9341 переработка с обычной передачи на DMA STM32 триггер DMA по EXTI. |
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 24.01.2015, 19:08 | |
|
не хотите использовать прерывания - используйте флаги EXTI
. Мне кажется, задача слишком уж "автоматизирована" в ваших пожеланиях. DMA - мощных струмент, но не всесильный же...ЗЫ: в чем заключается цель такого нежелания использовать прерывания? Вы ж не забывайте, что сработок может быть больше. Соответственно, канал DMA может быть запущен не один раз... Рассмотрите также вариант с таймером со счетом от внешней ноги. Может быть и есть у TIM1 какой-нить канал, который дернет ногу хотя бы одного канала DMA из двух, который вам нужен.
1
|
|
|
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
|
|
| 27.01.2015, 08:19 [ТС] | |
|
Ну я флаги и использую пока, но у них минус, что реакция не моментальная и задействуется ядро.
А смысл отказа от прерываний такой, что программу я разрабатываю в ДРАКОНе (ну и не хочу всегда оглядываться - соблюл ли я атомарность), и когда я её "спроектировал", реализовать намеченное оказалось проще всего через конечный автомат т.е. все состояния через флаги передаются, а в нужный момент - флаги проверяются и на их основании предпринимаются решения. Выходит пока очень элегантно, а из за того, что я точно знаю в каком порядке что будет происходить в программе царит порядок. Много стал уделять внимания порядку как пошел на работу (до этого для себя писал) - а всё из за того, что реальные проекты куда больше моих самых больших домашних проектов. И в них начинаешь путаться и плавать, я уже третий месяц пишу (отчасти из за новизны для меня STM32, я ж AVRил до этого) и уже плохо помню что было в начале ![]() Ну крч с флагами это не то. И с таймером не выйдет - тут понимаешь в чём дело - DMA уже настроены на срабатывание по флагам RxNE и TxE, так что на таймер настроить их не получится, как и на EXTI. Походу придётся всёже прерывания включить по EXTI. PS. Вот кста фотка мэйновой страницы проекта на ДРАКОНе, там где полоски по бокам квадратиков - это функции, там внутри значит еще такой же лист, а то и сложнее, а где чёрный квадратик - там код конкретный задан уже (во внутренних функциях уже много кода).
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 27.01.2015, 12:45 | ||
.ЗЫ: все конечно зависит от возможностей вашего "Дракона"... Я с ним не сталкивался. Но... учитывая, что это STM32, можно предположить, что чего-то сверхъестественного он все равно не предложит... Почитайте про возможности режимов энергосбережения, насколько они вам критичны, и какой именно режим сна вы будете использовать. Тогда будет понятно уже, что же вам в данном случае лучше.
0
|
||
|
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
|
|
| 28.01.2015, 07:52 [ТС] | |
|
Ну если сон, который с потерей состояния памяти - то это да, катастрофа
Но я, скорее всего, буду просто ядро вырубать. А касаемо дракона - он здесь только как инструмент обуздания сложности проекта, вместо UML, генерировать код он не будет.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 28.01.2015, 11:23 | ||
|
0
|
||
|
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
|
|
| 28.01.2015, 13:33 [ТС] | |
|
Нет, у меня немного другие требования к энергопотреблению. Это плата счётчика электроэнергии, так что вообще говоря энегии у него в достатке
А сон ядра, без отключения клоков и перефериии лучший выбор т.к. каждые 20 мс у меня идёт обработка измерений и просыпаться долго - плохо, а просыпаться и начинать всё инициализировать заново - очень плохо. А вот сон ядра, если бы я смог настроить передачу от EXTI по DMA без ядра, был бы какраз кстати Короче сон тут это скорее хороший тон - не расходовать ресурсы России-матушки, да и всё. По этому его я особо в расчёт не беру.
0
|
|
| 28.01.2015, 13:33 | |
|
Помогаю со студенческими работами здесь
7
STM32F0 ADC+DMA ILI9341 SPI DMA, SPI, UART библиотеки ILI9341 SPI DMA, SPI, UART библиотеки SPI DMA вопрос STM32 ili9341 SPI+DMA Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
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
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|