реклама на сайте
подробности

 
 
> АЦП+ДМА. Куб
Ekka
сообщение Sep 29 2016, 08:36
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Снова привет всем. Засада с ДМА буфером, точнее с размерностью.
Настраиваем ДМА с АЦП через Куб.
На 4 канала.
В чем вопрос: в инете говорится, что запускать ДМА с АЦП надо примерно так:
Код
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)dmaBuf, (uint32_t)dmaBufSize*2);


Почему вдруг *2 ???
При таком запуске ДМА благополучно лезет в соседние массивы и пихает туда то, что забрал с АЦП.
Однако если запустить так:
Код
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)dmaBuf, (uint32_t)dmaBufSize);


заполняется либо полмассива, либо часть. В результате не могу нормально усреднить значения.
Может кто-то знает, в чем моя проблема?
Как надо правильно запускать ДМА? Или, может, у меня какая-то настройка отсутствует?
У меня уже глаз замылился с этим ДМА.

Настройка ДМА:
Код
  hdma_adc1.Instance = DMA1_Channel1;
    hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
    hdma_adc1.Init.Mode = DMA_CIRCULAR;
    hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
    if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
    {
      Error_Handler();
    }
    __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1);
  }
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01346 секунд с 7
ELECTRONIX ©2004-2016