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

Stm32F407 SPI+DMA

Коллеги, приветствую. Столкнулся с таким явлением. Читаю АЦП при помощи DMA. Всё функции от HAL. Так вот, если выключаю прерывания и использую опрос, то по адресам 0х20000000..0х20000010 иногда появляются копии считанных байтов, причём хаотически в разных местах, но в пределах этих 16 байт. При включеном прерывании (имеется ввиду прерывание по данному каналу DMA) этот эффект уходит. Собственно говоря, вопрос-ответ что надо сделать, чтоб этого эффекта не было?

P. S. В проекте получается более 10 источников прерываний, поэтому хочу некоторые источники опрашивать

P. S. 2. Приём UART через DMA путём опроса работает корректно. Непонятно, в общем, что за петрушка

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


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

В 31.03.2023 в 22:10, romas2010 сказал:

Читаю АЦП при помощи DMA.

Один канал или несколько? Сколько?

В 31.03.2023 в 22:10, romas2010 сказал:

то по адресам 0х20000000..0х20000010

А что линкер разместил по этим адресам?

В 31.03.2023 в 22:10, romas2010 сказал:

копии считанных байтов

АЦП 12-битный. Вы в 8 битном режиме от него данные получаете?

В 31.03.2023 в 22:10, romas2010 сказал:

чтоб этого эффекта не было?

Без исходника ничего не понятно.

В 31.03.2023 в 22:10, romas2010 сказал:

P. S. В проекте получается более 10 источников прерываний, поэтому хочу некоторые источники опрашивать

Сомнительное решение.

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


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

2 часа назад, romas2010 сказал:

P. S. 2. Приём UART через DMA путём опроса работает корректно.

"Путём опроса" - что это означает? Что за путь такой? путь джедая - знаем, путь опроса - нет.  :mosking:

PS: С прерываниями - это у Вас что-то личное, да?   :secret:

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


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

Достаём хрустальный шар.

Приём UART через DMA путём опроса могу нафантазировать разными способами:

1. Опрашиваем в главном цикле флаг RXNE. Если он вскочил, то запускаем DMA на передачу данных из DR в память. Ждём окончания передачи опять же опросом флагов DMA. Выключаем DMA. 

2. Запускаем DMA на приём байта из DR. В основном цикле опрашиваем флаги DMA на предмет окончания приёма. Выключаем DMA.

3. Можно ещё извращённых методов придумать с опросом флагов UART через DMA... 

В сочетании с HAL на 2400-9600, пожалуй, взлетит. 🙂

Убираем хрустальный шар.

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


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

16 часов назад, romas2010 сказал:

что надо сделать, чтоб этого эффекта не было?

Не делать того, что к этому приводит 🙂

Если на адресах в начале SRAM, то значит где-то создан массив глобальной (или статической локальной) переменной, в которую кто-то/что-то помещает результаты измерений. В большинстве случаев именно так.
Вообще, надо всегда следить за тем, что/как ты пишешь и что/как/куда кладёшь...

Много задействованных источников прерываний - это не смертельно. Тут зависит от частоты их возникновения. Если сыплются все сразу и микроконтроллер не успевает их разруливать, тогда конечно много. В остальных случаях - не криминально. 

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

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


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

20 hours ago, romas2010 said:

Читаю АЦП при помощи DMA.

20 hours ago, romas2010 said:

если выключаю прерывания и использую опрос

А DMA-то вы отключаете при этом? Выключение прерываний никакого отношения к DMA не имеет. И опрос вручную регистра данных АЦП также не отключит DMA.

20 hours ago, romas2010 said:

по адресам 0х20000000..0х20000010

DMA ваш случайно не на эти ли адреса нацелен?

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


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

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

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

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

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

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

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

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

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

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