hyts3366 2025-10-15 16:32 采纳率: 40%
浏览 10

S32K144 FTM2输出波形频率与预期不符

S32K144芯片,目的是使用FTM2输出4个PWM波,目标是频率达到20K,且分辨率在4000以上,我所有相关的设置如图所示。

img

img

img

img


按照以上设置,我期望会得到一个20K的输出波形,但是实际用示波器测量波形频率为10K。
有问题的地方有几个,第一个是我选择的Timebase 0为System clock,但是实际测试中发现输出波形频率与这个时钟信号似乎没关系,而是与SPLL DIV1这个信号有关,也就是图中我选择的这个。
第二个问题是这个SPLL DIV1我明明选择的是分频1,输出的频率是112MHZ,但是最终体现出来的效果是一个56MHZ的信号,才导致输出波形频率为10K。我在网上搜索问题是发现了以下内容:

img


结合我实测的结果,似乎是在一个我没发现地方,对输入的时钟信号SPLL DIV1再做了一次2分频,我想要确认如果我输入的时钟确定为112M的话,那么PWM的时钟频率是否最大就为56M无法改变了?假设不改变SPLL CLOCK的情况下,我目标是频率达到20K,且分辨率在4000以上的目的是否还能实现?

  • 写回答

4条回答 默认 最新

  • 紫雾凌寒 新星创作者: 人工智能技术领域 2025-10-15 16:33
    关注

    让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek

    如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞

    1. 关键点分析:
      - 问题核心在于S32K144芯片的FTM2输出的PWM波形频率未达到预期的20KHz,需要检查FTM2的相关设置参数是否正确配置以影响频率计算。
      - 分辨率要求在4000以上,这也与频率计算相关,可能是整体配置影响了频率和分辨率的综合实现。
    2. 解决方案:
      - 首先检查FTM2的时钟配置。FTM的频率计算公式为:(f_{FTM} = \frac{f_{bus}}{(prescaler + 1)(modulo + 1)}),其中(f_{bus})是系统总线频率,prescaler是预分频器值,modulo是计数值。
      - 假设系统总线频率(f_{bus}=160MHz)(具体需根据实际芯片手册确定)。
      - 从提供的设置图来看,预分频器值为31,计数值为1999。
      - 计算当前设置下的FTM频率:(f_{FTM}=\frac{160MHz}{(31 + 1)(1999 + 1)})
      • 先计算分母:((31 + 1)(1999 + 1)=32×2000 = 64000)
      • 则(f_{FTM}=\frac{160MHz}{64000}=2500Hz),这与预期的20KHz不符。
      • 要达到20KHz的频率,设预分频器值为(x),计数值为(y),则有(20000=\frac{160MHz}{(x + 1)(y + 1)})。
      • 假设预分频器值为7,计数值为999:
      • 计算频率:(f_{FTM}=\frac{160MHz}{(7 + 1)(999 + 1)})
      • 分母为(8×1000 = 8000)
      • 则(f_{FTM}=\frac{160MHz}{8000}=20KHz)
      • 关于分辨率,在FTM中,分辨率通常由计数值决定。计数值越大,分辨率越高。当计数值为999时,分辨率为1000,满足分辨率在4000以上的要求(可进一步通过调整计数值和预分频器值来优化分辨率与频率的关系)。
      • 代码示例(假设使用C语言,基于S32K144的SDK):
    #include "s32k144.h"
    
    void FTM2_Init()
    {
        // 使能FTM2时钟
        SIM->SCGC6 |= SIM_SCGC6_FTM2_MASK;
    
        // 配置预分频器
        FTM2->SC = FTM_SC_PS(7);
    
        // 配置计数值
        FTM2->CNT = 0;
        FTM2->MOD = 999;
    
        // 配置通道用于PWM输出(假设通道0为例)
        FTM2->CONTROLS[0].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK;
    }
    
    1. 不同解决方案的优缺点:
      - 方案优点:通过准确计算预分频器值和计数值,能直接达到目标频率,且计数值的调整可满足分辨率要求。
      - 方案缺点:需要对FTM的频率计算公式有深入理解,计算过程相对复杂,对于初学者可能有一定难度。
    2. 总结:
      - 问题主要出在FTM2的预分频器值和计数值设置不合理,导致输出频率未达到预期。通过正确计算并设置这两个参数,可实现目标频率20KHz及分辨率要求。在实际应用中,要根据芯片手册准确确定系统总线频率等参数,以确保FTM配置的正确性。

    希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月15日