当前位置: 首页 > news >正文

S32k3XX MCU时钟配置

今天想从头开始配置S32K312中EB中的MCU模块,以下是我的配置思路与理解。

关键是研究明白,这些频率是如何通过一个总时钟,一步步分频得到的。

在这里插入图片描述

参考时钟,供外设模块使用,不同外设需要配置合理的参考时钟。

在这里插入图片描述

clock generation example

从上图可以看出,外部时钟作为输入时钟源,提供给PLL时钟,PLL再进行倍频以及分配得到PTHInCLK。

电路图晶振时钟频率-20MHz

从下图可以看出,分配为1的时候,时钟频率为120MHz,再根据时钟树,可以推断出
ALPS SLow and PLAT CLK 都是从PLL来的

PLL_PH0 和 FIRC 提供给它分配时钟,但是,这两个选择一个就不能选另一个作为系统时钟。

而PLL_PH0 是从VCO CLK分来的,这里软件自己给出的事960MHz,我尝试修改过,会报错。所以根据这个频率进行分频,可以得到自己想要的时钟频率。
补充:可确认VCO CLK是固定的,最小1分频即960/2,480MHz

分配逻辑

给不同外设分配合适的时钟

有了AIPS PLAT CLK AIPS SLOW CLK 以及 Core CLK后, 就可以尝试根据芯片手册中不同外设的频率来进行参考时钟的配置了。

UART时钟源

从上图可以看出,PLAT && SLOW都可以作为参考时钟源,具体取决于不同的LPUART n Instances的选择。我们只使用S32K312中的LPUART0 instance,这里LPUART0要求的时钟为PLAT CLK,但是又来了,PLAT CLK的时钟也是分频得到的,具体该设置为多少?
LPUART不同时钟选择与波特率分配

我这里使用的UART外设波特率为9600bps,所以我只需要40MHz的时钟就可以了,这样,在进行UART模块配置时,选择9600bps,生成的配置代码会自动计算OSR以及SBR的值,无需手动输入。

如下图,
配置波特率后,生成的分频数以及OSR

配置代码中遇到的问题记录

  1. 外部时钟如何参考设置?— 参考硬件配置的外部时钟

  2. PLL时钟配置时,为什么外部时钟会影响PLL时钟?根据时钟树,外部时钟会影响PLL的时钟

  3. PLL时钟中的几个分频参数RDIV,MFI,ODIV2分别代表什么?如果想得到自己想要的频率,该如何取值?

    *RDIV,输入分频系数,MFI ,倍频因子,将分频后的输入频率倍增,ODIV2,输出分频系数,进一步减低PLL的输出频率。RDIV设置为1,MFI设置为48,那么20Mhz 48 = 960MHz, 而ODVI2 只影响PLL_PHI0, PLL_PHI1的频率,它会给这两个频率进一步的分频。

  4. 为什么在McuCgm0clockMux4中取消对它的使能,程序就跑不起来就?-这个是对CAN时钟的频率分配,如果没有,CAN无法工作。

  5. 为什么外部时钟的频率会影响UART的传输?UART时钟是来自于ALPT的,这个时钟是固定分到 了40MHz,按理来说,应该没有影响才对。

    -外部时钟和配置的时钟频率不一致,那么会导致时钟输出不稳定,你配置的时钟不一定是理想的时钟频率。

其他

这个模块的核心就是时钟的配置,如何根据外部时钟同时参考时钟树,一步步得到各个外设的时钟,对各个分频系数的配置是核心。然后设置参考时钟,以及外设时钟使能,这些很简单,不值得花费篇幅去讲;此外,MCAL配置中很多配置项其实是对寄存器的写操作,勾选或者赋值就是写入某个值,但是图像化界面的好处就是你可以根据填入的值,直观的看到操作该值后的影响,报错与否,程序跑不起来,就看看是不是哪个功能没有使能,大部分操作外设程序第一步死掉就是没使能时钟。以上。

相关文章:

  • Gone v2 使用 goner/viper/remote链接远程的配置中心,支持etcd、consul、firestore、nats
  • 【Linux 下的 bash 无法正常解析, Windows 的 CRLF 换行符问题导致的】
  • 记忆力训练day24
  • C语言入门教程100讲(3)代码注释
  • 【免费】2000-2019年各省地方财政印花税数据
  • k8s--集群内的pod调用集群外的服务
  • 无法写入文件:(FileSystemError): Error: EPERM: operation not permitted, open...)
  • 【即插即用涨点模块】LSK大选择性核:自适应地捕捉遥感图像目标,实现暴力涨点【附源码+注释】
  • Android Compose 线性布局(Row、Column)源码深度剖析(十)
  • 【C#】WinForm自定义控件及窗体
  • Shell正则表达式
  • Java锁等待唤醒机制
  • 【Linux】交叉编译2
  • 前端Wind CSS面试题及参考答案
  • 【数据分享】2014-2024年我国各城市逐年空气质量指数(AQI)数据
  • 设计心得——如何实现接口
  • 红宝书第十一讲:超易懂版「ES6类与继承」零基础教程:用现实例子+图解实现
  • 【transformer理论+实战(三)】必要的 Pytorch 知识
  • 在uml中,为什么用泛化而不用继承这个词语?
  • Python模块与包
  • 奥迪车加油时频繁“跳枪”维修两年未解决,4S店拒退换:可延长质保
  • 2025年中国网络文明大会将于6月10日在安徽合肥举办
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 今天北京白天气温超30℃,晚间为何下冰雹?
  • “水运江苏”“航运浙江”,江浙两省为何都在发力内河航运?
  • 多地警务新媒体整合:关停交警等系统账号,统一信息发布渠道