四时宝库

程序员的知识宝库

嵌入式实操----基于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 */
+//    };

3. 验证

不开展频的效果:



开展频的效果:


4. 总结

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

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

希望对各位读者帮助。
欢迎订阅
嵌入式实操”一个分享开发实践经验的地方。
文章会同时发布到我的CSDN主页 嵌入式实操的博客_CSDN博客-06--Am335x,05-RT1170 开发,01--RT1052 Aworks 开发领域博主今日头条号 平台上。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接