请教PWM的问题,

image.png


请问大神们,目前我想用PWM功能,我看咱们定时器设定这个PWM时序功能时,我是不是R32_TMRx_COUNT计数器需要设置上计数次数,然后配合R32_TMRx_CNT_END,R32_TMRx_FIFO才能输出准确定的占空比?还是只需要设置R32_TMRx_FIFO/R32_TMRx_FIFO的比值就是每个周期的占空比?如果要是模拟DAC输出的话需不需要用到DMA功能?

您好,程序中配置的比较/捕获寄存器的值比上重装载寄存器的值,就是占空比。TIM初始化完成之后,可通过直接调用TIM_SetComparex函数设置占空比。是否使用DMA,这个都行,具体根据你的需求来,若你传输数据较多,对速度也有要求,可以用占空比。


你好,可参考我司任意一款芯片TIM-PWMOUT例程/downloads/CH32V307EVT_ZIP.html,定时器的PWM模式的占空比是通过设置比较捕获寄存器的值来实现的,这个值比上你设置的定时器重装载值即为PWM的占空比。用DAC输出没太明白您的意思,是指用DAC输出PWM吗,这个肯定是用定时器更加便捷,建议用定时器。当然如果想用DAC输出波形用DMA肯定效率更高。



两位工程师您好,是这样的,我想用PWM模拟DAC功能,我想问问我是不是必须要用到MDA寄存器,如果不用可不可以?


你好,我大致明白您意思了,应该是想输出一段不同占空比的PWM吧,即SPWM波形,这个不用DMA可以的,一个定时器周期进一次中断把比较捕获寄存器的值改成你项目所需求的即可。


只有登录才能回复,可以选择微信账号登录