IMX6LL|时钟控制

一.时钟控制模块

4个层次配置芯片时钟

  • 晶振时钟
  • PLL与PFD时钟
  • PLL选择时钟
  • 根时钟/外设时钟

1.1晶振时钟

系统时钟来源

  • RTC时钟源:32.768KHz,连接RTC模块,进行时间计算。
  • 系统时钟:24MHz,芯片主晶振

在这里插入图片描述

1.2PLL和PFD倍频时钟

7路锁相环电路

  • ARM_PLL:驱动 ARM 内核
  • 528_PLL:倍频参数固定为22,系统总线时钟
  • USB1_PLL:驱动第一个 USB 物理层
  • AUDIO_PLL:驱动音频接口
  • VIDEO_PLL:驱动视频接口
  • ENET_PLL:驱动外部以太网接口
  • USB2_PLL:驱动第二个 USB 物理层

10.3.1 Centralized components of clock management system
在这里插入图片描述

18.6 CCM Memory Map/Register Definition

  • CCM_ANALOG_PLL_XXX

    • 设置PPL时钟主频(pll1_main_clk)
    • 使能PLL时钟输出
  • CCM_ANALOG_PFD_XXX

    • 设置PPL下PFD的分频系数

1.3PLL选择时钟

对 PLL1 和 PLL3 的输出进行选择、对 PLL4 和 PLL5 进行分频

  • cpu内核时钟来于PLL1时钟。

  • 刚上电时,PLL1时钟未初始化,arm内核先使用24M晶振频率,等PLL1时钟稳定输出后,再切换回PLL1时钟。

CCM_CCSR:选择pll1_sw_clk、step_clk时钟源

  • step_clk时钟源设置为24M晶振
  • pll1_main_clk时钟源设置为 step_clk或pll1_main_clk

18.5.1.5.1 Clock Switcher

1.4外设时钟

给外设设置时钟源,外设时钟源是可以有多个选择的:

  • 梯形图标表示上一级时钟源配置
  • 正方形图标表示分频系数

图标旁边标明了相关寄存器

18.3 CCM Clock Tree

在这里插入图片描述

二.时钟模块编程流程

2.1设置晶振时钟

设置晶振时钟,实质上是让CPU运行PLL1时钟,将CPU运行到ARM PLL时钟上。因为CPU默认使用24MHz的芯片主晶振。

 /******************* 第一层时钟设置--晶振时钟***********************//*CCM中包括很多关于时钟的寄存器 */if ((CCM->CCSR & (0x01 << 2)) == 0) //CPU 使用的是 ARM PLL{/*将CPU时钟切换到XTAL (OSC) 时钟*/                   CCM->CCSR &= ~(0x01 << 8); //控制CCSR: step_sel ,选择 osc_clk 作为时钟源CCM->CCSR |= (0x01 << 2);  //设置GLITCHLESS MUX 选择 step_clk 作为时钟源}

2.2设置PLL时钟

主要是设置七路PPL时钟

/******************* 第二层时钟设置--PLL时钟***********************//*设置PLL1输出时钟为792MHz,它将作为CPU时钟*/CCM_ANALOG->PLL_ARM |= (0x42 << 0);/*将CPU 时钟重新切换到 ARM PLL*/CCM->CCSR &= ~(0x01 << 2);/*设置时钟分频系数为0,即不分频*/CCM->CACRR &= ~(0x07 << 0); //清零分频寄存器   不分频//CCM->CACRR |= (0x07 << 0);     // 8分频/*设置PLL2(System PLL) 输出时钟*//* Configure SYS PLL to 528M */CCM_ANALOG->PLL_SYS_SS &= ~(0x8000);     //使能PLL2 PFD输出CCM_ANALOG->PLL_SYS_NUM &= ~(0x3FFFFFFF);//设置分频系数为0,即不分频。CCM_ANALOG->PLL_SYS |= (0x2000); //使能PLL2 输出CCM_ANALOG->PLL_SYS |= (1 << 0); //设置输出频率为528Mwhile ((CCM_ANALOG->PLL_SYS & (0x80000000)) == 0) //等待设置生效{}/*设置PLL3(System PLL) 输出时钟*//* Configure USB PLL to 480M */CCM_ANALOG->PLL_USB1 |= (0x2000);    //使能 PLL3时钟输出CCM_ANALOG->PLL_USB1 |= (0x1000);    //PLL3上电使能CCM_ANALOG->PLL_USB1 |= (0x40);      // 使能USBPHYnCCM_ANALOG->PLL_USB1 &= ~(0x01 << 0);//设置输出频率为480MHzwhile ((CCM_ANALOG->PLL_SYS & (0x80000000)) == 0)//等待设置生效{}/*关闭暂时不使用的 PLL4 、PLL5  、PLL6 、PLL7*/CCM_ANALOG->PLL_AUDIO = (0x1000);    //关闭PLL4CCM_ANALOG->PLL_VIDEO = (0x1000);    //关闭PLL5CCM_ANALOG->PLL_ENET =  (0x1000);    //关闭PLL6CCM_ANALOG->PLL_USB2 =  (0x00);           //关闭PLL7

2.3设置PFD时钟

细分每一路的PLL时钟

    /******************第三层时钟设置--PFD*******************//*禁用PLL2 的所有PFD输出*/CCM_ANALOG->PFD_528 |=(0x80U) ;      //关闭PLL2 PFD0CCM_ANALOG->PFD_528 |=(0x8000U) ;    //关闭PLL2 PFD1// CCM_ANALOG->PFD_528 |=(0x800000U) ;  //关闭PLL2 PFD2 ,DDR使用的是该时钟源,关闭后程序不能运行。暂时不关闭CCM_ANALOG->PFD_528 |=(0x80000000U); //关闭PLL2 PFD3/*设置PLL2 的PFD输出频率*/CCM_ANALOG->PFD_528 &= ~(0x3FU); //清零PLL2 PFD0 时钟分频CCM_ANALOG->PFD_528 &= ~(0x3F00U); //清零PLL2 PFD1 时钟分频CCM_ANALOG->PFD_528 &= ~(0x3F00U); //清零PLL2 PFD2 时钟分频CCM_ANALOG->PFD_528 &= ~(0x3F00U); //清零PLL2 PFD3 时钟分频CCM_ANALOG->PFD_528 |= (0x1B << 0); //设置PLL2 PFD0 输出频率为 352MCCM_ANALOG->PFD_528 |= (0x10 << 8); //设置PLL2 PFD0 输出频率为 594MCCM_ANALOG->PFD_528 |= (0x18 << 16); //设置PLL2 PFD0 输出频率为 396MCCM_ANALOG->PFD_528 |= (0x30 << 24); //设置PLL2 PFD0 输出频率为 198M/*启用PLL2 的所有PFD输出*/CCM_ANALOG->PFD_528 &= ~(0x80U) ;      //开启PLL2 PFD0CCM_ANALOG->PFD_528 &= ~(0x8000U) ;    //开启PLL2 PFD1CCM_ANALOG->PFD_528 &= ~(0x800000U) ;  //开启PLL2 PFD2CCM_ANALOG->PFD_528 &= ~(0x80000000U); //开启PLL2 PFD3/*禁用PLL3 的所有PFD输出*/CCM_ANALOG->PFD_480 |=(0x80U) ;      //关闭PLL3 PFD0CCM_ANALOG->PFD_480 |=(0x8000U) ;    //关闭PLL3 PFD1CCM_ANALOG->PFD_480 |=(0x800000U) ;  //关闭PLL3 PFD2CCM_ANALOG->PFD_480 |=(0x80000000U); //关闭PLL3 PFD3/*设置PLL3 的PFD输出频率*/CCM_ANALOG->PFD_480 &= ~(0x3FU);   //清零PLL3 PFD0 时钟分频CCM_ANALOG->PFD_480 &= ~(0x3F00U); //清零PLL3 PFD1 时钟分频CCM_ANALOG->PFD_480 &= ~(0x3F00U); //清零PLL3 PFD2 时钟分频CCM_ANALOG->PFD_480 &= ~(0x3F00U); //清零PLL3 PFD3 时钟分频CCM_ANALOG->PFD_480 |= (0xC << 0); //设置PLL3 PFD0 输出频率为 720MCCM_ANALOG->PFD_480 |= (0x10 << 8); //设置PLL3 PFD0 输出频率为 540MCCM_ANALOG->PFD_480 |= (0x11 << 16); //设置PLL3 PFD0 输出频率为 508.2MCCM_ANALOG->PFD_480 |= (0x13 << 24); //设置PLL3 PFD0 输出频率为 454.7M/*启用PLL3 的所有PFD输出*/CCM_ANALOG->PFD_480 &= ~(0x80U) ;      //开启PLL3 PFD0CCM_ANALOG->PFD_480 &= ~(0x8000U) ;    //开启PLL3 PFD1CCM_ANALOG->PFD_480 &= ~(0x800000U) ;  //开启PLL3 PFD2CCM_ANALOG->PFD_480 &= ~(0x80000000U); //开启PLL3 PFD3

2.4外设时钟设置

选择具体的时钟和最后的分频。

/******************第四层时钟设置--外设****************/CCM->CSCDR1 &= ~(0x01 << 6); //设置UART选择 PLL3 / 6 = 80MHzCCM->CSCDR1 &= ~(0x3F);     //清零CCM->CSCDR1 |= ~(0x01 << 0); //设置串口根时钟分频值为1,UART根时钟频率为:80M / (dev + 1) = 40MHz

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

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

相关文章

Jenkins-Pipeline

Pipeline 1 安装插件 2 新建一个 Pipline 工程 3 配置Pipeline 脚本 agent的使用可以参考这个文档 pipeline {agent anystages {stage(Build) { steps {echo Building project...}}stage(Test) { steps {echo Testing project...}}stage(Deploy) { steps {echo Deploying …

Go新项目-Gin中wire的依赖注入方式实战(6)

选型Go项目过程中&#xff0c;针对依赖注入方式的分析和使用 参考资料 https://go.dev/blog/wirehttps://medium.com/dche423/master-wire-cn-d57de86caa1bhttps://toutiao.io/posts/et0t2lk/previewhttps://imlht.com/archives/223/https://lailin.xyz/post/go-training-week…

即将被AI取代的工作

这个博客 100% 是由人类而不是机器人撰写的。至少在某种程度上&#xff0c;目前仍然需要内容作家。 你的工作怎么样&#xff1f;您是否想过人工智能&#xff08;AI&#xff09;是否有可能渗透到您生活的无形本质&#xff1f;您花费数年时间获得的所有知识、技能和经验是否会因…

谈谈前端开发中的防抖和节流

本文作者为 360 奇舞团前端开发工程师 李武阳 概述 防抖和节流是前端开发中常用的函数优化手段&#xff0c;它们可以限制函数的执行频率&#xff0c;提升性能和用户体验。主要用于处理高频触发的事件&#xff0c;例如&#xff1a;用户的滚动、输入、点击和表单的重复提交等。 防…

OceanBase OBCA认证考试预约流程

【OceanBase】OBCA认证考试预约流程 - 课程体系 - 云贝教育https://www.yunbee.net/Home/News/detail/article_id/541.html 一、OBCA账号登录/注册&#xff0c;链接 https://www.oceanbase.com/ob/login/mobile?gotohttps%3A%2F%2Fwww.oceanbase.com%2Ftraining%2Fdetail%3Fle…

Windows Redis图形客户端 Another Redis Desktop Manager的简单使用教程

1、 Redis官方文档 2、 Redis国内中文版文档 3、 Redis客户端 Another Redis Desktop Manager 4、连接redis服务 我直接使用的是公司搭建好的服务。连接服务需要以下几个信息&#xff1a; HostPortPasswordSSL 5、New Key 5.1 如何创建一个Key&#xff1f; 点击New k…

从前端角度浅谈性能 | 京东物流技术团队(转载)

1 前言 自网站诞生以来&#xff0c;页面白屏时间、用户交互的响应速度等一直都是开发者关心的问题&#xff0c;这直接影响了一个网站能否为用户的浏览提供舒适的服务&#xff0c;而这种舒适度&#xff0c;直接关系着对用户的吸引力&#xff0c;毕竟谁都不能忍受一个页面长达10秒…

Go 中 slice 的 In 功能实现探索

文章目录 遍历二分查找map key性能总结 之前在知乎看到一个问题&#xff1a;为什么 Golang 没有像 Python 中 in 一样的功能&#xff1f;于是&#xff0c;搜了下这个问题&#xff0c;发现还是有不少人有这样的疑问。 补充&#xff1a;本文写于 2019 年。GO 现在已经支持泛型&am…

腾讯云 腾讯云服务器 - 腾讯云 产业智变·云启未来

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

【工作记录】基于springboot3+springsecurity6实现多种登录方式(一)

前言 springboot3已经推出有一段时间了&#xff0c;近期公司里面的小项目使用的都是springboot3版本的&#xff0c;安全框架还是以springsecurity为主&#xff0c;毕竟亲生的。 本文针对基于springboot3和springsecurity实现用户登录认证访问以及异常处理做个记录总结&#x…

Linux miniGUI移植分析

框架介绍 常用GUI程序对比 https://www.cnblogs.com/zyly/p/17378659.html MiniGUI分为底层的GAL&#xff08;图形抽象层&#xff09;和IAL&#xff08;输入抽象层&#xff09;&#xff0c;向上为基于标准POSIX接口中pthread库的Mini-Thread架构和基于Server/Client的Mini-L…

JSONObject - 用最通俗的讲解,教你玩转 JSON 数据的解析和修改

目录 一、JSONObject 1.1、为什么要使用他&#xff1f; 1.2、应用 1.2.1、依赖 1.2.2、JSON 数据示例 1.2.3、JSON 数据的构建 1.2.4、JSON 数据的解析 一、JSONObject 1.1、为什么要使用他&#xff1f; 在还没有接触过这个东西的时候&#xff0c;一直是通过 ObjectMap…

深度学习记录--归—化输入特征

归化 归化输入(normalizing inputs),对特征值进行一定的处理&#xff0c;可以加速神经网络训练速度 步骤 零均值化 通过x值更新让均值稳定在零附近&#xff0c;即为零均值化 归化方差 适当减小变量方差 解释 归化可以让原本狭长的数据图像变得规整&#xff0c;梯度下降的…

Electron中苹果支付 Apple Pay inAppPurchase 内购支付

正在开发中&#xff0c;开发好了&#xff0c;写一个完整详细的过程&#xff0c;保证无脑集成即可 一、先创建一个App 一般情况下&#xff0c;在你看这篇文章的时候&#xff0c;说明你已经开发的app差不多了。 但是要上架app到Mac App Store&#xff0c;则要在appstoreconnect…

HBase学习六:LSM树算法

1、简介 HBase是基于LSM树架构实现的,天生适合写多读少的应用场景。 LSM树本质上和B+树一样,是一种磁盘数据的索引结构。但和B+树不同的是,LSM树的索引对写入请求更友好。因为无论是何种写入请求,LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写(且HDFS不…

Linux第31步_了解STM32MP157的TF-A

了解STM32MP157的TF-A&#xff0c;为后期移植服务。 一、指令集 ARMV8提供了两种指令集:AAarch64和AArch32&#xff0c;根据字面意思就是64位和32位。 ARMV7提供的指令集是AArch32。 二、TF-A 指令集是AArch64的芯片&#xff0c;TF-A有&#xff1a;bl1、bl2、bl31、bl32 和…

再见了RDM,Redis官方GUI才是最好的!

1 简介 直观高效的 Redis GUI 管理工具&#xff0c;它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控&#xff0c;并且可以在界面上使用 CLI 和连接的 Redis 进行交互&#xff08;RedisInsight 内置对 Redis 模块支持&#xff09;&#xff0c;官方下载地址。 使…

Power Designer 连接 PostgreSQL 逆向工程生成pd表结构操作步骤以及过程中出现的问题解决

一、使用PowerDesigner16.5 链接pg数据库 1.1、启动PD.选择Create Model…。 1.2、选择Model types / Physical Data Model Physical Diagram&#xff1a;选择pgsql直接【ok】 1.3、选择connect 在工具栏选择Database-Connect… 快捷键&#xff1a;ctrlshiftN.如下图&#xff…

查询数据库表字段具有某些特征的表

目录 引言举例总结 引言 当我们把一个项目做完以后&#xff0c;客户要求我们把系统中所有的电话&#xff0c;证件号等进行加密处理时&#xff0c;我们难道要一个表一表去查看那些字段是电话和证件号码吗&#xff1f; 这种办法有点费劲&#xff0c;下面我们来探索如何找到想要的…

CVE-2024-0195-SpiderFlow爬虫平台远程命令执行漏洞分析

项目下载地址 spider-flow: 新一代爬虫平台&#xff0c;以图形化方式定义爬虫流程&#xff0c;不写代码即可完成爬虫。https://gitee.com/ssssssss-team/spider-flow 在平台spiderflow的页面中有一个自定义函数&#xff0c;看到函数应是非常的敏感了。 可以做一些猜想与尝试&…