时钟的配置

        在使用51单片机时,系统使用的时钟源是一个外部晶体振荡器,频率为12M。由于51单片机每个指令周期都是12分频的,所以实际工作频率仅为1M。2440作为一种性能远高于51的Soc,主频肯定要远远高于51,因此2440有着比51单片机复杂的多的时钟系统。从mini2440原理图中可以看出,此开发板也安装了一个12M外部晶体振荡器,实际上到目前为止,我们的程序就运行在12M频率下。但2440内部的时钟控制系统能够使程序运行在更高的频率下。

        接下来我们就需要将2440配置到手册推荐的频率工作。这个频率为:Fclk=400M,Hclk=100M,Pclk = 50M。

        这里引入了三个频率,Fclk、Hclk、Pclk。其中Fclk就是我们经常说的主频,也就是arm内核的工作频率,其实也是代码执行的速率。那么后面两个是什么含义呢?这里我们要理解Soc内部的两大总线AHB和APB。由于Soc有很多外设,这些外设工作时的速率各不相同。如果采用像51那种方法,所有外设工作频率都一样的话,那么对于那些低速外设来说,消耗的功耗就太大了。由于amr内核通常用于便携式设备,而便携式设备对于功耗来说是个非常敏感的问题。所以2440内部被设计出AHB和APB两大总线,分别用于连接高速设备和低速设备,从而尽可能地降低功耗。这里Hclk用于给高速设备AHB总线设备, Pclk用于低速设备

        2440推荐的时钟远高于晶体振荡器所提供的时钟。这是怎么做到的呢?这里就不得不介绍一下PLL这个神器了。PLL(phase locked loop)称之为锁相环,它是一段电路,主要起倍频的作用。我们可以简单理解为,2440内部有几个PLL电路,它们能够把12M频率翻倍到更高的频率上。那么这里至少我们应该知道两种神器:倍频和分频。它们的作用刚好是相反的。配置2440在指定频率下工作。需要参考《2440全套手册》的《时钟发生模块框图》,如下:



        上图是时钟框图中的左上角部分,红圈这个部分是一个选通器,意思是2440的时钟源可以选择:外部晶体振荡器或者是外部时钟。到底用哪个是由2440的两个引脚决定的,从mini2440原理图中可以查到OM2和OM3这两个引脚。发现它们都是接地的,也就是逻辑0。

注:选通器是一种可能有多个输入,但只有一个输出的器件。

        由晶体振荡器输入的12M经过MPLL进行倍频处理,2440中有两个PLL,MPLL和UPLL。其中UPLL用于配置USB设备的工作频率,我么现在用不上,所以我们主要要配置的是MPLL。

        为了操作方便,2440设置了一个名字也叫MPLL的寄存器,这个寄存器中有三个域P,M,S。根据这三个域的值,MPLL将输入的12M倍频出我们需要的Fclk

        上图可以看出,MPLL输出之后经由CLKCNTL寄存器输出了一个Fclk,这个Fclk兵分三路,一路直接共arm920T使用,另外两路各自又进行了一次分频。这里很好理解,由于Fclk经过倍频之后是400M,那么HDIVN需要为4就能分出一个100M来,这就是Hclk;同理如果PDIVN为8那么就是50M,这就是Pclk。
        到此,我们的思路就是配置MPLL寄存器,想办法让它输出一个400M,再找找用于分频的寄存器,把Hclk和Pclk分频成100和50。

        MPLLCON寄存器就是上述用来配置MPLL的。这个寄存器里面的三个部分MDIV、PDIV、SDIV经过合理的设置之后,MPLL就能够产生400M了。这三个值的设置手册给了一个公式:

        很明显,就算有个公式也很难把我们需要的值算出来,好在三星公司直接给出了这三个数的典型值。

由于晶振大小为12M,我们按照红圈给定的值设置就行了

        2440中的大多数外设是可以被关闭的,关闭的方法其实就是不提供时钟,时钟控制寄存器就是用来管理这些外设的时钟的。好在默认这些时钟是使能的,所以我们可以暂时不用管这个寄存器

时钟慢速控制(CLKSLOW )寄存器主要用于开关或选择三大时钟的,恰好,默认值就是我们需要的

时钟分频控制寄存器很重要,它决定了Pclk和Hclk的大小。这个寄存器有三个部分,其中DIVN_UPLL是给USB设备用的,我们用不上。先看PDIVN这个给Pclk分频的部分,很明显,为了使Pclk为50这里应该设置为01。

至此,代码的筹备工作已经完成,完整代码如下:

void init_timer4(void)
{unsigned int t;t = TCFG0;t &= ~(0xFF << 8);t |= (24 << 8);TCFG0 = t;TCFG1 &= ~(0x0F << 16); //2M / 2 = 1MTCNTB4 = 0xFFFF;TCON |= (1 << 21);TCON &= ~(1 << 21);TCON |= (1 << 22);TCON |= (1 << 20);
}

注意:这两个寄存器在设置时是先设置分频寄存器再设置倍频寄存器的。这是因为如果在没有设置分频的情况下直接把系统主频设置到400M的话,pclk和hclk的值我们是不知道的。这样的话可能某些外设由于频率太高而导致无法工作,这样情况下就算再把频率降下来也无法恢复。所以我们应该先配置好分频,再设置倍频。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

yolov8模型在Xray图像中关键点检测识别中的应用【代码+数据集+python环境+GUI系统】

yolov8模型在X yolov8模型在Xray图像中关键点检测识别中的应用【代码数据集python环境GUI系统】 1.背景意义 X射线是一种波长极短、穿透能力极强的电磁波。当X射线穿透物体时&#xff0c;不同密度和厚度的物质会吸收不同程度的X射线&#xff0c;从而在接收端产生不同强度的信号…

pycharm加载虚拟环境及运行代码

pycharm加载虚拟环境及运行代码 pycharm下载地址&#xff1a; https://www.jetbrains.com/pycharm/download/ 1.加载虚拟环境 选择pycharm图标&#xff0c;点击启动。 选择OPEN, 选择工程文件夹&#xff1a; 选择File->setting 选择python 解释器&#xff1a; Project--…

扫码挪车是怎么实现的呢?一篇文章带你了解一下!扫码挪车小程序基础版上线了!!!

挪车小程序系统源码的功能特点 快速定位与挪车请求&#xff1a;车主通过小程序可以快速定位车辆位置&#xff0c;并发送挪车请求。系统会自动将请求发送给附近的车主&#xff0c;提醒其尽快挪车。实时通信与交互&#xff1a;小程序支持实时通信功能&#xff0c;车主之间可以通…

【C++笔记】C++编译器拷贝优化和内存管理

【C笔记】C编译器拷贝优化和内存管理 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C编译器拷贝优化和内存管理前言一.对象拷贝时的编译器优化二.C/C内存管理2.1练习2.2 C内存管理方式2.3 operator new与operator…

tornado

Tornado通过使用非阻塞网络1/0&#xff0c;可以扩展到数以万计的开放链接&#xff0c;非常适合 长时间轮询&#xff0c;WebSockets和其他需要与每个用户建立长期连接的应用程序。 特点 注重性能优越&#xff0c;速度快解决高并发异步非阻塞websockets 长连接内嵌了HTTP服务器…

十一、 JDK17 新特性梳理

文章目录 为什么是JDK17语法层面新特性1、文本块2 、Switch 表达式增强3、instanceof的模式匹配4、var 局部变量推导 模块化及类封装1、记录类 record2 、隐藏类 Hidden Classes3 、密封类 Sealed Classes4、模块化 Module System1 、什么是模块化2、声明一个module3 、require…

“智能密钥管家”IKE

IKE的出现 上一篇通过IPSec实现了BJ到CS的业务互通&#xff0c;但是是通过手工方式把加密和验证密钥手动配置&#xff0c;为了保障安全性&#xff0c;就需要经常去修改这些密钥&#xff0c;小型场景还好&#xff0c;来来回回就这2个点&#xff0c; 修改起来不算麻烦&#xff…

[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

解决SVN蓝色问号的问题

桌面或文件夹右键&#xff0c;选择TortoiseSVN->Settings打开设置对话框&#xff0c;选择Icon Overlays->Overlay Handlers->取消钩选Unversioned。确定&#xff0c;重启系统即可

CodeGeeX4:程序员的高效助手,多语言代码生成神器!

你是否曾在编写代码时&#xff0c;为复杂的语法、逻辑错误而绞尽脑汁&#xff1f;或是在面对多个编程语言的切换时&#xff0c;感觉脑子快要爆炸&#xff1f;别担心&#xff01;一款全新的多语言代码生成神器——CodeGeeX4&#xff0c;正悄然成为程序员们的“救命稻草”。它不仅…

【工具变量】地市环保法庭试点城市DID数据集(2005-2023年)

数据简介&#xff1a;环保法庭是中国司法体系中专门处理环境资源案件的审判机构&#xff0c;其主要职责包括审理涉及自然环境污染、矿产资源保护、自然资源环境开发等环境资源民事纠纷案件&#xff0c;对不服下级人民法院生效裁判的环境资源民事案件进行审查&#xff0c;以及对…

如何在Chrome最新浏览器中调用ActiveX控件?

小编最近登陆工商银行网上银行&#xff0c;发现工商银行的个人网银网页&#xff0c;由于使用了ActiveX安全控件&#xff0c;导致不能用高版本Chrome浏览器打开&#xff0c;目前只有使用IE或基于IE内核的浏览器才能正常登录网上银行&#xff0c;而IE已经彻底停止更新了&#xff…

C++:类和对象OJ题

目录 一、求123...n 二、计算日期到天数的转换 三、日期差值 四、打印日期 一、求123...n 这里先把题目链接放在这里求123.....n 描述&#xff1a; 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C…

介绍 2款 Oracle 开发工具

准备工作 Oracle SQL Developer 下载&#xff08;免费&#xff09; Oracle 的官方网站下载 Oracle SQL Developer。以下是下载的步骤&#xff1a; 访问 Oracle SQL Developer 官方下载页面。点击页面上的“下载”链接。选择适合你操作系统的版本&#xff08;Windows、macO…

第十五章:使用html、css、js编程制作一个网页版的下雪场景动画

背景:这是一个充满诗意的下雪场景代码。打开网页时,雪花轻轻飘落,覆盖住你的屏幕,仿佛置身于冬日的夜空下。背景音乐《我期待的不是雪》缓缓响起,伴随着雪花的飘动,仿佛心中的那份爱与温柔悄然绽放。 雪花的飘落是梦境般的存在,每一片雪花都是轻盈的告白,旋转着从天际…

百度营销转化追踪(网页JS布码)

引言&#xff1a;使用百度营销api配置网站上各个模块组件的转化追踪&#xff0c;统计网站上的各组件模块点击等信息。 一、选择接入方式&#xff08;本文选择的是网页JS布码&#xff09; 参考文档&#xff1a;百度营销-商业开发者中心百度开发者中心是一个面向开发者的知识分享…

『功能项目』QFrameWork制作背包界面UGUI【72】

本章项目成果展示 我们打开上一篇71QFrameWork更新道具图片UGUI的项目&#xff0c; 本章要做的事情是制作背包UI界面&#xff0c;实现道具栏与背包道具的互通 首先将以下资源图片放进Art文件夹 将UICanvas的UISlot对象复制一份放在Image下 创建Scrollbar View 设置Scrollbar V…

Resolving and Binding

1 Semantic Analysis中的变量绑定解析 背景&#xff1a;当一个变量在一个循环里赋值100次。那么这个变量会被赋值100次。当右侧是函数时&#xff0c;这非常没必要。这个可以通过静态的分析来避免这个问题。这个分析就是Sematic Analysis中的一个例子。 具体做的事情叫 2 把定…

10.解析解方法推导线性回归——不容小觑的线性回归算法

引言 线性回归是许多复杂机器学习模型的基础。作为一种基本的机器学习方法&#xff0c;线性回归提供了清晰的思路和工具&#xff0c;通过理解其推导过程&#xff0c;可以更好地掌握机器学习的基本原理和模型设计。 通过阅读本篇博客&#xff0c;你可以&#xff1a; 1.学会如…

对抗攻击的详细解析:原理、方法与挑战

对抗攻击的详细解析&#xff1a;原理、方法与挑战 对抗攻击&#xff08;Adversarial Attack&#xff09;是现代机器学习模型&#xff0c;尤其是深度学习模型中的一个关键安全问题。其本质在于&#xff0c;通过对输入数据添加精微的扰动&#xff0c;人类难以察觉这些扰动&#…