ARM裸机开发-时钟

ARM裸机开发-bootloader-时钟初始化(ARM跑快了) 一、概念解析 1、什么是时钟脉冲信号,起什么作用? 时钟脉冲信号时有一定电压幅度和一定的时间间隔并连续发出的脉冲信号。时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中的众多晶体管都工作在开关状态,它们的导通和关断动作都是按照时钟信号的节奏进行的。也就是说嵌入式系统是按照时钟来安排CPU的任务。 2、时钟脉冲信号的频率是指单位时间内产生的时钟脉冲个数。 3、如何产 阅读详情

目录

一.基本概念

1.变频​编辑

2.时钟树

3.基本流程

二.具体实现

1.配置ARM时钟

1.CCSR寄存器

2.CCM_ANALOG->PLL_ARM寄存器

3.CACRR

2.配置PLL2和PLL3

3.配置三大根时钟

1.CBCMR寄存器

2.CBCDR寄存器

3.CSCMR1寄存器


一.基本概念

1.变频

使用的芯片imx6ull是无源晶振,表示在工作时不需要额外电压,

下图为该芯片的时钟配置

PLL1为内核配置时钟,PLL2为外设配置时钟,PLL3为USB设备配置时钟,一共7个PLL,8个PFD。

2.时钟树

时钟根产生器:负责对不同频率设备牵线

分频器,2位分频器表示从1到4的分频,3位则表示1到8

OSC晶振,24Mhz

3.基本流程

配置步骤如下:

1.配置ARM时钟为528MHZ

2.配置PLL2下的4个PFD和PLL3下的4个PFD

3.配置三大根时钟(132MHZ,66MHZ,66MHZ)

二.具体实现

1.配置ARM时钟

在配置频率时,先将cg门关闭,配置频率稳定后再打开cg门传给外设,否则若当外设频率较低时,打开cg门,将高频传给外设,由于频率急剧升高,可能导致外设死机,而由于ARM没有配置cg门,所以要更改ARM的时钟频率应特殊处理,如下:

先采用step_clk路,通过选通门选择osc_clk或者下面的时钟频率,先将ARM的工作频率切换为24MHZ,再配置PLL,设置二分频率,待稳定后切换为pll1_main_clk传给ARM.

1.CCSR寄存器

选通线路

2.CCM_ANALOG->PLL_ARM寄存器

设置PLL频率为1056

3.CACRR

设置PLL1为二分频

    unsigned int t = 0;    
    // 1. 配置ARM时钟
    CCM->CCSR &= ~(1 << 8);//1,选择24MHZ
    CCM->CCSR |= (1 << 2);//2,切换step_clk
    t = CCM_ANALOG->PLL_ARM;//3,设置频率1056
    t &= ~(3 << 14);  
    t |= (1 << 13);
    t |= (88 << 0);
    CCM_ANALOG->PLL_ARM = t;
    CCM->CACRR |= (1 << 0);    //设置二分频
    CCM->CCSR &= ~(1 << 2);//4.切换回pll1_main

2.配置PLL2和PLL3

按照下图配置

PLL2锁倍频,所以参考手册没有,只需修改PLL2下的4个PFD

可见,只需修改FRAC域配置PFD倍频因子,CLKGATE打开cg门

     // 2. 配置PLL2 PFD 
    t = CCM_ANALOG->PFD_528;
    t &= ~((0x3F << 0) | (0x3F << 8) | (0x3F << 16) | (0x3F << 24));//先将倍频因子位清零
    t &= ~((1 << 7) | (1 << 15) | (1 << 23) | (1 << 31));//打开4个PFD的cg门
    t |= (27 << 0) | (16 << 8) | (24 << 16) | (32 << 24);//配置倍频因子,由图中公式528*18/对应频率得到  
    CCM_ANALOG->PFD_528 = t; 

    // 3. 配置PLL3 PFD,同上
    t = CCM_ANALOG->PFD_480;
    t &= ~((0x3F << 0) | (0x3F << 8) | (0x3F << 16) | (0x3F << 24));
    t &= ~((1 << 7) | (1 << 15) | (1 << 23) | (1 << 31));
    t |= (12 << 0) | (16 << 8) | (17 << 16) | (19 << 24);

3.配置三大根时钟

按照下图时钟树红线走向配置相应的寄存器

设置为最大频率,运行速度快

1.CBCMR寄存器

选中PLL2具体所对应的哪个PFD

2.CBCDR寄存器

选中PLL2,设置AHB倍频因子,IPG倍频因子

3.CSCMR1寄存器

选中PERCLK根时钟,配置一分频因子

    // 4. 配置三个根时钟
    t = CCM->CBCMR;
    t &= ~(3 << 18);
    t |= (1 << 18);    //选中PFD2
    CCM->CBCMR = t;

    t = CCM->CBCDR;
    t &= ~(1 << 25);    //选通PLL2
    t &= ~((7 << 10) | (3 << 8)); //清空分频因子位
    t |= (1 << 11) | (1 << 8);    //设置分频因子,bit11为设置AHB_CLK3分频,bit8位为设置二分频给IPG_CLK
    CCM->CBCDR = t;

    CCM->CSCMR1 &= ~(1 << 6);//设置PERCLK继承来自IPG_CLK
    CCM->CSCMR1 &= ~(0x3F << 0);//设置一分频
ARM裸机开发GPIO控制:新手入门必看指南 深入浅出讲解ARM开发中GPIO的配置与控制方法,适合裸机开发新手。通过实际操作理解arm开发核心要点,掌握底层硬件交互的关键技能,为后续嵌入式系统学习打下坚实基础。 阅读详情

相关推荐

最详细的Cadence OrCAD Capture自带元件库的介绍

最详细的Cadence OrCAD Capture自带元件库的介绍 本章节将介绍Cadence OrCAD Capture 软件自带的各类元件库的分类,方便大家在设计时能够快速的选择元件。 AMPLIFIER.OLB 共182个零件,存放模拟放大器,IC,如LM386,MAX457等。 ARITHMETIC.OLB 共182个零件...

LGCPCB的博客 6万+

ARM裸机开发:主频与时钟

ARM裸机开发:主频与时钟

嵌入式学习记录站点 3577

Uds诊断自动化(CANoe.diva应用)

(7)其他配置选择可以保持默认(一般情况下,DTC以及31服务、下载服务需要另外测试)。(1)打开CANoe.Diva软件,并新建Diva工程。(2)设置工程名和保存位置;在"Specification file"(3)测试案例打开后的界面如下,可以对要进行测试的案例进行勾选,(可查看下角的进度条)后;(3)等待DIva工程的生成;(4)接下来是修改Diva工程选项,如下图点击。,如用例间的时间间隔、复位等待时间等。,即可打开导入的测试工程。,即可生成测试用例。(1)在CANoe中。

LIUJIAAAAA的博客 3443

ARM裸机开发:时钟配置、定时器epit、gpt

(一)晶振为24MHZ,通过PLL锁相环电路来倍频,通过PFD来分频,还有一个既可以分频又可以倍频的电路。2.在528 PLL中选择浅蓝色路径,先配置AHB再配置IPG,在配置PERCLK。2.PLL2(528 PLL):又称system PLL固定528MHZ。3.PLL3(480 PLL):又称USB1 PLL固定480MHZ。4.PLL 4(Audio PLL):用于音频设备。5.PLL 5(Video PLL):视频相关配置。(三)528 PLL配置和480 PLL配置。

2501_91498265的博客 703

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 891

基于STM32、HAL库的ICP-20100气压传感器 驱动程序设计

它具有低功耗、高精度、快速响应等特点,非常适合物联网、可穿戴设备和无人机等应用。#define ICP20100_FIFO_CTRL 0x09 // FIFO控制寄存器。#define ICP20100_FIFO_DATA 0x0A // FIFO数据寄存器。#define ICP20100_FIFO_STS 0x0B // FIFO状态寄存器。#define ICP20100_FIFO_WTM 0x15 // FIFO水印设置。

corlin6688的博客 600

IMX6ULL裸机开发|ARM启动、中断与时钟系统学习笔记

ARM Cortex-A7裸机启动代码完成七项核心任务:设置异常向量表并重映射至0x87800000,为各工作模式配置栈,使能IRQ中断,清零BSS段,开启I-Cache,最终跳转至C语言main函数。IMX6ULL时钟系统基于24MHz晶振,通过PLL倍频、Prescaler分频、PFD灵活调频,实现内核528MHz主频,并配置AHB(132MHz)、PERCLK(66MHz)、IPG(66MHz)三路根时钟。采用GICV2中断控制器管理160个中断源,实现高效中断处理。

2502_90211789的博客 320

YOLOv11改进策略【卷积层】| TIP 2025 MFA 多阶段特征聚合 大核扩感受 + 多梯度融合,强效增强弱小目标特征

红外弱小目标尺寸极小、信噪比低,在特征传递中极易丢失信息;常规卷积感受野单一、梯度源不足,难以同时捕捉局部细节与全局上下文,导致小目标特征表达弱、检测漏检。因此提出多阶段特征聚合 MFA,用大核卷积+多分支+通道注意力强化小目标特征提取。

Limiiiing的博客 585

硬件开发2-ARM裸机开发3-I.MX6ULL - 时钟、定时器

i.MX6UL嵌入式系统时钟与定时器机制解析:系统采用多级时钟树架构,由外部晶振经PLL倍频和分频器产生各模块所需时钟。提供两种定时器:EPIT(32位向下计数器,适用于周期中断)和GPT(32位向上计数器,支持输入捕获/输出比较)。时钟系统通过CCM模块管理,包含ARM内核时钟(可调至1056MHz)、AHB总线时钟(132MHz)和IPG外设时钟(66MHz)。关键配置涉及PLL锁定、分频系数设置及时钟源切换,需注意操作顺序以避免系统故障。定时器选择取决于应用场景,EPIT适合简单定时,GPT适用于复杂

DebugKitty的博客 891

YOLOv13保姆级教程+AKConv模块:可变形卷积+自适应核优化,mAP提升3.23%,召回率&mAP50~95显著提升(论文涨点模块已验证)

本文介绍了一种改进的YOLOv13-AKConv模型,通过引入AKConv模块显著提升了目标检测性能。实验结果表明,优化后的模型(绿色曲线)相比原模型(蓝色曲线)在mAP指标上提升了3.23个点,同时召回率、mAP50-95等指标均有明显提升。作者详细阐述了模型移植过程,包括创建yolov13-AKConv.yaml配置文件,修改tasks.py和modules/init.py文件,以及实现AKConv模块的核心代码。该模块采用可变形卷积思想,通过动态生成采样点位置来增强特征提取能力,并集成了BN和SiLU

FJN110的博客 2611

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5644

ARM裸机开发(3)时钟系统详解——i.MX6ULL的PLL、PFD与CCM配置

时钟是嵌入式系统的"心跳"。没有正确的时钟配置,任何外设都无法正常工作。i.MX6ULL 的时钟系统非常复杂,包含多个 PLL(锁相环)、PFD(可编程分数分频器)和 CCM(时钟控制模块)。本文将详细解析clk.c中的每一行配置代码。24MHz 外部晶振 (OSC)│├──→ PLL_ARM (锁相环) ──→ ARM核心时钟 (最高528MHz)│├──→ PLL_528 (锁相环) ──→ PFD_528 ──→ 各总线时钟│。

xxy22241的博客 153

FastGPT智能体开发:FastGPT OpenAPI 知识库接口

FastGPT OpenAPI 知识库接口

王国平的博客 323

【ARM 裸机开发 (IMX6ULL-mini)】中断嵌套实现、代码 OCP 改造与时钟配置

本文基于 IMX6ULL-mini 平台开展 ARM 裸机开发,针对 IRQ 模式无法中断嵌套的问题,借助 ARMv6 的 CPS 汇编指令切换处理器工作模式,实现高优先级中断抢占;结合 GIC V2 中断控制器,讲解中断抢占与子优先级配置方法。引入 OCP 开闭原则,利用函数指针数组重构中断管理代码,新增外设中断无需修改核心处理逻辑,完成代码解耦。最后介绍 IMX6ULL 时钟系统,讲解晶振、PLL、PFD 原理,分步完成 ARM 内核及总线根时钟的寄存器配置,为后续外设驱动开发打下基础。

2403_89702754的博客 432

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jz2440裸机开发与分析:ARM芯片时钟体系2

目标:有上节可知,要想得到FCLK,HCLK,PCLK的时钟需要配置两个寄存器,分别为MPLLCON和CLKDIVN 第一步:先对LOCKTIME初始化 /* LOCKTIME(0x4C000000) = 0xFFFFFFFF */ ldr r0,=0x4C000000 ldr r1,=0xFFFFFFFF str r1,[r0] 第二步:对MPLL进行配置,配置为400MHz 由...

花开了~~~ 230

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

(五)arm裸机开发---主频和时钟配置

本节主要涉及imx6ull的时钟配置,包括arm内核时钟配置,外设时钟配置,以及imx6ull的时钟树设置。主要参考的是imx6ull的Reference(《IMX6ULL 参考手册》)。 目录一、时钟树1.配置主时钟2.配置其他PLL和PFD 一、时钟树       imxull的时钟来源于俩部分,一部分是实时时钟,32.768MHZ,用于提供RTC的时钟。另一部分是24MHZ的晶振,用于提供内核以及其他外设的时钟。我们的时钟树就是从24M时钟经过倍频,分频得来的,共有7路PLL。       具体的时钟

Engineering Lion的博客 742

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ARM裸机开发Day06|IMX6ULL汇编CPS指令、启动流程、GIC中断优先级、时钟系统PLL/PFD详解

CPS指令(ARMv6+)可高效切换模式与开关中断,简化汇编代码。裸机启动需完成7步:向量表设置、重映射、栈分配、开中断、清BSS、开启I-Cache、跳转main。GICV2优先级越小越高,IMX6ULL支持32级,分抢占与子优先级。遵循OCP原则,扩展功能不修改原有代码。时钟系统以24MHz晶振为基础,通过PLL倍频、Prescale整数分频、PFD分数分频生成多路时钟,配置顺序为:主频→PFD→根时钟。

2201_75490992的博客 757

jz2440裸机开发与分析:ARM芯片时钟体系1

OM开关

花开了~~~ 193

视频教程-《嵌入式技术ARM裸机开发》之时钟系统和电源管理-嵌入式

《嵌入式技术ARM裸机开发》之时钟系统和电源管理 2008年毕业于沈阳航空航...

weixin_32128171的博客 128

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-21.6讲 LCD时间参数和像素时钟设置

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

小狗爱吃黄桃罐头的博客 461

Linux之ARM(MX6U)裸机篇----8.主频和时钟配置实验

【代码】Linux之ARM(MX6U)裸机篇----8.主频和时钟配置实验。

weixin_60444711的博客 510

ARM 裸机学习:IMX6ULL 时钟系统

本篇笔记基于IMX6ULL裸机开发,补充CPS指令、汇编启动流程、GIC中断优先级核心知识点,详细讲解晶振、PLL锁相环、预分频器、PFD相位分数分频器工作原理,梳理IMX6ULL核心时钟配置流程与参数,搭配专项思考题巩固时钟与启动核心考点。

weixin_57202813的博客 197

裸机环境下ARM外设时钟使能操作指南

在裸机ARM开发中,外设功能依赖于精准的时钟使能配置。本文手把手演示如何通过操作RCC寄存器为GPIO、UART等外设开启对应时钟,强调时钟树理解与寄存器位操作细节,避免常见失能导致外设无响应问题,是ARM开发入门必踩的关键实践环节。

weixin_29317963的博客 233

ARM裸机开发:汇编LED灯实验(I.MX6UL芯片)

ARM裸机开发:汇编LED灯实验(I.MX6UL芯片)

嵌入式学习记录站点 3176

ARM裸机开发——I.MX6U_汇编LED灯驱动

在I.MX6ULL开发板上使用汇编驱动LED灯

Black__goat的博客 854

视频教程-S5PV210的时钟系统-1.6.ARM裸机第六部分-驱动/内核开发

S5PV210的时钟系统-1.6.ARM裸机第六部分 互联网课程品牌《朱老师...

weixin_28980081的博客 131
上一篇: ARM裸机开发-中断
下一篇: ARM裸机开发-EPIT与GPT
剑指offer.
博客等级 码龄3年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值