Форум программистов, компьютерный форум, киберфорум
Наши страницы

Микроконтроллеры ARM, Cortex, STM32

Войти
Регистрация
Восстановить пароль
 
 
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 453
#1

GPIO и DMA - ARM, Cortex, STM32 микроконтроллер

05.03.2018, 12:19. Просмотров 550. Ответов 21
Метки нет (Все метки)

Здравствуйте.

Скажите, есть ли возможность настроить DMA таким образом, чтобы при возникновении внешнего прерывания (скажем, при изменении состояния некой ноги с 1 на 0 или наоборот) читалось состояние пинов и сохранялось в буфере DMA ?

Можно, ли, к примеру, задать буфер 10 Кб для этого дела, на МК STM32F407 ?

Даташит читаю, но как-то пока не очень...

Добавлено через 1 минуту
Везде примеры обычно для АЦП приводятся...

В том же Мартине "STM32 Inside Guide"...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2018, 12:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос GPIO и DMA (ARM, Cortex, STM32 микроконтроллер):

GPIO via DMA - ARM, Cortex, STM32 микроконтроллер
Кто-нибудь сталкивался с такой задачей как передача байта по DMA в ODR GPIO? (или конкретных бит, если такое вообще возможно). В режиме...

Запись в GPIO порт DMA - ARM, Cortex, STM32 микроконтроллер
Всем привет столкнулся с проблемой записи в GPIO порт через DMA, ни как не могу записать только старшие 8 бит ...

STM32F103CBT6 - DMA на GPIO - не выходит - ARM, Cortex, STM32 микроконтроллер
Здравствуйте. Пытаюсь вывести дамп памяти на GPIO через DMA. Пользуюсь кубом+SW4STM32. Код - простейший: 1.Инициализация DMA: ...

STM32F4Discovery - ADC DMA и FSMC DMA - ARM, Cortex, STM32 микроконтроллер
Привет всем. Вынужден опять обратиться за Вашей помощью :) Ситуация такая. 1. Дисплей работает через FSMC. Написал драйвер...

USART2(RX+IDLE+DMA)+USART3(TX DMA) - ARM, Cortex, STM32 микроконтроллер
Принимаю по юсарт2, побайтно, на скрости 115200. Пытаюсь передавать по юсарт3 через DMA, скорость 115200. На выходе юсарт3, получаю вот...

5В на выходе GPIO - ARM, Cortex, STM32 микроконтроллер
Как сделать 5В на выходе GPIO. Я слышал, что как то через настройку порта можна, используя выход с открытым стоком, но у меня в этом...

21
Витальич
1251 / 1162 / 172
Регистрация: 02.12.2013
Сообщений: 4,824
05.03.2018, 12:40 #2
Думаю, что нет и смысла не вижу это делать?
1
_SayHello
313 / 271 / 85
Регистрация: 30.07.2015
Сообщений: 997
05.03.2018, 13:40 #3
почему нет,настроить в качестве источника взять адрес регистра порта IDR без инкремента, а адрес хранения массив. Забирать по два байта. Смысл тоже не очень понятен. ПОчему в прерывании просто руками не забрать значение регистра в память.
0
Voland_
1472 / 982 / 93
Регистрация: 04.01.2010
Сообщений: 3,227
05.03.2018, 13:43 #4
Можно попробовать завести таймер в режиме capture, и заставить использовать его канал в качестве триггера канала DMA. Но вот насчет вычитки состояния GPIO с пом.DMA - тут точно надо пробовать. С этим сложнее, потому что что-то я непомню такой режим работы с GPIO.

PS: вцелом согласен с комментом ув Витальич, зачем это надо делать - непонятно. Запись данных в буфер можно сделать из прерывания. Это займет не так уж много времени, даже с учетом возможного энергосбережения.
0
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 453
05.03.2018, 13:44  [ТС] #5
прерывания идут очень быстро - 1 МГц
не уверен что МК успеет их обработать
думаю, что с использованием DMA будет быстрее
0
Voland_
1472 / 982 / 93
Регистрация: 04.01.2010
Сообщений: 3,227
05.03.2018, 13:54 #6
Цитата Сообщение от Khludenkov Посмотреть сообщение
прерывания идут очень быстро - 1 МГц
не уверен что МК успеет их обработать
Может ASM'ом? Для копирования, наверное, 1-2х инструкций надо, практически без сохранения контента.
_SayHello, адрес не всегда срабатывает. Хорошо если так получится. Просто обращение к памяти в stm32, не то же самое, что и обращение к устройствам (GPIO, например). Соответственно, непонятно что надо брать в качестве "носителя прерывания", какую периферию. Есть сомнение что режим mem2mem здесь подойдет, надо проверять.
0
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 453
05.03.2018, 13:55  [ТС] #7
Вот нашёл мануал "Parallel synchronous transmission using GPIO and DMA"

Интересно задействовать периферию стм-ки "на все сто"
0
Voland_
1472 / 982 / 93
Регистрация: 04.01.2010
Сообщений: 3,227
05.03.2018, 14:10 #8
с мануалом все могут... )
ЗЫ: я юзал mem => DMA => TIM_CCn связь, в режиме PWM. Музычку таким образом играл на спикере. Ее в доках не было. Так что, вполне возможно, для GPIO тоже такое имеется.
1
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 453
05.03.2018, 14:11  [ТС] #9
Спасибо.
Будем читать мануал...
0
ValeryS
Модератор
7010 / 5348 / 527
Регистрация: 14.02.2011
Сообщений: 18,046
05.03.2018, 15:11 #10
Цитата Сообщение от Khludenkov Посмотреть сообщение
прерывания идут очень быстро - 1 МГц
не уверен что МК успеет их обработать
обрабатывать или писать?
1 Мгц возьмем частоту срабатывания 2 Мгц это 84 такта процессора (частота МК 168 Мгц)
12 тактов на вход прерывания 62 такта на запись и выход из перерывания
1
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 453
05.03.2018, 15:45  [ТС] #11
ну в общем так...
попробую влезть

Добавлено через 17 секунд
читать
0
Voland_
1472 / 982 / 93
Регистрация: 04.01.2010
Сообщений: 3,227
08.03.2018, 14:39 #12
ValeryS, это если вектора прерываний в RAM. у FLASH сколько WaitState'ов на клоке 168МГц? 4? 5?
Хотя в M4 памяти завались - функцию можно и в раме положить .
0
locm
2107 / 834 / 82
Регистрация: 28.10.2011
Сообщений: 2,618
Записей в блоге: 6
08.03.2018, 18:04 #13
Цитата Сообщение от Voland_ Посмотреть сообщение
насчет вычитки состояния GPIO с пом.DMA - тут точно надо пробовать
Запись в порт нормально выполняется. http://www.cyberforum.ru/blogs/204791/blog5169.html
Сложностей с чтением думаю тоже не возникнет.
1
locm
2107 / 834 / 82
Регистрация: 28.10.2011
Сообщений: 2,618
Записей в блоге: 6
13.03.2018, 16:22 #14
Цитата Сообщение от Khludenkov Посмотреть сообщение
прерывания идут очень быстро - 1 МГц
не уверен что МК успеет их обработать
Нужно обрабатывать каждое прерывание, или достаточно фиксировать время между импульсами на входе?
0
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 453
14.03.2018, 08:37  [ТС] #15
время между импульсами совсем не важно.
важно состояние других ног в момент прерывания (изменения сигнала на линии клока)

это анализатор буржуйского протокола на шине
лучше конечно на fpga сделать, но verilog пока не очень знаю...
0
14.03.2018, 08:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2018, 08:37
Привет! Вот еще темы с ответами:

GPIO и LPC11xx - ARM, Cortex, STM32 микроконтроллер
Добрый вечер! Как то открыл я даташит по LPC1114 контроллеру, и прочитал вот такую фразу: Pull-up level If the pull-up resistor is...

Скорость GPIO - ARM, Cortex, STM32 микроконтроллер
Привет! Набросал программку (контроллер STM8S103 в SOIC-20): #ymstude "libs/stm8s.h" #defyme PORT GPIOD #defyme PIN 4 ...

Нечто непонятно с GPIO - ARM, Cortex, STM32 микроконтроллер
Пытаясь управлять экранчиком аля Winstor WH0802A столкнулся с неожиданной проблемой,2 ноги из 7 к которым подключен дисплей просто не...

GPIO часть порта - ARM, Cortex, STM32 микроконтроллер
Добрый день. Что то затупил с портом. Нужно записать данные в первые 6 бит порта. а на 8 бите висит CS от другого устройства. Как...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru