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

 
 
> из ADC в DAC
Lancelot
сообщение Mar 7 2018, 06:25
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 7-03-18
Пользователь №: 102 197



Здравствуйте! По ряду причин хочу реализовать фильтр Винера на F103ZE, с точки зрения реализации мне показалось не сложным (АЦП -> ПРЕОБРАЗОВАНИЕ -> ЦАП). Но проблема возникла уже в самом начале не могу вывести входной массив из АЦП в ЦАП (т.е. подать на АЦП какой либо периодический сигнал и снять его с ЦАП). Как я наивно полагал хватит такого кода:

Код
HAL_TIM_Base_Start_IT(&htim6);
uint16_t ADC_BUF[64];

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &ADC_BUF,64);
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1,(uint32_t*)ADC_BUF,64, DAC_ALIGN_12B_R);
}

Но чего-то вразумительного с ЦАП вывести не удалось. Прошу помощи в этой задаче, готов заплатить за подробную консультацию.

Сообщение отредактировал IgorKossak - Mar 7 2018, 08:56
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Mar 7 2018, 10:01
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Lancelot @ Mar 7 2018, 09:25) *
с точки зрения реализации мне показалось не сложным (АЦП -> ПРЕОБРАЗОВАНИЕ -> ЦАП).

Нужно засинхронизировать входной и выходной потоки. Я делал по таймеру. Правда для F407.
Настраиваем TIM1CH1 и TIM4CH1 на генерацию нужной Fд.
Настраиваем ADC1 на запуск по внешнему событию TIM1CH1.
Настраиваем DMA2Stream0 на кольцевой буфер АЦП, куда по запросам от ADC1 будем складывать данные.
Настраиваем DMA1Stream0 на кольцевой буфер ЦАП, откуда по запросам от TIM4CH1 будем копировать данные в DAC.
В обработчике прерывания от DMA2Stream0 обрабатываем полу-кольцо от АЦП и заполняем полу-кольцо для ЦАП.
Уверен, что-то подобное можно сделать и в F103.

Цитата(megajohn @ Mar 7 2018, 12:53) *

У ТС F103, а примеры
Цитата
for STM32L4 Series and STM32L4+ Series
Go to the top of the page
 
+Quote Post
Lancelot
сообщение Mar 7 2018, 10:27
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 7-03-18
Пользователь №: 102 197



Цитата(adnega @ Mar 7 2018, 10:01) *
Нужно засинхронизировать входной и выходной потоки. Я делал по таймеру. Правда для F407.
Настраиваем TIM1CH1 и TIM4CH1 на генерацию нужной Fд.
Настраиваем ADC1 на запуск по внешнему событию TIM1CH1.
Настраиваем DMA2Stream0 на кольцевой буфер АЦП, куда по запросам от ADC1 будем складывать данные.
Настраиваем DMA1Stream0 на кольцевой буфер ЦАП, откуда по запросам от TIM4CH1 будем копировать данные в DAC.
В обработчике прерывания от DMA2Stream0 обрабатываем полу-кольцо от АЦП и заполняем полу-кольцо для ЦАП.
Уверен, что-то подобное можно сделать и в F103.


У ТС F103, а примеры


"Настраиваем TIM1CH1 и TIM4CH1 на генерацию нужной Fд." Подойдут ли более простые таймеры TIM6 и TIM7 ?
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 7 2018, 13:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Lancelot @ Mar 7 2018, 13:27) *
"Настраиваем TIM1CH1 и TIM4CH1 на генерацию нужной Fд." Подойдут ли более простые таймеры TIM6 и TIM7 ?

Один должен уметь быть внешним запуском для ADC, а второй - событием для DMA.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 00:37
Рейтинг@Mail.ru


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