Добрый день! Создал проект в кубе, в котором хочу реализовать измерение АЦП в режиме Triple Mode по таймеру (триггеру) с DMA. Может кто-то работал с похожей задачей? Одиночный АЦП нормально работает по таймеру с DMA. Включение же АЦП в режиме Triple Mode с DMA с помощью функции
HAL_ADCEx_MultiModeStart_DMA не работает, не идёт запись по DMA данных в заданный массив из регистров АЦП (в регистрах АЦП (DR) значения есть) + АЦП срабатывают только один раз, далее не работают, но счётчик продолжает считать.
P.S. Я в этом деле человек относительно новый и хотел бы уточнить правильно ли я понимаю сам процесс работы такой связки АЦП + DMA + TIM, в данном случае это DMA контроллер срабатывает по триггеру с таймера (хотя он является триггером для АЦП?) и в свою очередь запускает АЦП или нет?
Спасибо за ответы!
Привожу скриншоты своего проекта в кубе + кусочек кода из main();
P.S.2
1 Прерывания АЦП и таймера выключены
2 В настройках АЦП2 куб почему то дублирует два ранга, всякие попытки изменить число каналов ни к чему ни привели, он всё равно дублирует два ранга, не знаю баг это или нет.







А так я запускаю АЦП в режиме Triiple Mode
Код
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
volatile uint16_t ADC_buffer[9];
/* USER CODE END PV */
HAL_TIM_Base_Start(&htim3);
HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)&ADC_buffer, 3);
Сообщение отредактировал Connor - Jan 3 2018, 07:12