Перейти к содержанию
    

STM32F407VET6 DMA Каналы и потоки

Из описания регистров DMA STM32F407 можно предположить что для двух рвзных потоков можно назначить один и тот же канал( мне требуется одновременная работа DMA для TIM5_CH1 и TIM5_CH2 - то есть сочетание Stream2/DMA1_Channel6

и Stream4/DMA1_Channel6. Поскольку определены конфигурационные регистры для Stream, в которых нужно задать небходимый Channel, такой фокус представляется заманчиво возможным. Но интуиция подсказывает, что это не так. Или в 407

есть нечто инновационное с ДМА, по сравнению с младшими семействами? В RM0090 не обнаружил упоминаний о том, что в двух разных DMA_SxCR можно/нельзя указать одинаковый номер канала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в RM на стр 306, рисунок 32.

Очень наглядна связь каналов и потоков.

Изменено пользователем Immortal_Buka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поскольку определены конфигурационные регистры для Stream, в которых нужно задать небходимый Channel, такой фокус представляется заманчиво возможным. Но интуиция подсказывает, что это не так.

Да нормально там всё, интуиция врёт.

Только проверьте, что DMA1 подключен к тем шинам, которые вам нужны. Потому что DMA2 подключен практически ко всему, а вот про DMA1 этого сказать нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да нормально там всё, интуиция врёт.

Только проверьте, что DMA1 подключен к тем шинам, которые вам нужны. Потому что DMA2 подключен практически ко всему, а вот про DMA1 этого сказать нельзя.

 

 

Чуть подробнее про "нормально там все" пжлст. Мой случай возможен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, возможен.

 

 

Поздравляю Вас, соврамши. Интуиция меня не подвела(лучше бы подвела) Два потока на один канал посадить нельзя.

В работе остается конфигурация выпоненная последней(сочетание Stream/Channel)

То есть запустить в режиме DMA более одного канала 32 битового таймера TIM5 или TIM2 невозможно. Жирный минус ST, увы.

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Жирный минус ST, увы.

Прямо всем всем контроллерам ST?

У 429-го вот на первый взгляд можно запускать по 4 канала каждого таймера. Они разнесены по разным потокам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прямо всем всем контроллерам ST?

У 429-го вот на первый взгляд можно запускать по 4 канала каждого таймера. Они разнесены по разным потокам.

 

 

Речь идет о контроллере обозначенном в заголовке топика. Но вообще тут тоже по разным ПОТОКАМ, но в одинаковых КАНАЛАХ. Гибкость DMA от ST сильно проигрывает NXP

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по разным ПОТОКАМ, но в одинаковых КАНАЛАХ.

Так один поток содержит 8 каналов. В разных потоках пусть и с одинаковым номером канала вполне дма будет работать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так один поток содержит 8 каналов. В разных потоках пусть и с одинаковым номером канала вполне дма будет работать.

DMA STM32F407

Ага, записать в один регистр (например DMA2_Stream0 -> CR) - два разных номера канала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так один поток содержит 8 каналов. В разных потоках пусть и с одинаковым номером канала вполне дма будет работать.

 

Это один канал МОЖЕТ иметь в качестве источника вызова ОДИН из восьми потоков. Хотя по принципу, по которому устроены регистры конфигурации, вполне возникает обратное впечатление. Но оно ложное. Проверено электроникой (с)

 

DMA STM32F407

Ага, записать в один регистр (например DMA2_Stream0 -> CR) - два разных номера канала.

Вообще то так оно и выглядит. Для кажого потока есть регистр CR, в каждом из которых можно задать одинаковый номер канала(речь только о чипах F4xx).Типа на один канал можно повесить до 8 потоков. Вот такая фегня от ST.

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот такая фегня от ST.

Неужели так сложно расставить запятые? смысл сообщения меняется - казнить нельзя миловать.

DMAx * DMAx_Stream * 8 = 16.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужели так сложно расставить запятые? смысл сообщения меняется - казнить нельзя миловать.

DMAx * DMAx_Stream * 8 = 16.

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

 

 

Насчет запятых принимается, хотя в данном случве смысл полюбому однозначен . Чтобы не паритЬся с кубиками, и не писать собственных библиотек использую ChibiOs и ее HAL. Но это, к сожалению, не избавляет меня от небходимости понимать что и как друг с другом завязано.

 

Поздравляю Вас, соврамши. Интуиция меня не подвела(лучше бы подвела) Два потока на один канал посадить нельзя.

В работе остается конфигурация выпоненная последней(сочетание Stream/Channel)

То есть запустить в режиме DMA более одного канала 32 битового таймера TIM5 или TIM2 невозможно. Жирный минус ST, увы.

 

Приношу свои самые глубокие, самые иcкренние извинения маэстро SciFi и глубокоуважаемой фирме STMicroelectronics. С утра, на свежую голову разобрался, нашел косяк в своем коде. Все действительно работает. Еще раз простите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Stream -- это поток. Channel -- это канал. Каждый поток настраивается независимо. Не знаю, как у F40x, а у ST32F429 в разных потоках можно использовать даже одно и то же событие для запуска транзакции (см. DMA2, Stream1:ch6, Stream3:ch6, Stream6:ch0 -- все они могут срабатывать по сигналу TIM1_CH1). Думаю, у F40x точно так же.

 

Илья

Изменено пользователем 501-q

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...