打印
[APM32E1]

APM32 PWM输出技术解析&功能快速开发参考指南

[复制链接]
136|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
APM32 PWM输出技术解析&功能快速开发参考指南
1.1 定时器类型
- 高级定时器:TIM1TIM8
  - 可输出7PWM3对互补信号+1个独立通道)
  - 专为电机控制设计,支持死区插入和刹车功能
- 通用定时器:TIM2-TIM5
  - 每个定时器可输出4路独立PWM
- 基本定时器:TIM6TIM7
  - PWM输出功能
1.2 PWM输出总数
- 通用定时器:4个 × 4= 16
- 高级定时器:2个 × 7= 14
- 总计:30PWM输出
2. 时钟系统架构
2.1 定时器时钟源
定时器类型
挂接总线
最大总线频率
最终时钟频率
高级定时器
APB2
72MHz
72MHz
通用定时器
APB1
36MHz
72MHz
2.2 时钟路径说明
```
AHB (72MHz) APB1分频器(默认÷2) APB1时钟(36MHz) → 倍频器(×2) → 通用定时器时钟(72MHz)
```
- 关键特性:当APB1分频系数≠1时,自动启用×2倍频
- 系统初始化后默认配置:`SystemInit()`使所有定时器工作于72MHz
3. PWM频率与占空比控制
3.1 计算公式
1. 定时器工作频率:
   ```
   tim_frequency = 72MHz / (TIMx_PSC + 1)
   ```
   
2. PWM频率:
   ```
   pwm_frequency = tim_frequency / (TIMx_ARR + 1)
   ```
   
3. 占空比:
   ```
   duty_cycle = (TIMx_CCRx + 1) / (TIMx_ARR + 1) × 100%
   ```
3.2 关键寄存器
寄存器
功能描述
TIMx_PSC
预分频寄存器,设置时钟分频系数
TIMx_ARR
自动重装载值,决定PWM周期
TIMx_CCRx
捕获/比较值,决定PWM占空比
TIMx_CCMRx
输出模式配置
TIMx_CCER
捕获/比较使能寄存器
4. 高级定时器特殊功能
4.1 互补输出
- 可输出3对互补PWM信号(主输出+互补输出)
- 典型应用:三相电机驱动
4.2 死区插入
- 防止上下桥臂同时导通的保护机制
- 通过`TIMx_BDTR`寄存器配置死区时间
4.3 刹车功能
- 紧急情况快速关闭PWM输出
- 可通过硬件信号或软件触发
5. 配置步骤(库函数版)
5.1 通用定时器PWM配置流程
1. 使能定时器和GPIO时钟
2. 配置GPIO为复用推挽输出
3. 初始化定时器时基结构体
   - 设置PSCARR、计数模式等
4. 配置PWM模式
   - 设置OC模式、输出极性、使能状态等
5. 使能定时器和PWM输出
5.2 代码示例
```c
// 时基结构体初始化
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = arr;        // 自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler = psc;     // 预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0;   // 时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数
TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);
// PWM输出初始化
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  // PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = ccr;               // 比较值
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCxInit(TIMx, &TIM_OCInitStructure);
// 使能定时器
TIM_Cmd(TIMx, ENABLE);
// 使能PWM输出
TIM_CtrlPWMOutputs(TIMx, ENABLE);
```
6. 设计注意事项
1. 频率选择:
   - 电机控制:通常几kHz到几十kHz
   - LED调光:100Hz-1kHz即可
   - 音频应用:需考虑人耳可闻频率范围
2. 分辨率考虑:
   - ARR值越大,分辨率越高,但频率越低
   - 平衡公式:分辨率 = log(ARR+1)
3. 死区时间计算:
   - 取决于功率器件特性
   - 典型值:数百纳秒到几微秒
4. EMC优化:
   - 适当提高PWM频率可降低EMI
   - 但会增加开关损耗
本文档可作为APM32系列MCU PWM功能开发的快速参考指南,实际应用中需结合具体型号的参考手册进行详细配置。



使用特权

评论回复
沙发
寂静小夜曲| | 2025-7-6 00:13 | 只看该作者
这个PWM模式1 和 PWM模式2 在哪里有区别啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

153

帖子

1

粉丝