找回密码
 立即注册
查看: 704|回复: 3

参考例程23.10.15,使用PWMA输出互补带死区PWM,但是示波器测量无死区时间

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-05-22 22:14:34

3

主题

10

回帖

71

积分

注册会员

积分
71
发表于 2024-8-18 20:20:14 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-8-18 22:43 编辑

参考例程23.10.15,修改PWMA输出互补带死区PWM,使用OC1和OC1N,但是示波器测量无死区时间,对比例程,没找到问题点,求助大神。使用芯片为8H1K08 TSSOP20封装。

  1. void PWM_init()
  2. {
  3.   //左右推挽MOS使用对称死区PWM驱动,使用PWMA的PWM1P和PWM1N
  4.   //预分频数等于PSCR值+1,
  5.   //边沿对齐模式PWM频率= 主频/((PSCR + 1)*(ARR + 1)) duty = CCR / (ARR + 1)  参考23.7.7 1128页 已验证
  6.   //中间对齐模式PWM频率= 主频/((PSCR + 1)*(ARR * 2)) duty = CCR / (ARR) 已验证
  7.    
  8.   P_SW2 |= 0x80;
  9.   PWMA_ENO = 0x03;        //输出通道使能 1P1N
  10.   PWMA_PS = 0x00;         //输出引脚选择切换
  11.   PWMA_PSCR = 1000;
  12.   //    PWMA_PSCRH = 0x10;      //预分频
  13.   //    PWMA_PSCRL = 0X00;
  14.   PWMA_DTR = 0x2F;        //死区时间
  15.    
  16.   //    PWMA_CCER1 = 0x00;      //关闭通道OCi,方便配置CCMR
  17.   PWMA_CCMR1 = 0x68;      //OC1选择在模式6(PWM模式1),并使能CRR预装载
  18.    
  19.   PWMA_ARR = 800;
  20.   //    PWMA_ARRH = 0x08;       //自动重装值,溢出值
  21.   //    PWMA_ARRL = 0X00;
  22.    
  23.   PWMA_CCR1 = 400;
  24.   //    PWMA_CCR1H = 0X04;      //比较值
  25.   //    PWMA_CCR1L = 0x00;
  26.    
  27.   PWMA_CCER1 = 0x05;      //打开通道OC1和OC1N,并配置极性,高电平有效
  28.    
  29.   PWMA_BKR = 0x80;        //主输出使能
  30.   PWMA_IER = 0x02;        //使能中断
  31.   PWMA_CR1 = 0x01;        //使能计时器   
  32. }
复制代码




例程23.10.15

例程23.10.15
微信图片_20240818210126.png
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-05-22 22:14:34

3

主题

10

回帖

71

积分

注册会员

积分
71
发表于 2024-8-18 22:00:00 | 显示全部楼层
本帖最后由 JISHUZHAI 于 2024-8-18 22:03 编辑

布丁橘长第49期。网上看了一个视频,找到问题了。主要原因在于死区时间的脉冲来源问题,脉冲来自预分频之前,而不是之后。
它山之石可以攻玉,其实STC8H的PWM和STM32的高级定时器一样,参考了好多相关内容理解。
C:\Users\Administrator\Desktop\微信图片_20240818215753.png
微信图片_20240818215753.png
微信图片_20240818215758.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-05-22 22:14:34

3

主题

10

回帖

71

积分

注册会员

积分
71
发表于 2024-8-19 09:54:36 | 显示全部楼层
wnag*** 发表于 2024-8-19 06:19
那和你代码有什么关系?

程序没问题,死区时间设置太小了,没观察出来。加大死区时间,观察就比较明显了

点评

死区一般是用于驱动MOSFET上下管才用到的,一般就是0.5~2us,示波器要用1us/DIV才能观察到明显的死区。MOSFET驱动需要的死区是固定的,跟PWM周期没有关系,所以死区时钟来自主频,二不是PWM时钟。  详情 回复 发表于 2024-8-19 16:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6094

回帖

1万

积分

超级版主

积分
12735
发表于 2024-8-19 16:07:03 | 显示全部楼层
JISHU*** 发表于 2024-8-19 09:54
程序没问题,死区时间设置太小了,没观察出来。加大死区时间,观察就比较明显了 ...

死区一般是用于驱动MOSFET上下管才用到的,一般就是0.5~2us,示波器要用1us/DIV才能观察到明显的死区。MOSFET驱动需要的死区是固定的,跟PWM周期没有关系,所以死区时钟来自主频,二不是PWM时钟。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-18 00:26 , Processed in 0.500614 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表