• 嵌入式实操----基于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主页今日头条号 平台上。

  • 相关阅读:
    光致发光谱荧光量子效率测量系统
    1099:第n小的质数(信奥)
    Vue之绑定样式和渲染、收集表单数据、过滤器
    Python编程入门--第九章 类
    2022“杭电杯”中国大学生算法设计超级联赛(9)签到题4题
    基于C++11的数据库连接池(推荐)
    网络协议从入门到底层原理学习(一)—— 简介及基本概念
    Spark SQL数据通用保存数据_大数据培训
    消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!
    SAP如何批量标记生产订单的TECO状态
  • 原文地址:https://blog.csdn.net/weixin_30965175/article/details/126278942