|
Сброс DMA1 и последующая настройка в STM32 |
|
|
|
Sep 14 2014, 10:37
|
Частый гость
 
Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318

|
Приветствую. Опытным путём было установлено, что если сбросить DMA1 таким кодом Код RCC->AHBRSTR |= RCC_AHBRSTR_DMA1RST; RCC->AHBRSTR &= ~RCC_AHBRSTR_DMA1RST; и сразу после этого немедленно начать настраивать канал DMA, то DMA не будет работать. Если же после сброса поставить небольшую задержку (сейчас у меня стоит 10 микросекунд), то всё работает. Кто-нибудь сталкивался с таким поведением? Как правильно проверять, что канал DMA уже можно настраивать после сброса DMA? PS: камень STM32L151CBT6
--------------------
|
|
|
|
|
 |
Ответов
|
Sep 14 2014, 13:13
|
Частый гость
 
Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318

|
Работает, однако! Спасибо Добавил __DSB() в свою либу Хм. Почему-то этого __DSB в SPL не наблюдается... И задержек тоже там нету. Если откомпилировать проект, использующий SPL, с крутыми настройками оптимизации (O3 + LTO), то возможно он перестанет работать.
--------------------
|
|
|
|
|
Sep 14 2014, 13:16
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(ArtDenis @ Sep 14 2014, 17:13)  Работает, однако! Спасибо Добавил __DSB() в свою либу Хм. Почему-то этого __DSB в SPL не наблюдается... И задержек тоже там нету. Если откомпилировать проект, использующий SPL, с крутыми настройками оптимизации (O3 + LTO), то возможно он перестанет работать. Барьеры скорее всего нужны для многопроцессорных систем. Вы просто __NOP() не пробовали? Эти функции определены в core_cmInstr.h
|
|
|
|
|
Sep 14 2014, 13:19
|
Частый гость
 
Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318

|
Цитата(adnega @ Sep 14 2014, 19:16)  Барьеры скорее всего нужны для многопроцессорных систем. Вы просто __NOP() не пробовали? Так после сброса устройства нужен __DSB() или нет? Может как-то флаг где-нибудь надо смотреть? __NOP() не пробовал.
--------------------
|
|
|
|
Сообщений в этой теме
ArtDenis Сброс DMA1 и последующая настройка в STM32 Sep 14 2014, 10:37 adnega Цитата(ArtDenis @ Sep 14 2014, 14:37) При... Sep 14 2014, 10:49 ArtDenis Цитата(adnega @ Sep 14 2014, 16:49) Лучше... Sep 14 2014, 11:10  adnega Цитата(ArtDenis @ Sep 14 2014, 15:10) А м... Sep 14 2014, 12:57     adnega Цитата(ArtDenis @ Sep 14 2014, 18:02) Т.е... Sep 14 2014, 14:19      adnega Цитата(jcxz @ Sep 14 2014, 18:21) Могу пр... Sep 14 2014, 14:38 ArtDenis Тут мне сообщили что вариант с __DSB() правильный.... Sep 15 2014, 04:04 jcxz Цитата(ArtDenis @ Sep 15 2014, 10:04) Тут... Sep 15 2014, 10:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|