STM32 死区时间

一、基本概念与作用

在电机驱动(如三相逆变器)、开关电源(如半桥/全桥拓扑)等需要上下桥臂互补导通的电路中,功率器件(MOSFET/IGBT)存在开关延迟。若一个桥臂的器件关断时,另一桥臂的器件立即导通,可能导致二者同时导通(称为"直通/Shoot-Through"),引发大电流而损坏器件或电源。

**死区时间:**一个桥臂的器件完全关断后,另一桥臂的器件延迟导通的这段时间。其实质是为功率器件的开关延迟提供缓冲,从而避免直通现象。

二、STM32中支持死区时间的模块

在STM32中,仅高级定时器支持互补PWM输出与可编程死区时间。通用定时器无互补输出功能,因此无法进行死区控制。

高级定时器的互补输出通道成对出现(如CH1与CH1N、CH2与CH2N、CH3与CH3N),并通过专用寄存器配置死区时间,确保互补通道的导通与关断时序之间严格插入死区。

三、死区时间配置寄存器:BDTR

死区时间配置集中在高级定时器的BDTR寄存器(Break and Dead-Time Register) 中,其核心控制位为DTG7:0(Dead-Time Generator) 。此外,需配合MOE位(主输出使能) 来使能互补输出。
DTG7:0 死区时间配置位(低7位DT6:0+ 最高位DTP7,用于扩展死区范围)
MOE: 主输出使能位(必须置1,否则互补输出被禁止)
**BKE/BKP:**刹车功能使能/极性(与死区功能独立,但共用该寄存器)

四、死区时间的计算方法

死区时间由DTG7:0的值 与**定时器的内部时钟(Tck_int)**共同决定。不同STM32系列的计算规则略有差异,以下以STM32F1为例:

1. 定时器内部时钟(Tck_int)的确定

STM32定时器时钟遵循以下规则:

复制代码
若APB预分频系数 = 1 → Tck_int = APBx时钟;
若APB预分频系数 > 1 → Tck_int = 2 × APBx时钟。

2. DTG位的分段计算规则

DTG7:0可分为最高位DTP(即DTG7)和低7位DT(DTG6:0),计算规则如下:

复制代码
当 DTP = 0(DTG[7] = 0):死区时间 = DT[6:0] × Tck;
当 DTP = 1(DTG[7] = 1):死区时间 = DT[6:0] × 16 × Tck。

五、STM32死区时间的配置步骤

以TIM1输出互补PWM为例,配置流程如下:

1. 初始化定时器基础参数

配置定时器时钟(如TIM1挂载在APB2上,需使能对应时钟);

设置ARR(自动重装值)与PSC(预分频系数),确定PWM频率;

配置PWM模式(如PWM1/PWM2),并通过CCR(捕获比较值)设定占空比。

2. 配置互补输出与死区

使能互补输出;

配置BDTR寄存器:根据目标死区时间设置DTG7:0,并置位MOE。

3. 使能定时器与输出

使能定时器(将TIM_CR1的CEN位置1);

使能通道输出(将TIM_CCER的CC1E置位,使能CH1)。

六、实际应用注意事项

1. 死区时间的取值平衡

过短: 无法覆盖功率器件的开关延迟,仍可能出现直通;
**过长:**导致PWM波形失真(有效占空比范围缩小)、电机转矩脉动增大或电源效率降低。

2. 匹配功率器件特性

MOSFET开关速度快(纳秒级),死区时间通常设为几百纳秒;

IGBT开关速度较慢(微秒级),死区时间需设为几微秒。

3. 温度与电压的影响

功率器件的开关延迟会随温度升高、电压降低而增加,因此需预留一定的死区余量。部分STM32系列支持自适应死区,可通过硬件或软件动态调整。

4. MOE位的关键作用

高级定时器的互补输出必须置位MOE,否则输出将被强制拉低,死区配置也将无效。

七、死区时间对PWM波形的影响

插入死区时间会导致:

输出PWM的有效占空比降低(在低占空比时尤为明显);

输出电压/电流的谐波含量增加;

在电机驱动中,可能引起低速抖动(死区过大时)。

相关推荐
虎王物联6 小时前
STM32 HAL库串口DMA空闲中断:高效接收不定长Modbus数据帧
stm32·单片机·嵌入式硬件·dma·modbus
SUNNYSPY0017 小时前
AO4402-ASEMI便携设备电源开关AO4402
单片机
单片机仿真设计9 小时前
【proteus仿真】基于 STC89C52 单片机家用智能台灯设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
2601_950790689 小时前
深圳国产单片机厂商怎么选?技术能力与服务能力检查表
单片机·嵌入式硬件·国产mcu·芯片厂商·深圳单片机·单片机选型
hongmai66688811 小时前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
笨笨饿12 小时前
#135_代码中的类型重定义艺术:从基础封装到函数类型设计
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
西城微科方案开发12 小时前
高精度低功耗胎压计方案——气压表解决方案
单片机·嵌入式硬件
LavaLin0113 小时前
STM32H562RGT6 与 STM32F722RET6 规格对比
stm32
佳児素花痴╮14 小时前
STM32U575RIT6(USART)学习
stm32·嵌入式硬件·学习
小+不通文墨15 小时前
使用vscode里的U8G2 库编写OLED菜单控制
经验分享·笔记·单片机·嵌入式硬件·学习