реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 несколько периферийных устройств на DMA
uriy
сообщение Apr 16 2015, 05:16
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Использую UART TX DMA.
Хочу добавить DMA на ADC.
В ref man очень странное предложение:
Цитата
The 7 requests from the peripherals (TIMx[1,2,3,4], ADC1, SPI1, SPI/I2S2, I2Cx[1,2] and
USARTx[1,2,3]) are simply logically ORed before entering the DMA1, this means that only
one request must be enabled at a time
. Refer to Figure 50: DMA1 request mapping.

Как это понимать? Я не смогу использовать больше одного канала DMA?
Что они имеют ввиду?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 16 2015, 05:39
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Имеют в виду, что для одного канала можно только один источник. А каналы можно использовать хоть все одновременно.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
uriy
сообщение Apr 16 2015, 06:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



т.е. они вот это место имеют ввиду. Не по человечи написали
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 16 2015, 07:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



7 запросов от периферии соединены через "ИЛИ" до входа на ДМА1, это означает что только один запрос должен быть включен одновременно. По моему весьма нормально описали именно то место, правда другую ветку, где 7 запросовsm.gif, а не ту что обведена.
А ограничение это неприятно включили ADC1 и потеряли таймер2_канал3...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 16 2015, 08:00
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(uriy @ Apr 16 2015, 11:47) *
т.е. они вот это место имеют ввиду. Не по человечи написали

Да, коряво описано. Но по факту - так.
В более поздних реализациях DMA ввели регистр выбора подключённого к каналу периферийного модуля.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Apr 16 2015, 17:23
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Golikov A. @ Apr 16 2015, 10:07) *
это означает что только один запрос должен быть включен одновременно.

А проверить не судьба... или проще толпой в прострации бродить???
За все линейки не буду говорить... но на F050, 051 два события на один канал влёгкую... одновременно...
Там главное не то чтобы они не были включены одновременно... а чтобы события были заведомо разнесены по времени... чтобы не перекрывались...

Сообщение отредактировал HHIMERA - Apr 16 2015, 17:24
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 17 2015, 05:03
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Че проверить то? Это и ежу понятно что если у вас стоит ИЛИ по событиям то схема не может различить какой из 2 включенных вызывало это событие, потому и говорят что должно в одно время быть включено только 1 событие, чтобы была определенность.

Если у вас 2 события разнесены по времени, то гораздо правильнее и ДМА перенастраивать чтобы было включено то одно что вы сейчас ожидаете, а не 2 сразу и надеяться что все прокатит... Ведь кроме источников событий у них еще разные адреса приема и записи, если их меняете, то чего и битик источника не поменять? Или любим искать почему АЦП не верно меряет когда таймер включен?
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Apr 17 2015, 07:06
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Golikov A. @ Apr 17 2015, 08:03) *
Это и ежу понятно что если у вас стоит ИЛИ по событиям то схема не может различить какой из 2 включенных вызывало это событие, потому и говорят что должно в одно время быть включено только 1 событие, чтобы была определенность.

Не надо трактовать референс по своему... Фраза "только один запрос должен быть включен одновременно" не верна по сути... Если есть необходимость... можно и три, четыре запроса включить одновременно на один канал... например от таймера, если позволяет железо и это соответствует задаче... А адреса приема и записи могут и не меняться... и перенастройки может не быть... и канал ДМА вообще может работать в циклическом режиме... Т.е. для понимания происходящего нужно рассматривать все варианты... а не только UART и ADC...

Сообщение отредактировал HHIMERA - Apr 17 2015, 07:07
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 17 2015, 07:57
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
this means that only one request must be enabled at a time

ну скажите тогда ваш правильный перевод...

заодно привидите пример, пожалуйста, что у вас ДМА может делать по одним и тем же адреса, можно и циклическим при наступлении событий скажем 2 канала
1. Пришел символ по UART
2. Отправлен символ по SPI
3. таймер достиг максимального значения

Понятно дело что обязанность быть включенным одному канала связана не с ограничением прибора, а с ограничением здравого смысла...


Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Apr 17 2015, 08:17
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Golikov A. @ Apr 17 2015, 10:57) *
ограничением здравого смысла...

Здравый смысл не должен иметь ограничений... иначе это уже не здравый смысл, а с ограничениями...
Я вам привёл реальный пример... который успешно применяется... таймера... Включение двух запросов (трёх, четырёх) на один канал позволяет экономить каналы ДМА (они не безграничны) на некоторых задачах... при работе с портом, например... Поэтому ваша настойчивая попытка троллинга мне не интересна...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 17 2015, 08:43
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



чего то я пропустил реальный пример, можете повторить еще раз.

какие 2 события у вас запускают один канал
и что происходит по этим событиям из какого адрес в какой перегоняются данные?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 11:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016