我希望通过使用DMA功能来卸载我的STM32G491的CPU。我想使用定时器2(TIM2)生成需要DMA传输的四个时刻。在此过程中,我可以在一个周期内创建两个脉冲。通过使用定时器输出比较功能,可以调整周期、占空比和延迟。
我不知道如何将我的定时器连接起来,以启动从内存到DAC的数据传输。希望您能帮助我指出正确的方向。
我已经设置了我的定时器,使它们在定时器过期时发出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请求。 这样做可以创建一种类似于双相脉冲的信号,但仅适用于正面。可调参数为两个脉冲宽度、间隔时间和脉冲周期。请注意,负相位将是正相位,因此它将输出两个正脉冲。