打印
[开发工具]

N32G030 PWM

[复制链接]
74|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bestwell|  楼主 | 2025-6-18 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
搞电机应用或者电源应用的小伙伴基本都脱离不了半桥、全桥,
常见的半桥电路如下,由两个 MOS 组成,Q1 的 D极连接了 VBUS ,S 极连接了Q2的 D 极,Q2 S 极连接到 GND ,中间 SW 引脚则接去电机或者电感。
MOS 是一个开关,由 GS 电压控制开关和导通,由于 MOS 开关的电压比较高,大部分的 MCU 引脚耐受电压是 3.3V ,高一点的也只能 5V ,所以不能直接连接,这时候就需要一个 Gate Driver 来控制控制这种半桥电路,如下图,纳芯微 NSI6602 控制电路图:

MCU 使用 PWM 来给到 Gate Driver 的输入 INA INB,其输出 OUTA OUTB 的电压就会满足 MOS 导通的电压,但是需要注意的是,PWM 也不是随意给的,可以看到半桥电路的两个 MOS ,如果两个同时打开, VBUS 直接连通到 GND ,这样造成电源短路是很危险的,所以需要避免这种情况,INA 高电平 INB 就需要低电平,反之亦然,这种 PWM 称为互补 PWM ,如下图:

这时候问题又来了,MOS 管并不是理想的开关,它开关是需要时间的,参考华润微电子的 MOS 参数:
开启关闭的延时时间,以及高低电平的 rise time 和 fall time,这些都是要考虑的,那么这就要求互补 PWM 中需要插入一些时间来保证开关,比如 Q1 需要关闭,Q2 打开,Q1 关闭至少需要 110+126us的时间,通常都会预留多一点时间,这里使用500us ,那么 Q2 至少需要 500us 后才能打开,如果提前打开则会短路损坏电路,这种延时时间成为死区时间,如果手动去控制这些时间则会变得很麻烦,所以需要看 MCU 有没有带死区控制的 PWM 功能,我们这里使用的是 Nation N32G455REL7 ,它的高级定时器 TIM1 & TIM8 是可以输出带死区时间的 PWM 的,接下来就以 7PWM_OUTPUT 例程来介绍如何进行配置。
(1)打开例程,这里配置了多路的互补 PWM ,我们只需要用到其中一路,这里选择TIM1 Channel1
(2)在初始化函数 TIM_InitOc1 之后,加入以下代码,即配置死区时间部分,




死区时间计算公式在 TIMx_BKDT 寄存器中有描述,这里简单介绍一下:

这里的 TDTS 是 TIMx_CTRL1 中来的:
我们这里 CLKD = 0x00, TIM1 的时钟频率为主频 144MHz,所以 TDTS = 1/144MHz,
如我们代码中配置的 DTGN[7:0] = 0x4A ,那么死区时间
Tdt = 0x4A * (1/144MHz ) = 74 * 6.944ns = 513.856ns
将代码下载抓取波形,可以看到死区时间为 514ns ,说明配置成功:

互补 PWM



死区时间




使用特权

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

本版积分规则

54

主题

1860

帖子

2

粉丝