查看: 3174|回复: 8

[求助] KL26的PWM输出频率不对

[复制链接]

该用户从未签到

20

主题

102

帖子

0

中级会员

Rank: 3Rank: 3

积分
379
最后登录
1970-1-1
发表于 2016-4-1 14:46:15 | 显示全部楼层 |阅读模式
本帖最后由 北极星-38637 于 2016-4-1 14:47 编辑

想用KL26的TPM输出频率1000Hz,占空比50%的方波。我使用32.768KHz晶振,给TPM用FLL时钟。系统CORECLK是24MHz正常的。FLLCLK也是24MHz的。
       /*  MCG初始化函数里 */
        MCG_C4 = (0 | MCG_C4_DMX32_MASK
       | MCG_C4_DRST_DRS(0));  // MCG_C4 = 0x80, 32768 *732= 24MHz

    /********************TPM 配置时钟和分频 ********************/        
    SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);      //00-Clock disabled ,01-MCGFLLCLK clock, or MCGPLLCLK/2 ,10-OSCERCLK clock ,11-MCGIRCLK clock
        SIM_SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK;
    TPM_SC_REG(TPM1]) = ( 0
                              //| TPM_SC_CPWMS_MASK         //0:上升沿计数模式 ,1: 跳变沿计数模式选择 (注释了表示 0)
                              | TPM_SC_PS(0)             //分频因子,分频系数 = 2^PS
                                  | TPM_SC_CMOD(1)
                                      );

    TPM1_MOD  = 24000;                        //模数, EPWM的周期为 :MOD - CNTIN + 0x0001
    TPM_CnV_REG(TPM1, chn) = 12000;
    TPM_CNT_REG(TPM1)  = 0;                          //计数器。只有低16位可用(写任何值到此寄存器,都会清0)



实测得到的频率只有15.6Hz,是哪里出问题了。
另外,看到例程LQRUG_tpm_ex1里,用了TPM0的中断去清溢出标志,是必须的吗?

我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24883
最后登录
2025-7-20
发表于 2016-4-1 16:14:55 | 显示全部楼层
实际测试15.6HZ,是否是你示波器没有调好呢?
时间轴放大些再测试试,有些示波器时间调整不好,会抓取轮廓的。
TPM不需要每次都用中断取清标志,因为MOD到的时候,会自动更新的,清除标志只不过是清楚相应的溢出标志,没有关系的。
另外,你通道模式选择的是什么模式? TPM_CnSC寄存器,如果不配置,默认TPM通道是关闭的。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-4-2 08:59:55 | 显示全部楼层
    你好,我没有采用寄存器方法。直接调用MKL_TPM.c的函数,目前已经实验了2个TPM通道,频率分别为334、174,3路独立的PWM,自定义的周期分别为14000、14000、28000;前者为测试舵机,后者为测试电机——为了响应速度更快,后者可以将频率提高到1KHz或更高。你采用函数吧,简单实用。寄存器方法,上个月站友提供了一个PDF,但上边的寄存器名称与BSP中的不同,一运行就报错,看源文档太费时间了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2016-4-5 08:55:49 | 显示全部楼层
    每次看源文档,都是一头雾水啊,怎么都看不明白。一个功能涉及到多处。
    Kinetis的MCU功能强大,配置丰富。缺点是,例程总是不全的,不常用的配置方法,从不提供。
    例如,我用32.768的外部晶振,就费了不少功夫。
    希望能加强技术支持的力度。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2016-4-5 08:56:07 | 显示全部楼层
    本帖最后由 北极星-38637 于 2016-4-5 08:57 编辑
    zhjb1 发表于 2016-4-2 08:59
    你好,我没有采用寄存器方法。直接调用MKL_TPM.c的函数,目前已经实验了2个TPM通道,频率分别为334、174,3 ...

    每次看源文档,都是一头雾水啊,怎么都看不明白。一个功能涉及到多处。
    Kinetis的MCU功能强大,配置丰富。缺点是,例程总是不全的,不常用的配置方法,从不提供。技术是先进的,易用性还需提高。
    例如,我用32.768的外部晶振,就费了不少功夫。
    希望能加强技术支持的力度。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2016-4-5 08:56:09 | 显示全部楼层
    zhjb1 发表于 2016-4-2 08:59
    你好,我没有采用寄存器方法。直接调用MKL_TPM.c的函数,目前已经实验了2个TPM通道,频率分别为334、174,3 ...

    每次看源文档,都是一头雾水啊,怎么都看不明白。一个功能涉及到多处。
    Kinetis的MCU功能强大,配置丰富。缺点是,例程总是不全的,不常用的配置方法,从不提供。
    例如,我用32.768的外部晶振,就费了不少功夫。
    希望能加强技术支持的力度。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2016-4-5 08:58:50 | 显示全部楼层
    小恩GG 发表于 2016-4-1 16:14
    实际测试15.6HZ,是否是你示波器没有调好呢?
    时间轴放大些再测试试,有些示波器时间调整不好,会抓取轮廓 ...

    谢谢,我查一下看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    379
    最后登录
    1970-1-1
     楼主| 发表于 2016-4-5 09:04:24 | 显示全部楼层
    小恩GG 发表于 2016-4-1 16:14
    实际测试15.6HZ,是否是你示波器没有调好呢?
    时间轴放大些再测试试,有些示波器时间调整不好,会抓取轮廓 ...

    TPM_CnSC_REG(TPM1_BASE_PTR, 0)  = (TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK),    //PWM左对齐
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24883
    最后登录
    2025-7-20
    发表于 2016-4-5 13:34:57 | 显示全部楼层
    北极星-38637 发表于 2016-4-5 08:58
    谢谢,我查一下看看

    测试方法是否有问题?
    如果确定测试是正确的,我这边待会帮你新建一个工程试试。
    不知道你用的输出引脚是哪个引脚?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 02:27 , Processed in 0.105889 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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