Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 472
1

GPIO и DMA

05.03.2018, 12:19. Просмотров 863. Ответов 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 via DMA
Кто-нибудь сталкивался с такой задачей как передача байта по DMA в ODR GPIO?...

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

STM32F103CBT6 - DMA на GPIO - не выходит
Здравствуйте. Пытаюсь вывести дамп памяти на GPIO через DMA. Пользуюсь...

STM32F4Discovery - ADC DMA и FSMC DMA
Привет всем. Вынужден опять обратиться за Вашей помощью :) Ситуация...

USART2(RX+IDLE+DMA)+USART3(TX DMA)
Принимаю по юсарт2, побайтно, на скрости 115200. Пытаюсь передавать по юсарт3...

21
Витальич
1272 / 1182 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
05.03.2018, 12:40 2
Думаю, что нет и смысла не вижу это делать?
1
_SayHello
578 / 332 / 108
Регистрация: 30.07.2015
Сообщений: 1,211
05.03.2018, 13:40 3
почему нет,настроить в качестве источника взять адрес регистра порта IDR без инкремента, а адрес хранения массив. Забирать по два байта. Смысл тоже не очень понятен. ПОчему в прерывании просто руками не забрать значение регистра в память.
0
Voland_
1670 / 1015 / 97
Регистрация: 04.01.2010
Сообщений: 3,395
05.03.2018, 13:43 4
Можно попробовать завести таймер в режиме capture, и заставить использовать его канал в качестве триггера канала DMA. Но вот насчет вычитки состояния GPIO с пом.DMA - тут точно надо пробовать. С этим сложнее, потому что что-то я непомню такой режим работы с GPIO.

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

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

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

это анализатор буржуйского протокола на шине
лучше конечно на fpga сделать, но verilog пока не очень знаю...
0
Витальич
1272 / 1182 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
14.03.2018, 09:24 16
Лучший ответ Сообщение было отмечено Khludenkov как решение

Решение

Почитайте https://www.saleae.com/ сам прибор можно на али купить рублей за триста
0
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 472
25.04.2018, 15:33  [ТС] 17
Купил, включил, опробовал.
Витальич, спасибо.

Лучше всяких похвал.
Маст хэв, что называется.
0
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 472
25.04.2018, 15:36  [ТС] 18
Единствееное замечание - готичная тема.
Хочется что-нибудь весёленькое.
Подскажите, если кто знает, как сделать посветлее.
0
Миниатюры
GPIO и DMA  
Khludenkov
32 / 26 / 4
Регистрация: 30.04.2014
Сообщений: 472
25.04.2018, 15:51  [ТС] 19
Куплю ещё версию для usb3
Он на fx3 сделан

Добавлено через 13 минут
Но вот, допустим, надо посмотреть протокол SPI 9-бит (8-бит данные и 1 бит подтверждения)
что здесь можно сделать?
0
Voland_
1670 / 1015 / 97
Регистрация: 04.01.2010
Сообщений: 3,395
25.04.2018, 20:44 20
Цитата Сообщение от Khludenkov Посмотреть сообщение
Но вот, допустим, надо посмотреть протокол SPI 9-бит (8-бит данные и 1 бит подтверждения)
что здесь можно сделать?
а что, в настройках SPI нельзя выбрать 9 бит данных?

PS: общий путь, так говорят, что можно сделать свой парсер. Но до такого "меджика" руки еще не дошли, хоть и очень чесались.
0
25.04.2018, 20:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2018, 20:44

5В на выходе GPIO
Как сделать 5В на выходе GPIO. Я слышал, что как то через настройку порта...

GPIO и LPC11xx
Добрый вечер! Как то открыл я даташит по LPC1114 контроллеру, и прочитал вот...

Скорость GPIO
Привет! Набросал программку (контроллер STM8S103 в SOIC-20): #include...


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

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

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