Я хочу разгрузить ЦП моего STM32G491 с помощью функции DMA. Я хочу использовать таймер 2 (TIM2) для генерации четырех моментов, когда требуется передача DMA. При этом я могу создать два импульса за один период. Период, рабочий цикл и задержка регулируются с помощью функций сравнения выходов таймера.
int amplitude = 0xFFF;
uint16_t current[] = {0, amplitude, 0, amplitude};
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t*) ¤t[0], sizeof(uint16_t), DAC_ALIGN_12B_R);
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t*) ¤t[1], sizeof(uint16_t), DAC_ALIGN_12B_R);
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t*) ¤t[2], sizeof(uint16_t), DAC_ALIGN_12B_R);
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t*) ¤t[3], sizeof(uint16_t), DAC_ALIGN_12B_R);
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_OC_Start_IT(&htim2, TIM_CHANNEL_1);
HAL_TIM_OC_Start_IT(&htim2, TIM_CHANNEL_2);
HAL_TIM_OC_Start_IT(&htim2, TIM_CHANNEL_3);
Я не знаю, как подключить свои таймеры, чтобы инициировать передачу данных из памяти в ЦАП. Надеюсь, вы поможете мне указать правильное направление.
Я настроил свои таймеры так, чтобы они отправляли запрос DMA, когда время таймера истекло.
При этом я могу создать своего рода двухфазный импульс, но только с положительной стороны. Регулируемые параметры - это две ширины импульса, межфазный интервал и период этого импульса. Обратите внимание, что отрицательная фаза будет положительной, поэтому будет выдаваться два положительных импульса.