
最近在使用PWM+DMA的方式控制灯珠,一开始直接用MCU的输出引脚控制没有发现这个问题,因为起始信号都是低电平。后来使用了MOS管接到MCU的控制端,让MOS管来输出控制灯珠。这样一来所有的电平就必须反过来,灯珠的起始信号就由低变成了高。但在调试的过程中发现一个问题: 我的第一组数据明明发送了八个周期的PWM信号,但是示波器之抓到了7个,询问大佬才知道PWM的DMA第一个非全高或者全低的PWM周期会被溢出中断吞掉,属于是芯片的设计问题了。但是一般这种问题GD32的芯片才有,我得STM32F407不知道为啥也有。 |
STM32U3 IIC通信后,SPI+GPDMA 进入循环发送,DMA无法使能 寄存器USEF=1
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
STM32的TIM触发SPI的DMA发送使用NSS时MSSI的问题
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
HRTIM 变频控制输出的第一个周期频率异常
PWM+DMA求助
STM32H743使用EXIT0触发SPI的DMA发送数据
怎么在不用中断的情况下,测量霍尔编码器的数据
STM32F373 SDAC1+DMA,数据只能更新一次?
STM32G070RET6,中断优先级配置没有效果
PWM+DMA求助
那个帖子大佬指出选取更新点的重要性,因为DMA响应是要花一点时间的,所以更新点选取要考虑定时器速度是否匹配。 这也是为什么定时器会有预装载和更新事件的功能,就是为了准确脉宽调整用的。
通过DMA 实现PWM 的方式有很多经验,网站上也有实战经验分享可以参考。
注意下载下来才能看到全部内容,预览内存空间有限。
LAT0053 STM32L053可控PWM脉冲方法之DMA | STMCU中文官网
谢谢大佬指点!