查看: 4024|回复: 1

[原创] 【经验分享】QN908x不能产生低于125HzPWM的问题

[复制链接]

该用户从未签到

715

主题

6374

帖子

0

超级版主

Rank: 8Rank: 8

积分
25234
最后登录
2025-8-20
发表于 2021-1-18 09:36:07 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-1-18 16:13 编辑

我们在测试
SDK_2.2.3_QN908XCDK\boards\qn908xcdk\driver_examples\sctimer\simple_pwm发现,当想产生62hz的pwm时候,结果输出的是125hz。后来发现只要设置频率低于125hz,输出的都是125hz的频率这是怎么回事?

我们首先就应该查一下计数值是否正确的装到了寄存器里,在产生pwm的过程里,有将计数值装到SCTMATCH这个操作,当计数达到match值再做其他操作。我们查看代码,这步在函数SCTIMER_CreateAndScheduleEvent里,接着就发现有些不对劲。
赋值语句是这样的:
base->SCTMATCH[s_currentMatch] =SCT_SCTMATCH_MATCHn_L(matchValue);
base->SCTMATCHREL[s_currentMatch] =SCT_SCTMATCHREL_RELOADn_L(matchValue);
每个语句都用了宏SCT_SCTMATCH_MATCHn_L,而这个语句作用就是取出数据的低16位。
而当我们的频率低于125hz时候,我们的matchValue经过计算,低16位用到了,高16位也用到了,那么这个宏修饰就会给我们带来问题,忽视掉高16位的值,计数自然就不对了。所以我们要改成这样。这样就能正常输出了。
3.png
nxp.png
回复

使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4692

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10093
    最后登录
    2025-8-8
    发表于 2021-1-18 11:21:03 | 显示全部楼层
    看样子,此次bug是库的问题。
    程序员的锅啊~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-21 13:24 , Processed in 0.089357 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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