nanorobot 2 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Из описания регистров DMA STM32F407 можно предположить что для двух рвзных потоков можно назначить один и тот же канал( мне требуется одновременная работа DMA для TIM5_CH1 и TIM5_CH2 - то есть сочетание Stream2/DMA1_Channel6 и Stream4/DMA1_Channel6. Поскольку определены конфигурационные регистры для Stream, в которых нужно задать небходимый Channel, такой фокус представляется заманчиво возможным. Но интуиция подсказывает, что это не так. Или в 407 есть нечто инновационное с ДМА, по сравнению с младшими семействами? В RM0090 не обнаружил упоминаний о том, что в двух разных DMA_SxCR можно/нельзя указать одинаковый номер канала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Immortal_Buka 0 22 марта, 2016 Опубликовано 22 марта, 2016 (изменено) · Жалоба в RM на стр 306, рисунок 32. Очень наглядна связь каналов и потоков. Изменено 22 марта, 2016 пользователем Immortal_Buka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Поскольку определены конфигурационные регистры для Stream, в которых нужно задать небходимый Channel, такой фокус представляется заманчиво возможным. Но интуиция подсказывает, что это не так. Да нормально там всё, интуиция врёт. Только проверьте, что DMA1 подключен к тем шинам, которые вам нужны. Потому что DMA2 подключен практически ко всему, а вот про DMA1 этого сказать нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 2 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Да нормально там всё, интуиция врёт. Только проверьте, что DMA1 подключен к тем шинам, которые вам нужны. Потому что DMA2 подключен практически ко всему, а вот про DMA1 этого сказать нельзя. Чуть подробнее про "нормально там все" пжлст. Мой случай возможен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Чуть подробнее про "нормально там все" пжлст. Мой случай возможен? Да, возможен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 2 22 марта, 2016 Опубликовано 22 марта, 2016 (изменено) · Жалоба Да, возможен. Поздравляю Вас, соврамши. Интуиция меня не подвела(лучше бы подвела) Два потока на один канал посадить нельзя. В работе остается конфигурация выпоненная последней(сочетание Stream/Channel) То есть запустить в режиме DMA более одного канала 32 битового таймера TIM5 или TIM2 невозможно. Жирный минус ST, увы. Изменено 22 марта, 2016 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpyBot 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Жирный минус ST, увы. Прямо всем всем контроллерам ST? У 429-го вот на первый взгляд можно запускать по 4 канала каждого таймера. Они разнесены по разным потокам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 2 22 марта, 2016 Опубликовано 22 марта, 2016 (изменено) · Жалоба Прямо всем всем контроллерам ST? У 429-го вот на первый взгляд можно запускать по 4 канала каждого таймера. Они разнесены по разным потокам. Речь идет о контроллере обозначенном в заголовке топика. Но вообще тут тоже по разным ПОТОКАМ, но в одинаковых КАНАЛАХ. Гибкость DMA от ST сильно проигрывает NXP Изменено 23 марта, 2016 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpyBot 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба по разным ПОТОКАМ, но в одинаковых КАНАЛАХ. Так один поток содержит 8 каналов. В разных потоках пусть и с одинаковым номером канала вполне дма будет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба Так один поток содержит 8 каналов. В разных потоках пусть и с одинаковым номером канала вполне дма будет работать. DMA STM32F407 Ага, записать в один регистр (например DMA2_Stream0 -> CR) - два разных номера канала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 2 23 марта, 2016 Опубликовано 23 марта, 2016 (изменено) · Жалоба Так один поток содержит 8 каналов. В разных потоках пусть и с одинаковым номером канала вполне дма будет работать. Это один канал МОЖЕТ иметь в качестве источника вызова ОДИН из восьми потоков. Хотя по принципу, по которому устроены регистры конфигурации, вполне возникает обратное впечатление. Но оно ложное. Проверено электроникой (с) DMA STM32F407 Ага, записать в один регистр (например DMA2_Stream0 -> CR) - два разных номера канала. Вообще то так оно и выглядит. Для кажого потока есть регистр CR, в каждом из которых можно задать одинаковый номер канала(речь только о чипах F4xx).Типа на один канал можно повесить до 8 потоков. Вот такая фегня от ST. Изменено 23 марта, 2016 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба Вот такая фегня от ST. Неужели так сложно расставить запятые? смысл сообщения меняется - казнить нельзя миловать. DMAx * DMAx_Stream * 8 = 16. И для таких случаев проще написать собственную библиотеку дма один раз, и больше не парится с кубиками и разными чипами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 2 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба Неужели так сложно расставить запятые? смысл сообщения меняется - казнить нельзя миловать. DMAx * DMAx_Stream * 8 = 16. И для таких случаев проще написать собственную библиотеку дма один раз, и больше не парится с кубиками и разными чипами. Насчет запятых принимается, хотя в данном случве смысл полюбому однозначен . Чтобы не паритЬся с кубиками, и не писать собственных библиотек использую ChibiOs и ее HAL. Но это, к сожалению, не избавляет меня от небходимости понимать что и как друг с другом завязано. Поздравляю Вас, соврамши. Интуиция меня не подвела(лучше бы подвела) Два потока на один канал посадить нельзя. В работе остается конфигурация выпоненная последней(сочетание Stream/Channel) То есть запустить в режиме DMA более одного канала 32 битового таймера TIM5 или TIM2 невозможно. Жирный минус ST, увы. Приношу свои самые глубокие, самые иcкренние извинения маэстро SciFi и глубокоуважаемой фирме STMicroelectronics. С утра, на свежую голову разобрался, нашел косяк в своем коде. Все действительно работает. Еще раз простите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
501-й 0 23 марта, 2016 Опубликовано 23 марта, 2016 (изменено) · Жалоба Stream -- это поток. Channel -- это канал. Каждый поток настраивается независимо. Не знаю, как у F40x, а у ST32F429 в разных потоках можно использовать даже одно и то же событие для запуска транзакции (см. DMA2, Stream1:ch6, Stream3:ch6, Stream6:ch0 -- все они могут срабатывать по сигналу TIM1_CH1). Думаю, у F40x точно так же. Илья Изменено 23 марта, 2016 пользователем 501-q Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться