问题背景
客户需要 MCU 输出一组变频的 PWM 波形来控制外围器件,并且不同频率脉冲的个数也不同。STM32U5 芯片拥有 TIM1/TIM8 高级定时器,还有通用定时器TIM2/TIM3/TIM4/TIM5 以及 TIM15/TIM16/TIM17。TIM 模块中,可通过修改 ARR 寄存器的值来修改 PWM 的频率。如果使用 TIM1/TIM8 或者 TIM15/TIM16/TIM17,则可以通过修改 RCR 与 CCR 寄存器,来控制脉冲个数及占空比。由于要同时修改多个 TIM 寄存器,需要使用 TIM 的 DMA burst 功能来实现此需求。
2. TIM DMA burst
STM32 片内部分 TIMER 在产生单个定时器事件情况下可以基于特定硬件机制触发多个 DMA 请求,这样产生多个连续的 DMA 传输来实现对多个 TIMER 寄存器的批量访问。
这就是所谓的 TIM DMA burst 功能,这里有两个专用寄存器:
TIMx_DCR :
DBSS : 触发 DMA burst 的事件源
DBL : DMA burst 传输个数
DBA : DMA burst 传输的 TIM 寄存器基地址索引
TIMx_DMAR :
TIM DMA Burst 时,DMA 访问此寄存器
|