找回密码
 立即注册
楼主: 叶***

【疑难问题】不同批次的STC8G2K64S4芯片 PWM波形不连续

[复制链接]

该用户从未签到

46

主题

3053

回帖

6883

积分

超级版主

积分
6883
发表于 2024-4-3 09:19:20 | 显示全部楼层
叶凡 发表于 2024-4-3 08:38
梁工,您好:
    感谢您的回复,现在的问题有两个:
①从示波器角度看:示波器的采样参数是一致的扫描速 ...

不管是B版、C版,PWM是不会有问题的。
打开频率计看看频率跟你PWM频率是否一致。
也可以用固定的占空比测试一下,就是程序中先不要改变占空比,初始化后固定一个占空比,看看效果。
再次说明:PWM是硬件产生的,不会出现不连续的情况,如果确实出现,则一般是程序在对PWM进行开关控制(比如三相无刷电机驱动),我从未遇到、听说过硬件PWM会不连续。
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    难过
    2024-4-29 09:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    19

    回帖

    69

    积分

    注册会员

    积分
    69
     楼主| 发表于 2024-4-3 09:34:45 | 显示全部楼层
    梁工 发表于 2024-4-3 09:19
    不管是B版、C版,PWM是不会有问题的。
    打开频率计看看频率跟你PWM频率是否一致。
    也可以用固定的占空比测 ...

    梁工,您好:
        目前测试时是固定占空比,同一套程序同一版PCB烧录到不同批次的单片机就会出现这个问题,我可以把我这边的单片机寄过去给您验证

    点评

    第三次请求:打开示波器的频率计看看频率跟你PWM频率是否一致。  详情 回复 发表于 2024-4-3 10:11
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3053

    回帖

    6883

    积分

    超级版主

    积分
    6883
    发表于 2024-4-3 10:11:09 | 显示全部楼层
    叶凡 发表于 2024-4-3 09:34
    梁工,您好:
        目前测试时是固定占空比,同一套程序同一版PCB烧录到不同批次的单片机就会出现这个问题 ...

    第三次请求:打开示波器的频率计看看频率跟你PWM频率是否一致。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 23:21
  • 签到天数: 174 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1371

    积分

    荣誉版主

    积分
    1371
    发表于 2024-4-3 11:03:43 | 显示全部楼层
    用逻辑分析仪抓一下看看。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-29 09:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    19

    回帖

    69

    积分

    注册会员

    积分
    69
     楼主| 发表于 2024-4-3 11:48:05 | 显示全部楼层
    梁工 发表于 2024-4-3 10:11
    第三次请求:打开示波器的频率计看看频率跟你PWM频率是否一致。

    梁工,您好:
    示波器频率与我程序设定频率一致。
    正常批次波形

    正常

    正常

    异常批次波形单次触发抓拍

    异常1

    异常1

    异常2

    异常2

    逻辑分析仪抓取

    逻辑分析仪

    逻辑分析仪




    点评

    请告知单片机具体型号、那些脚输出PWM、PWM周期、PWM频率、主频时钟,我根据你的条件编写测试程序给你测试。  详情 回复 发表于 2024-4-3 12:10
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-29 09:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    19

    回帖

    69

    积分

    注册会员

    积分
    69
     楼主| 发表于 2024-4-3 11:49:19 | 显示全部楼层
    社区闲人 发表于 2024-4-3 11:03
    用逻辑分析仪抓一下看看。


    您好,见下图:
    异常波形和示波器测试结果一致
    截图202404031148317940.jpg
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3053

    回帖

    6883

    积分

    超级版主

    积分
    6883
    发表于 2024-4-3 12:10:46 | 显示全部楼层
    叶凡 发表于 2024-4-3 11:48
    梁工,您好:
    示波器频率与我程序设定频率一致。
    正常批次波形

    请告知单片机具体型号、那些脚输出PWM、PWM周期、PWM频率、主频时钟,我根据你的条件编写测试程序给你测试。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-29 09:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    19

    回帖

    69

    积分

    注册会员

    积分
    69
     楼主| 发表于 2024-4-3 13:49:43 | 显示全部楼层
    梁工 发表于 2024-4-3 12:10
    请告知单片机具体型号、那些脚输出PWM、PWM周期、PWM频率、主频时钟,我根据你的条件编写测试程序给你测 ...


    梁工,您好:

    出问题的单片机信息:
    单片机型号: STC8G2K64S4
    软件协议, V1.0: 7.3.12U
    主频:
      . 用户设定频率: 24.000MHz
      . 调节后的频率: 24.002MHz ( 主时钟分频系数 = 1; )
    PWM引脚:
    PWM00-07 PWM20-27 PWM40-47 共24个引脚
    PWM周期设置:
    0x1000

    PWM频率:
    理论值:2.928KHz
    示波器实测值:2.93KHz

    PWM初始化程序片段:

        PWM15_InitStructure.PWM_Enable = ENABLE;          // PWM使能,  ENABLE, DISABLE
        PWM15_InitStructure.PWM_Period = 0x1000;          // PWM周期,  0~0x7fff
        PWM15_InitStructure.PWM_Clock_Sel = PWMn_CLK_SYS; // 时钟源选择,  PWMn_CLK_SYS, PWMn_CLK_TM2
        PWM15_InitStructure.PWM_Clock_PS = 1;             // 系统时钟分频参数(PS+1分频),  0~15
        PWM15_InitStructure.PWM_Counter = ENABLE;         // 计数器使能,  ENABLE, DISABLE
        PWM15_Init(PWM2, &PWM15_InitStructure);
        PWM15Duty(PWM20, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM21, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM22, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM23, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM24, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM25, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM26, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM27, 0x000, 2450); // PWM_ID, 输出低电平位置, 输出高电平位置
        PWMChannelCtrl(PWM20, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM21, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM22, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM23, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM24, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM25, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM26, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM27, ENABLE, 0, DISABLE, DISABLE, DISABLE); // PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
    PWM初始化库版本:

    截图202404031343515697.jpg
    截图202404031344162599.jpg

    截图202404031344476019.jpg

    PWM测试截图:

    截图202404031347509639.jpg

    点评

    已经按您的技术参数编写了程序,主频24MHz,PWM时钟=主频/2,周期4096(0x1000),低电平时间2450个PWM时钟,高电平时间4096-2450=1646个PWM时钟,PWM频率2.93KHz。 请先别修改程序,直接下载PWM.hex测试。  详情 回复 发表于 2024-4-3 23:28
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 23:21
  • 签到天数: 174 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1371

    积分

    荣誉版主

    积分
    1371
    发表于 2024-4-3 15:04:25 | 显示全部楼层
    直接找STC原厂进货多好。找中间商,出问题就,,,,,,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-29 09:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    19

    回帖

    69

    积分

    注册会员

    积分
    69
     楼主| 发表于 2024-4-3 15:22:36 | 显示全部楼层
    社区闲人 发表于 2024-4-3 15:04
    直接找STC原厂进货多好。找中间商,出问题就,,,,,,

    这次领教了
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-21 06:35 , Processed in 0.086617 second(s), 72 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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