裸機開發 時鐘配置,EPIT

1.概念

時鐘(clock):在電子系統中是一個產生穩定、周期性振蕩信號的電路或組件。這個信號像節拍器或心跳一樣,為數字電路中的各種操作提供同步時序基準。

PLL(phase locked loop)鎖相環電路: 倍頻

PFD(phase fractional Prescale)相位分數分頻器: 輸出頻率可升可降

2.時鐘配置

1.CCM

CCM 是 i.MX6U 時鐘系統的 “大腦”,通過?PLL(鎖相環,倍頻)?和?Divider(分頻器)?實現時鐘信號的 “精準縮放”,核心模塊包括:

  • PLL 模塊(倍頻核心)
    接收低頻時鐘源(如 24MHz XTAL),通過倍頻生成高頻時鐘,供高性能模塊使用。i.MX6U 針對不同時鐘域設計了專用 PLL:

    • PLL1(ARM PLL)Cortex-A7 CPU 的專屬 PLL,最高可將 24MHz 倍頻至?792MHz(即 CPU 最高主頻 792MHz,需配合電壓調整)。
    • PLL2(System PLL):為外設域提供基礎時鐘,輸出固定 528MHz,再通過分頻供給 UART、SPI、GPT 等外設。
    • PLL3(USB PLL):專門為 USB 模塊提供 480MHz 時鐘(USB 2.0 高速模式需求)。
    • PLL4(Audio PLL):為音頻模塊(如 I2S)提供精準時鐘,支持靈活配置頻率。
  • Divider 模塊(分頻調節)
    對 PLL 輸出的高頻時鐘進行 “降壓”,適配不同模塊的時鐘需求(如 UART 常用 115200bps 波特率,需 8MHz 或 16MHz 時鐘)。
    例:PLL2 輸出 528MHz → 經分頻器(÷66)得到 8MHz → 供給 UART1 模塊。

  • Clock Gate(時鐘門控)
    為每個模塊提供獨立的 “時鐘開關”—— 未使用的模塊可關閉時鐘(如 UART2 未使用時,關閉其時鐘),是 i.MX6U 低功耗設計的關鍵。

2.PLL模塊

1.PLL1

kernal: CCM_ANALOG_PLL_ARMn

配置步驟:

  1. 先選擇osc_clk,讓step_clk為24MHz
  2. 再將PLL1的輸出改成step_clk,讓ARM暫時工作在24MHz;
  3. 配置PLL為1056MHz,注意設置倍頻因子之前先把PLL之后的二分頻設置好,避免ARM內核故障!!
  4. 最后改回pll1_main_clk

示例

//ARM工作時鐘配置              先分頻再倍頻保證ARM內核正常工作CCM->CACRR &= ~(7 << 0);   //先清0CCM->CACRR |= (1 << 0);  //設置為2分頻(001)CCM->CCSR &= ~(1 << 8);    //設置24MHzCCM->CCSR |= (1 << 2);     //設為另外一路(step_clk),此時 鎖相環短路(pll1_main_clk)(PPL_ARM), 可安全配置PPL_ARMunsigned int t = CCM_ANALOG->PLL_ARM;   //此時可安全配置PPL_ARMt &= ~(0x7F << 0);t |= (88 << 0);t |= (1 << 13);t &= ~(3 << 14);CCM_ANALOG->PLL_ARM = t;CCM->CCSR &= ~(1 << 2);     //切換回PPL_ARM路

2.528PLL

它是 i.MX6U 芯片中負責為高速外設和關鍵功能模塊提供穩定、高頻時鐘的核心鎖相環(PLL),因輸出時鐘最高可配置為528MHz而得名,是整個芯片時鐘樹中至關重要的 “高頻時鐘源” 之一。

CCM_ANALOG_PFD_528n

由手冊知,相關配置為

故PLL2下的PFDn需要配置的MHz如圖,相關計算公式為

故對于PFD0來說為528 * 18 / 352 = 27

示例

    t = CCM_ANALOG->PFD_528;t &= ~((0x3F << 0) | (0x3F << 8) | (0x3F << 16) | (0x3F << 24));  //先清0t |= ((27 << 0) | (16 << 8) | (24 << 16) | (32 << 24));CCM_ANALOG->PFD_528 = t;

3.PLL3

在 i.MX6U 芯片中,PLL3(USB PLL)?是專門為 USB(通用串行總線)模塊設計的鎖相環(PLL),其核心作用是為 USB 控制器提供符合協議規范的高精度時鐘信號

相關配置如圖

示例如圖

    t = CCM_ANALOG->PFD_480;t &= ~((0x3F << 0) | (0x3F << 8) | (0x3F << 16) | (0x3F << 24));  //先清0t |= ((12 << 0) | (16 << 8) | (17 << 16) | (19 << 24));CCM_ANALOG->PFD_480 = t;

3.時鐘根配置

需配置AHB_CLK_ROOT? ? 132MHZ

???????????PERCLK_CLK_ROOT? 66MHz

? ? ? ? ? ?IPG_CLK_ROOT? ? ? ? 66MHz

在 i.MX6U(基于 Cortex-A7 架構)的時鐘樹中,AHB_CLK_ROOTPERCLK_CLK_ROOT?和?IPG_CLK_ROOT?是三個核心的 “時鐘根節點”,它們從上層 PLL 獲取時鐘信號后,通過分頻或直接分配,為不同類型的外設、總線和功能模塊提供時鐘。三者的定位、頻率來源和服務對象有明確分工,共同構成了外設時鐘域的核心架構。

AHB(Advanced High-performance Bus,高級高性能總線)是芯片內部的高速數據傳輸總線,AHB_CLK_ROOT?是該總線的根時鐘,決定了高速外設和內存接口的數據傳輸速率。

IPG(Internal Peripheral Bus,內部外設總線)是 AHB 總線的 “子總線”,主要連接中速外設,IPG_CLK_ROOT?是該總線的根時鐘,也是多數通用外設的基礎時鐘源。

PERCLK(Peripheral Clock,外設時鐘)是 IPG 總線的 “低速分支”,PERCLK_CLK_ROOT?專為對時鐘頻率要求較低的外設設計,是低速外設的統一時鐘源。

示例

    //AHB_clk_root配置CCM->CBCMR &= ~(3 << 18);     //先清0CCM->CBCMR |= (1 << 18);      //選擇 pll2的pfd2t = CCM->CBCDR;t &= ~(1 << 25);     //選通pll2的門t &= ~(7 << 10);     //清0t |= (2 << 10);      //設為010三分頻//IPG_CLK_ROOT配置t &= ~(3 << 8);      //清0t |= (1 << 8);      //設為001二分頻     IPG_CLK_ROOTCCM->CBCDR = t;//PRECLK-CLK_ROOT配置t = CCM->CSCMR1;t &= ~(1 << 6);       //選通所要選擇的路t &= ~(0x3F << 0);    //設為1分頻       PRECLK-CLK_ROOTCCM->CSCMR1 = t;

3.EPIT

1.工作模式

EPIT 支持兩種經典工作模式,核心差異在于計數到 0 后的行為:

1. 重裝載模式(Reload Mode)
  • 工作邏輯:計數器從 LR(重裝載寄存器)的值開始向下計數,當計數到 0 時:
    1. 觸發 “計數結束中斷”;
    2. 自動將 LR 的值重新裝
    3. 載到計數器,開始新一輪計數(無需軟件干預)。
  • 核心特點:中斷間隔嚴格固定(周期 = LR 值 × 計數周期),無累積誤差,適合周期性任務(如 1ms 一次的系統節拍)。
  • 示例:若 LR=1000,計數周期 = 1μs,則每 1000μs(1ms)觸發一次中斷,循環往復。
2. 自由運行模式(Free-Run Mode)
  • 工作邏輯:計數器從 LR 的值開始向下計數,當計數到 0 時:
    1. 觸發 “計數結束中斷”;
    2. 計數器停止計數(保持 0 值),需通過軟件重新寫入 LR 值才能再次啟動。
  • 核心特點:僅觸發一次中斷,適合單次定時(如延時 10ms 后執行某個初始化操作)。
  • 示例:若 LR=10000,計數周期 = 1μs,則 10ms 后觸發一次中斷,之后計數器停止。

2.相關配置

示例

void epit1_init(void)
{unsigned int t;t = EPIT1->CR;t &= ~(3 << 24);    //先清0,再寫1t |= (1 << 24);     //設置時鐘源為外設時鐘irq_clk_roott |= (1 << 17);t &= ~(0xFFF << 4);  //清0t |= (65 << 4);      //分頻66倍(65+1)后即為1MHzt |= (1 << 3);       //set-forget模式t |= (1 << 2);       //比較中斷啟用t |= (1 << 1);   EPIT1->CR = t;EPIT1->LR = 1000000;EPIT1->CMPR = 0;EPIT1->CNR = 1000000;//注冊中斷處理函數system_interrupt_register(EPIT1_IRQn, epit1_irq_handler);//GIC中斷使能GIC_EnableIRQ(EPIT1_IRQn);//GIC中斷優先級設置GIC_SetPriority(EPIT1_IRQn, 0);//enableEPIT1->CR |= (1 << 0);   //EPIT啟用,注意最后再啟用
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922333.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux-文本三劍客(grep、sed、awk)

Linux-文本三劍客前言一、grep二、sed三、awk模式 -- 正則表達式關系表達式、運算符表達模式匹配表達式動作 輸出流程控制參數傳遞&#xff0c;awk接受外部變量統計數組的使用分組統計練習常用內置函數前言 grep、sed、awk 被稱為 “文本三劍客”&#xff0c;它們是處理文本文…

主流反爬蟲、反作弊防護與風控對抗手段

文章目錄1. 寫在前面2. 指紋檢測3. 行為驗證3. 加固防護4. 鏈路檢測5. 風控埋點6. 游客注冊7. 數據防護8. 賬號權重9. 反調阻斷【&#x1f3e0;作者主頁】&#xff1a;吳秋霖 【&#x1f4bc;作者介紹】&#xff1a;擅長爬蟲與JS加密逆向分析&#xff01;Python領域優質創作者、…

金蝶云星空插件開發記錄(一)

實現目的&#xff1a;新增供應商保存后&#xff0c;觸發釘釘審批流程&#xff0c;并根據釘釘審批結果回寫是否合格供應商。實現思路&#xff1a;通過BOS平臺供在應商管理界面新增兩個復選框字段&#xff1a;是否釘釘審批、是否合格供應商&#xff0c;若在新建供應商檔案時勾選是…

企業跨區域組網新解:SD-WAN技術打造安全穩定網絡體系

前言在數字化浪潮席卷全球的今天&#xff0c;企業跨區域網絡互聯已成為支撐業務發展的關鍵基礎設施。傳統MPLS專線雖性能穩定&#xff0c;但高昂成本和漫長部署周期令眾多企業望而卻步。SD-WAN技術的出現&#xff0c;正以其智能、靈活和成本效益的優勢&#xff0c;重塑企業組網…

Docker 容器化

引言在解釋docker是什么之前&#xff0c;我們首先應該先了解的是容器化的概念。什么是容器&#xff1f;就是一個沙箱&#xff0c;在這個沙箱中涵蓋了特定應用運行的一切依賴的內容。但他不是一個操作系統&#xff0c;且和底層的操作系統是隔離的。什么是容器化&#xff1f;容器…

LeetCode刷題——hot 100(3)

題目1&#xff1a;矩陣置零題目&#xff1a;問題分析&#xff1a;使用兩個布爾數組來分別記錄哪行哪列出現了0&#xff0c;當出現0的行和列&#xff0c;對應的布爾數組值置為true。再次遍歷數組&#xff0c;當出現行數組和列數組中的值為true&#xff0c;則對應的原數組的值置為…

Ajax-day2(圖書管理)-渲染列表

本篇筆記素材來自“黑馬程序員” 渲染列表圖書管理一、獲取數據二、渲染數據完整代碼圖書管理 Bootstrap 框架渲染列表&#xff08;查&#xff09;新增圖書&#xff08;增&#xff09;刪除圖書&#xff08;刪&#xff09;編輯圖書&#xff08;改&#xff09; 自己的圖書數據&a…

MOS管的電路

MOS管的三極都會存在以下三個電容&#xff0c;分別是&#xff1a;Cgs,Cgd,Cds 輸入電容CissCgsCgd 輸出電容CossCgdCds 反向傳輸電容CrssCgd&#xff0c;也叫米勒電容 然而&#xff0c;這三個等效電容是構成串并聯組合關系&#xff0c;他們并不是獨立的&#xff0c;而是相互…

STM32_05_時鐘樹

時鐘 d用來輸入數據&#xff0c;CLK就是我們的時鐘&#xff0c;CPU1s中72000000HZ個時鐘周期STM32的時鐘樹鎖相環HSE時鐘源HSI時鐘源LSE時鐘源LSI時鐘源SystemInit函數SetSysClock函數SetSysClockTo72函數SystemInit()后時鐘頻率大小總結RCC標準庫函數定義變量a&…

C語言---判斷語句

文章目錄1. if 語句2. if...else 語句3. if...else if...else 語句4. switch 語句5. 三元運算符 ( ? : )總結與對比如何選擇C語言中的判斷語句用于根據給定的條件來決定執行哪一段代碼。其核心是條件為真&#xff08;必須&#xff09;則執行一段代碼&#xff0c;條件為假&…

[硬件電路-212]:電流的本質確實是電子的移動

1. 微觀機制&#xff1a;電子的定向漂移與熱運動定向漂移&#xff08;Drift Motion&#xff09;&#xff1a;在導體&#xff08;如金屬&#xff09;中&#xff0c;自由電子&#xff08;價電子&#xff09;受電場驅動&#xff0c;從負端向正端定向移動&#xff0c;形成宏觀電流。…

雙RFSOC47DR-16通道5GSPS ADC采集模塊

16通道5GSPS ADC采集板卡組成如圖1所示。該板卡的輸入接口為SMA單端輸入&#xff0c;ADC采集和處理采用Xilinx公司的XCZU47DR-2FFVE1156I芯片。板卡需配備4路QSFP28光口輸出&#xff0c;并需要集成網口、DDR4、SD卡、USB調試口。兩塊RF-Soc需確保連接通信功能。板卡的16通道需實…

pytest -- 中文文檔

前言 零基礎1小時快速入門pytest自動化測試教程&#xff0c;全套項目框架實戰pytest配置文件可以改變pytest的運行方式&#xff0c;它是一個固定的文件pytest.ini文件&#xff0c;讀取配置信息&#xff0c;按指定的方式去運行 非test文件 pytest里面有些文件是非test文件 pyt…

硬件開發2-ARM裸機開發3-IMX6ULL - 引入中斷

一、鋪墊引入中斷 → 按鍵1、概要&#xff1a;實現按鍵控制發光二極管和蜂鳴器輸入類型的外設&#xff1a;按鍵&#xff08;key&#xff09;2、參考手冊內容完成配置過程&#xff08;1&#xff09;key 按鍵原理圖&#xff08;2&#xff09;core 內核中命名 -- UART1 CTS&#x…

Ansible的 Playbook 模式詳解

目錄一、Playbook模式1.1 Playbook 的優勢1.2 Playbook 的組成1.3 安裝 httpd 服務案例1.4 Playbook 命令及常用參數1.5 Playbook 的語法 —— 權限相關1. remote_user2. become3. become_method1.6 Playbook 的通知與觸發機制1. notify2. handlers3. 使用示例4. 使用場景1.6 P…

猿輔導Java后臺開發面試題及參考答案

int 與 Integer 的區別是什么&#xff1f;若創建數量龐大的數字時使用 Integer&#xff0c;會對重復數字創建新對象嗎&#xff1f;int 是 Java 中的基本數據類型&#xff0c;直接存儲數值&#xff0c;占用 4 個字節&#xff0c;默認值為 0&#xff0c;不需要通過 new 關鍵字創建…

代碼隨想錄學習摘抄day9(回溯1-11)

一個樸實無華的目錄定義&#xff1a;回溯法也可以叫做回溯搜索法&#xff0c;它是一種搜索的方式。應用場景&#xff1a;回溯法解決的問題都可以抽象為樹形結構代碼模板題型第77題. 組合思路&#xff1a;每次從集合中選取元素&#xff0c;可選擇的范圍隨著選擇的進行而收縮&…

Altium Designer(AD24)打開工程文件的幾種方法

??《專欄目錄》 目錄 1,概述 2,源文件 2,菜單欄 4,工具欄 5,注意事項 1,概述 本文介紹幾種打開工程文件的方法。 2,源文件 找到工程的源文件存儲路徑,找到.PrjPcb的源工程文件,雙擊打開。 2,菜單欄 第1步:執行File→Open, 第2步:找到工程文件的存儲路徑,并選中…

Linux嵌入式自學筆記(基于野火EBF6ULL):2.點燈與ubuntu安裝

一、點燈登錄root&#xff1a;賬號&#xff1a;root ; 密碼&#xff1a;root點燈命令&#xff1a;echo 0 > /sys/class/leds/red/brightness #關閉red燈 echo 0 > /sys/class/leds/blue/brightness #關閉blue燈 echo 0 > /sys/class/leds/green/brightness …

【Java實戰?】Java實戰:MyBatis-Plus 開啟MySQL數據庫高效操作之旅

目錄 一、MyBatis-Plus 環境集成 1.1 項目依賴引入 1.2 數據庫配置 1.3 代碼生成器使用 二、核心 CRUD 操作實現 2.1 基礎查詢 2.2 數據新增與修改 2.3 復雜查詢場景 三、性能優化與高級特性 3.1 緩存配置 3.2 樂觀鎖實現 3.3 字段自動填充 四、實戰案例:用戶管理模塊開發 4.1…