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配置中很多配置项其实是对寄存器的写操作,勾选或者赋值就是写入某个值,但是图像化界面的好处就是你可以根据填入的值,直观的看到操作该值后的影响,报错与否,程序跑不起来,就看看是不是哪个功能没有使能,大部分操作外设程序第一步死掉就是没使能时钟。以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36401.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub 超火的开源终端工具——Warp

Warp 作为近年来 GitHub 上备受瞩目的开源终端工具,以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力: 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…

SpringBoot 第二课(Ⅰ) 整合springmvc(详解)

目录 一、SpringBoot对静态资源的映射规则 1. WebJars 资源访问 2. 静态资源访问 3. 欢迎页配置 二、SpringBoot整合springmvc 概述 Spring MVC组件的自动配置 中央转发器(DispatcherServlet) 控制器(Controller) 视图解…

八股学习-JUC java并发编程

本文仅供个人学习使用,参考资料:JMM(Java 内存模型)详解 | JavaGuide 线程基础概念 用户线程:由用户空间程序管理和调度的线程,运行在用户空间。 内核线程:由操作系统内核管理和调度的线程&…

C++基础 [八] - list的使用与模拟实现

目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…

VScode的debug

如果有命令行参数的话: 打开调试配置: 在 VS Code 中,按下Ctrl Shift D打开调试面板。点击面板顶部的齿轮图标,选择“添加配置…” (Add Configuration...)。 创建新的调试配置: 选择Python,然后选择…

工作记录 2017-02-08

工作记录 2017-02-08 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、CPT的录入页面做修改 1.1、Total 改为 Price 1.2、当删除行时,下面的行自动上移。 2、Pending Payments、Payment Posted、All A/R Accounts页面加了CoIns…

Java SE 面经

1、Java 语言有哪些特点 Java 语言的特点有: ①、面向对象。主要是:封装,继承,多态。 ②、平台无关性。一次编写,到处运行,因此采用 Java 语言编写的程序具有很好的可移植性。 ③、支持多线程。C 语言没…

springboot基于session实现登录

文章目录 1.理解session2.理解ThreadLocal2.1 理解多线程2.2 理解lambda表达式2.3 ThreadLocal 3.基于session登录流程图4.具体登录的代码实现4.1短信发送功能4.2 短信验证码登录注册功能4.登录校验功能4.1 配置登录拦截器LoginInterceptor4.1.1 ThrealLocal类实现 4.2登录拦截…

【ArduPilot】Windows下使用Optitrack通过MAVProxy连接无人机实现定位与导航

Windows下使用Optitrack通过MAVProxy连接无人机实现定位与导航 配置动捕系统无人机贴动捕球配置无人机参数使用MAVProxy连接Optitrack1、连接无人机3、设置跟踪刚体ID4、校正坐标系5、配置IP地址(非Loopback模式)6、启动动捕数据推流 结语 在GPS信号弱或…

MSys2统一开发环境,快速搭建windows opencv环境

文章目录 摘要下载msys2安装Mingw64安装Cmake安装opencv报错一报错二问题一 摘要 本篇基于之前发布的opencv两篇文章,进行的流程简化,旨在优化windows opencv环境和实例运行,Msys2统一开发环境,有利于长远的开发环境,也简化了后续集成的难度…

基于单片机的多功能热水器设计(论文+源码)

1系统方案设计 基于单片机的多功能热水器系统,其系统框图如图2.1所示。主要采用了DS18B20温度传感器,HC-SR04超声波模块,STC89C52单片机,液晶,继电器等来构成整个系统。硬件上主要通过温度传感器进行水温的检测&am…

详解Sympy:符号计算利器

Sympy是一个专注于符号数学计算的数学工具,使得用户可以轻松地进行复杂的符号运算,如求解方程、求导数、积分、级数展开、矩阵运算等。其中比较流行的深度学习框架pytorch的用到了Sympy,主要用于将模型的计算图转换为符号化表达式,以便进行分…

《Python实战进阶》No27: 日志管理:Logging 模块的最佳实践(上)

No27: 日志管理:Logging 模块的最佳实践(上) 摘要 日志记录是软件开发中不可或缺的一部分,尤其是在复杂的生产环境中。Python 的内置 logging 模块提供了强大的工具来管理和记录程序运行中的各种信息。本集将深入探讨 logging 模块的核心概念&#xff0…

每日Attention学习27——Patch-based Graph Reasoning

模块出处 [NC 25] [link] Graph-based context learning network for infrared small target detection 模块名称 Patch-based Graph Reasoning (PGR) 模块结构 模块特点 使用图结构更好的捕捉特征的全局上下文将图结构与特征切片(Patching)相结合,从而促进全局/…

ospf动态路由

一、为什么使用动态路由 OSPF(open shortest path first开放最短路径优先)是内部网关协议(IGP)的一种,基于链路状态算法(LS)。 OSPF企业级路由协议(RFC2328 OSPFv2),核心重点协议 OSPF共三个版本,OSPFV1主要是实验室…

记一次服务器中木马导致cpu占用高的问题

最近准备搭建一个个人博客,发现才放了一个nginx和一个很简单的java后台cpu占用率就居高不下,然后用top命令查看果然有问题 其中这个networkservice 和sysupdate占用很高,原本还以为是系统相关的进程,但是想想如果是系统相关的进程…

基于LabVIEW的Windows平台高速闭环控制

在Windows系统下,通过LabVIEW实现高速闭环控制面临两大核心挑战:非实时操作系统的调度延迟与硬件接口的传输速度限制。以USB-6351(NI USB-6351 DAQ卡)为例,其理论采样率可达1.25 MS/s(单通道)&a…

深入理解 Linux ALSA 音频架构:从入门到驱动开发

文章目录 一、什么是 ALSA?二、ALSA 系统架构全景图核心组件详解:三、用户空间开发实战1. PCM 音频流操作流程2. 高级配置(asound.conf)四、内核驱动开发指南1. 驱动初始化模板2. DMA 缓冲区管理五、高级主题1. 插件系统原理2. 调试技巧3. 实时音频优化六、现代 ALSA 发展七…

【C语言】自定义类型:结构体

一、结构体类型的声明 我们前面学习操作符的时候已经接触过结构体了,下面我们回顾一下结构体的基本内容。 创建结构体的语法如上所示: struct是创建结构体的关键字,然后tag就是我们结构体的名称,member-list是结构体的成员列表&…

python基本运用:类的介绍和使用

一、介绍类 类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 实例化:创建一个类的实例,类的具体对象。 对象:通过类定义的数据结构实例。对象包括两个数据成员&#x…