Arlleex 190 8 сентября, 2023 Опубликовано 8 сентября, 2023 · Жалоба Ну, видимо, в других МК очередность доступа шинных мастеров не тупо карусельная (как в STM32), а весьма сложная и с приоритетами и т.д., что и выливается в доп. управление возможностью прерываний пакетных транзакций. А вообще говоря, "отменяемые" burst-ы, например, при доступе к регистрам периферии, весьма опасны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 8 сентября, 2023 Опубликовано 8 сентября, 2023 · Жалоба 12 минут назад, Arlleex сказал: А вообще говоря, "отменяемые" burst-ы, например, при доступе к регистрам периферии, весьма опасны. Ну вот - для того lock и добавили. Чтобы поставить его, если имеется опасность. И почему Вы думаете, что в STM32 burst-ы DMA не могут прерываться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 8 сентября, 2023 Опубликовано 8 сентября, 2023 · Жалоба 1 час назад, jcxz сказал: И почему Вы думаете, что в STM32 burst-ы DMA не могут прерываться? Как минимум там тривиальный карусельный арбитр, нет настроек приоритетов мастеров да и вообще, за то время что имел с ними дело, на глаза попадались всякие ст-шные официальные документы, в которых обозначено, что уже действующего мастера никто перебить или отменить не может Цитата To ensure data coherence, each group of transfers that form a burst is indivisible: AHB transfers are locked and the arbiter of the AHB bus matrix does not remove the DMA master’s access rights during the burst transfer sequence. То же самое и с другими мастерами - например, CPU при сохранении контекста прерывания тоже burst-ит доступ к шине памяти, и прерывание будет задержано до тех пор, пока шина не освободится... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RR2021 1 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба В 08.09.2023 в 16:19, Arlleex сказал: Это да. Но ТС как раз имел в виду общий случай, когда DMA просто заполняет (возможно по кругу) некий кусок памяти, а пользовательский код периодически считывает этот буфер с отсчетами, ничего не зная о готовности этих данных ДА именно это я и имел ввиду, я пока не настолько хорошо разбираюсь в потрахах контроллера , но если я правильно понял то такая логика работы прокатит в моём случае правильно ? потому что шина не даст мне что-то считать, если туда записывает DMA ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 1 минуту назад, RR2021 сказал: но если я правильно понял то такая логика работы прокатит в моём случае правильно ? Да, если код настройки DMA тот же, что в первом посте этой темы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RR2021 1 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 12 минут назад, Arlleex сказал: Да, если код настройки DMA тот же, что в первом посте этой темы. я правильно понимаю что вот эти две строчки должны быть как в первом посте ? просто мне ещё один канал АЦП и DMA надо по похожей схеме настроить, поэтому хотелось бы знать, что конкретно должно быть как в первом посте dma_init_ADC0.memory_width = DMA_MEMORY_WIDTH_32BIT; dma_init_ADC0.periph_width = DMA_PERIPHERAL_WIDTH_32BIT; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба Да, эти строчки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RR2021 1 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба Только что, Arlleex сказал: Да, эти строчки. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться