【发布时间】:2021-08-17 14:34:39
【问题描述】:
我想通过使用 DMA 功能来卸载我的 STM32G491 的 CPU。 我想使用定时器 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);
我不知道如何连接我的计时器来启动从内存到 DAC 的数据传输。我希望你能帮助我以正确的方式给我一个方向。
我已经设置了我的定时器,以便它们在定时器到期时发出 DMA 请求。
这样做时,我可以创建一种双相脉冲,但仅限于积极的一面。可调整的参数是两个脉冲宽度、相间间隔和这个脉冲的周期。注意负相为正,所以会输出两个正脉冲。
【问题讨论】:
-
您似乎正在尝试生成某种方波,对吗?这个信号有什么要求?你想调整哪些参数?