嵌入式學習的第四十九天-時鐘+EPIT+GPT定時器

一、時鐘

1.時鐘系統基本概念

(1)PLL (鎖相環, Phase-Locked Loop)

作用:PLL是一種反饋控制電路,用于生成穩定的高頻時鐘信號。它通過將輸出時鐘與參考時鐘進行比較和調整,可以產生比輸入參考時鐘頻率高得多的輸出時鐘。倍頻??Fin * n = Fout

特點

  • 倍頻功能:可將低頻參考時鐘倍頻為高頻時鐘

  • 低抖動:輸出時鐘穩定性好

  • 可編程性:可通過寄存器配置倍頻系數

(2)Prescaler (預分頻器)

作用:用于對輸入時鐘進行分頻,降低時鐘頻率。分頻? Fin / m = Fout

特點

  • 分頻比可配置 (通常為2的冪次方或整數分頻)

  • 用于將高速時鐘分頻為適合外設工作的頻率

  • 可級聯使用實現更大的分頻比

(3)FPD (Fractional Post Divider,相位項數分頻器?)

作用:提供更精細的時鐘分頻能力,可以實現非整數分頻比。既能倍頻也能分頻??(Fin * n) / m = Fout

特點

  • 支持分數分頻 (如4.5分頻)

  • 提供更靈活的時鐘配置

  • 通常用于需要特定頻率但整數分頻無法滿足的場景

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??時鐘樹

2.IMX6ULL中的PLL和PFD

(1)PLL數量

IMX6ULL中有7個PLL

  1. ARM PLL (用于ARM內核)

  2. SYSTEM PLL (系統主PLL)

  3. USB1 PLL (USB1專用)

  4. USB2 PLL (USB2專用)

  5. AUDIO PLL (音頻子系統)

  6. VIDEO PLL (視頻處理)

  7. ENET PLL (以太網專用)

(2)PFD數量

IMX6ULL的每個PLL有4個PFD?(Phase Fractional Dividers),因此總共有:

  • 7個PLL × 4個PFD = 28個PFD

二、EPIT定時器

1.定義

? ? ? ?EPIT 的全稱是:Enhanced Periodic Interrupt Timer,增強的周期中斷定時器, 它主要是完成周期性中斷定時的。

? ? ? ??s3c2440里面的定時器還有很多其它的功能,比如輸入捕獲、PWM 輸出等等。但是 I.MX6U 的 EPIT 定時器只是完成周期性中斷定時的,僅此一項功能!至于輸入捕獲、 PWM 輸出等這些功能,I.MX6U 由其它的外設來完成。
????????EPIT 是一個 32 位定時器,在處理器幾乎不用介入的情況下提供精準的定時中斷,軟件使能以后 EPIT 就會開始運行.

2.EPIT 定時器特點

(1).時鐘源可選的 32 位向下計數器;
(2). 12 位的分頻值;
(3). 當計數值和比較值相等的時候產生中斷.

3.EPIT結構圖

① 這是個多路選擇器,用來選擇 EPIT 定時器的時鐘源,EPIT 共有 3 個時鐘源可選擇,ipg_clk、ipg_clk_32k 和 ipg_clk_highfreq,ipg_clk我們之前已經配置好了——66MHz;
② 這是一個 12 位的分頻器,負責對時鐘源進行分頻,12 位對應的值是 0~4095,對應著1~4096 分頻.
③ 經過分頻的時鐘進入到 EPIT 內部,在 EPIT 內部有三個重要的寄存器:計數寄存器(EPIT_CNR)、加載寄存器(EPIT_LR)和比較寄存器(EPIT_CMPR),這三個寄存器都是 32 位的。EPIT 是一個向下計數 器,也就是說給它一個初值,它就會從這個給定的初值開始遞減,直到減為 0,計數寄存器里面保 存的就是當前的計數值。如果 EPIT 工作在 set-and-forget 模式下,當計數寄存器里面的值減少到 0,EPIT 就會重新從加載寄存器讀取數值到計數寄存器里面,重新開始向下計數;
④ 比較器,比較寄存器里面保存的數值用于和計數寄存器里面的計數值比較,如果相等的話就會產生 一個比較事件;
⑤ EPIT 可以設置引腳輸出,如果設置了的話就會通過指定的引腳輸出信號;
⑥ 產生比較中斷,也就是定時中斷。

4.EPIT兩種工作模式

set-and-forget 和 free-running
這兩個工作模式的區別如下:
set-and-forget 模式:此模式下,在此模式下 EPIT 的計數器從加載寄存器 EPITx_LR 中獲取
初始值,不能直接向計數器寄存器寫入數據。不管什么時候,只要計數器計數到 0,那么就會從加載寄存器 EPITx_LR 中重新加載數據到計數器中,周而復始。
free-running 模式:此模式下,當計數器計數到 0 以后會重新從0XFFFFFFFF 開始計數,并
不是從加載寄存器 EPITx_LR 中獲取數據。

5.相關配置

(1) 配置PLL1、PLL2、PLL3

(2)、配置時鐘生成樹CLOCK ROOT GENERATOR

(3)驗證配置(使用EPIT外設)

6.EPIT設置步驟

1. 設置 EPIT1 的時鐘源;
2. 設置分頻值 ;
3. 設置工作模式;
4. 設置計數器的初始值來源;
5. 使能比較中斷;
6. 設置加載值和比較值;
7. 設置EPIT1 中斷服務函數;
8. 使能 EPIT1 定時器。

三、GPT通用目的寄存器

輸入捕獲,輸出比較

IMX6U有兩個GPT,全稱為 General Purpose Timer(通用目的的定時器)。GPT 定時器是一個 32 位向上定時器(也就是從 0X00000000 開始向上遞增計數),GPT 定時器也可以跟一個值進行比較,當計數器值和這個值相等的話就發生比較事件,產生比較中斷。GPT 定時器有一個 12 位的分頻器,可以對 GPT 定時器的時鐘源進行分頻。
GPT 定時器特性如下:
① 一個可選時鐘源的 32 位向上計數器;
② 兩個輸入捕獲通道,可以設置觸發方式;
③ 三個輸出比較通道,可以設置輸出模式;
④ 可以生成捕獲中斷、比較中斷和溢出中斷;
⑤ 計數器可以運行在重新啟動(restart)或(自由運行)free-run 模式。
GPT主要使用最主要的寄存器是GPT Control Register (GPTx_CR)寄存器主要的域有:
? SWR(bit15):復位 GPT 定時器,向此位寫 1 就可以復位 GPT 定時器,當 GPT 復位完成以后此為會 自動清零。
? FRR(bit9):運行模式選擇,當此位為 0 的時候比較通道 1 工作在重新啟動(restart)模式。當此位為 1的時候所有的三個比較通道均工作在自由運行模式(free-run)。
? CLKSRC(bit8:6):GPT 定時器時鐘源選擇位,為 0 的時候關閉時鐘源;為 1 的時候選擇ipg_clk 作為時鐘源;為 2 的時候選擇 ipg_clk_highfreq 為時鐘源;為 3 的時候選擇外部時鐘為時鐘源;為 4 的時候選擇 ipg_clk_32k 為時鐘源;為 5 的時候選擇 ip_clk_24M 為時鐘源。我們選擇 ipg_clk 作為 GPT定時器的時鐘源,因此此位設置位 1(0b001)。
? ENMOD(bit1):GPT 使能模式,此位為 0 的時候如果關閉 GPT 定時器,計數器寄存器保存定時器關閉時候的計數值。此位為 1 的時候如果關閉 GPT 定時器,計數器寄存器就會清零。
? EN(bit):GPT 使能位,為 1 的時候使能 GPT 定時器,為 0 的時候關閉 GPT 定時器。
GPT Prescaler Register (GPTx_PR)用于保存分頻值,PRESCALER(bit11:0),這就是 12 位分頻值,可設置 0~4095,分別對應 1~4096 分頻

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

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

相關文章

Python Sqlalchemy數據庫連接

Python Sqlalchemy數據庫連接一、連接數據二、模型三、ORM操作一、連接數據 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 1. 連接數據庫 dbHost postgres://用戶名:密碼主機:端口/數據庫名 engine create_engine(dbHost) # create_engi…

【Node.js】ECMAScript標準 以及 npm安裝

目錄 一、 ECMAScript標準 - 默認導出和導入 二、ECMAScript標準 - 命名導出和導入 三、包的概念 五、 npm - 安裝所有依賴 六、 npm - 全局軟件包 Node.js總結 總結不易~ 本章節對我有很大的收獲, 希望對你也是!!! 本節素材…

NPM 、 NPX

NPM vs. NPX 簡單來說,npm 是一個 node 包管理器,npx 是一個 Node 包執行器。 NPX 是一個 Node 包執行器,該 Node 包可以是本地也可以是遠程的。允許開發者在無需安裝的情況下執行任意 Node 包。npm 在安裝nodejs 就自動帶了 npm install -g …

守護品質安全,防偽溯源系統打造全鏈路信任體系

一、引言在當下這個信息透明、品質至上的時代,防偽溯源已經成為眾多品牌保護自身利益、提升消費者信任度的重要手段。為了滿足市場上對高效、可靠的防偽溯源查詢系統的迫切需求,榕壹云精心打造了一款防偽溯源查詢系統。二、項目背景隨著商品市場的不斷擴…

【完整源碼+數據集+部署教程】無人機航拍視角洪水檢測與受災房屋識別圖像分割救援指導系統源碼和數據集:改進yolo11-DCNV2

背景意義 研究背景與意義 隨著全球氣候變化的加劇,極端天氣事件的頻率和強度不斷上升,洪水作為一種常見的自然災害,給人類社會帶來了嚴重的威脅。洪水不僅導致人員傷亡和財產損失,還對基礎設施和生態環境造成了深遠的影響。因此&a…

C# 結構體與類的區別是什么?

結構體是值類型是儲存在棧中獨立儲存的,數據與數據之間不會相互影響,即使將一個結構體賦值給另外一個結構體也不會相互影響。 類是一個模板,實例出來的對象是獨立的不會相互影響,但是將一個對象賦值給另一個對象時 會把指向堆內存中數據的指針賦值給另一個對象.從而發生兩個變量…

Redis GEO

Redis GEO 引言 Redis 是一款高性能的鍵值存儲系統,廣泛應用于緩存、消息隊列等領域。Redis GEO 是 Redis 2.4 版本后新增的一個功能,用于存儲地理位置信息。本文將詳細介紹 Redis GEO 的概念、使用方法以及應用場景。 什么是 Redis GEO? Redis GEO 是 Redis 的一個模塊…

Go從入門到精通系列學習路線規劃

Go從入門到精通系列學習路線規劃 目錄導航 Go從入門到精通系列學習路線規劃首頁說明 第1篇_Go語言初探_環境搭建與HelloWorld 第2篇_Go語言基礎語法_變量常量與數據類型 第3篇_Go語言控制結構_條件判斷與循環 第4篇_Go語言函數詳解 第5篇_Go語言數據結構詳解 第6篇_Go語言結構體…

Grid系統概述

目錄 概念及功能 網格對象(Grid Object) 和世界對象(World Object) 工作流程 概念及功能 TrinityCore 的 Grid 系統是一套復雜的地圖分區管理機制,其核心目標是通過動態管控游戲世界的區域狀態和對象生命周期&#…

一文搞懂LLM大模型!LLM從入門到精通萬字長文(2024.12月最新)

LLM從入門到精通精品文章 目錄 一、LLM基本概念 二、LLM發展歷程 三、LLM大模型的分類 四、LLM主流大模型類別 五、LLM大模型建立的流程 六、Fine-Tuning 七、Prompt-Tuning 八、超大規模參數模型Prompt-Tuning方法 8.1上下文學習 In-Context Learning 8.2.指令學習 …

Next.js跟React關系(Next.js是基于React庫的全棧框架)(文件系統路由、服務端渲染SSR、靜態生成SSG、增量靜態再生ISR、API路由)

文章目錄**1. React 是基礎,Next.js 是擴展****2. Next.js 解決了 React 的哪些痛點?****3. 核心區別****4. Next.js 的核心特性**1. **文件系統路由**2. **服務端渲染(SSR)**3. **靜態生成(SSG)**4. **增量…

Nightingale源碼Linux進行跨平臺編譯

最近使用Nightingale 需要實現對服務的監測,想要在Windows 系統中使用,看官方文檔中并不直接提供執行程序,原文如下: 準備工作 本地環境 本地已經安裝git 本地安裝git 便于后續下載源碼并進行自動編譯。 Linux操作系統環境&…

抽絲剝繭丨PostgreSQL 系國產數據庫%SYS CPU newfstatat() high 調優一例(二)

續接上回《PostgreSQL 系國產數據庫%SYS CPU newfstatat() high 調優一例(一)》,這個問題還在持續,并且原因并不只是一個,從調了文件系統級atime,到調整wal size減少日志被動清理,還有在驗證tem…

【新手入門】Android Studio 項目結構拆解,快速理解文件作用!

目 錄 一、【Project】視圖下項目結構(真實目錄) 二、【Android】視圖下項目結構 三、【app/】下重要文件解析 1、 build.gradle 2、AndroidManifest.xml 3、res/ 作為剛剛接觸Android開發的小白,使用Android Studio創建項目后&…

Python實現點云Kmeans、歐式和DBSCAN聚類

本節我們分享點云處理中的三種常見聚類方法,分別是K-means、歐氏與 DBSCAN聚類。具體介紹如下:1. K-means 聚類定義:一種基于距離度量的無監督學習算法,將數據劃分為 K 個緊湊的簇,使簇內數據相似度高、簇間差異大。算…

【Java后端】MyBatis-Plus 原理解析

MyBatis-Plus 原理解析 其實 MyBatis-Plus 的 Service 層設計就是為了讓開發者不用重復寫很多樣板代碼。我們來一點點剖析 UserServiceImpl、IService、UserService、ServiceImpl 之間的關系和調用鏈。1. 類/接口關系圖IService<T>▲│UserService (接口) <-- 自定義…

Nacos 注冊中心學習筆記

&#x1f389; Alibaba微服務組件 Nacos 注冊中心超詳細學習筆記 &#x1f389; &#x1f4cc; 寫在前面&#xff1a;本文基于官方PDF文檔與實戰經驗&#xff0c;整理了Nacos注冊中心的核心知識點、部署流程與實戰技巧&#xff0c;力求圖文并茂、通俗易懂&#xff0c;適合收藏反…

java 策略模式 demo

策略模式介紹策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;將每個算法封裝起來并使它們可相互替換。策略模式讓算法的變化獨立于使用算法的客戶端&#xff0c;從而實現靈活的算法切換。核心角色&#xff1…

SAP Valuation Category在制造業成本核算中的使用場景與配置方案

Valuation Category在制造業成本核算中的使用場景與配置方案一、核心使用場景&#xff08;制造業特有&#xff09;1. 內制 vs 外購成本分離業務需求&#xff1a;同一物料可能通過內部生產&#xff08;成本含料工費&#xff09;或外部采購&#xff08;成本含采購價運費&#xff…

我的 LeetCode 日記:Day 36 - 動態規劃,背包問題的千變萬化

昨天&#xff0c;我初步掌握了 0/1 背包問題的理論基礎和標準解法。今天&#xff0c;我將這種思想應用到了更廣泛的場景中。今天的幾道題&#xff0c;乍一看和背包沒什么關系&#xff0c;但通過巧妙的數學轉化&#xff0c;它們的核心都變成了 0/1 背包問題。 這讓我深刻體會到…