• 嵌入式实操----基于RT1170 使能展频功能(二十七)


    本文主要是通过迁移的思维,记录本人初次使用NXP MCUXpresso SDK API进行BSP开发

    车载电子设备对EMC的要求比较高,本文主要讲述在RT1170上面,使能spread spectrum功有,通过对实钟进行展频配置,以得到良好的EMC效果。之前在RT1052上面有试过,但是使用的是周立功的aworks系统,本文在原生的SDK上面开启该功能。
    参考文档:EMC design consideration on i.MXRT Series.pdf

    1. 原理



    本质上Spread spectrum 功能,通上如上两张图的比较,可以看出其本质就是降低某个频点上面的能量,以达到优化EMC的效果。
    从RT1170的手册上面可以得出计算的公式:

    在官方的手册上提供了参考值数值:

    2. 软件设置

    在clock_config.c当中做如下修改,开启12M展频功能。

    $ git diff boards/evkmimxrt1170/display_examples/fbdev_freertos/cm7/clock_config.c
    diff --git a/boards/evkmimxrt1170/display_examples/fbdev_freertos/cm7/clock_config.c b/boards/evkmimxrt1170/display_examples/fbdev_freertos/cm7/clock_config.c
    index 2af4840e..57c4a4fc 100644
    --- a/boards/evkmimxrt1170/display_examples/fbdev_freertos/cm7/clock_config.c
    +++ b/boards/evkmimxrt1170/display_examples/fbdev_freertos/cm7/clock_config.c
    @@ -258,13 +258,26 @@ const clock_arm_pll_config_t armPllConfig_BOARD_BootClockRUN =
             .loopDivider = 166,                       /* PLL Loop divider, Fout = Fin * ( loopDivider / ( 2 * postDivider ) ) */
         };
    
    +clock_pll_ss_config_t sysPLL2_ss_config =
    +{
    +    .stop = 0x240,
    +    .step = 0x6,
    +};
    +
     const clock_sys_pll2_config_t sysPll2Config_BOARD_BootClockRUN =
         {
    -        .mfd = 268435455,                         /* Denominator of spread spectrum */
    -        .ss = NULL,                               /* Spread spectrum parameter */
    -        .ssEnable = false,                        /* Enable spread spectrum or not */
    +        .mfd = 0x960,                         /* Denominator of spread spectrum */
    +        .ss = &sysPLL2_ss_config,                               /* Spread spectrum parameter */
    +        .ssEnable = true,                        /* Enable spread spectrum or not */
         };
    
    +//const clock_sys_pll2_config_t sysPll2Config_BOARD_BootClockRUN =
    +//    {
    +//        .mfd = 268435455,                         /* Denominator of spread spectrum */
    +//        .ss = NULL,                               /* Spread spectrum parameter */
    +//        .ssEnable = false,                        /* Enable spread spectrum or not */
    +//    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    3. 验证

    不开展频的效果:
    在这里插入图片描述

    开展频的效果:
    在这里插入图片描述

    4. 总结

    1.可以通过官方的配置工具生成相关的代码:

    2.说一下 12MHz 和 60KHz 这两个数值。
    12MHz 是扩频信号带宽,60KHz是调制信号带宽,两者需满足 12M/60K = 200 > 100 的关系。

    希望对各位读者帮助。
    欢迎订阅
    嵌入式实操”一个分享开发实践经验的地方。
    文章会同时发布到我的 CSDN主页今日头条号 平台上。

  • 相关阅读:
    人人都懂的HTML基础知识-HTML教程(1)
    4405. 统计子矩阵
    【redis实现自增流水并设置过期时间】
    冰冰学习笔记:平衡二叉搜索树
    电脑重装系统桌面图标变成白色文件怎么恢复?
    Eureka:微服务中的服务注册与发现机制
    phantomjs插件---实现通过链接生成网页截图
    我的2023
    糖尿病患者怎样养成良好习惯
    通过 Azure 日志分析加强云安全
  • 原文地址:https://blog.csdn.net/weixin_30965175/article/details/126278942