STM32的TIMx中Prescaler和ClockDivision的區別

????????Prescaler預分頻,以筆者目前的學習程度來說,這個參數,一般來說是對主時鐘進行分頻后的計數器時鐘。這個預分頻后的時鐘主要是用于的計數的。

? ? ? ? 這個主時鐘,對于時基單元來說可以是內部時鐘,也可以是外部時鐘。一般來說我們的內部時鐘是72MHZ的,經過預分頻比如????Prescaler = 72-1;那么現在的計數時鐘是1MHZ。

????????對于外部時鐘來說,首先這個外部時鐘是通過GPIO口輸入來作為時基單元的主時鐘的,那么這個時候設置的PSC參數就是對外部時鐘分頻,舉個例子:比如我們把對射式光耦的觸發頻率作為主時鐘頻率,顯然這個時鐘是一個不穩定的偶發性時鐘,完全取決于它的光耦觸發頻率。然后呢我們再設置時基單元的PSC = 2-1;那么現在的時鐘頻率就是feq_CK_CNT = 光耦觸發頻率 / (2-1)+1; 相當于光耦觸發兩次,計數器就會加1.

? ? ? ? 那么對于CLockDivision,這個主要是對定時器的主時鐘進行分頻主要用于濾波,一般來說這個時鐘就是內部時鐘72MHZ,所以定時器濾波的采樣時鐘(目前筆者認為是針對外部觸發或者輸入捕獲的)可以直接是這個主時鐘頻率72MHZ也可以是分頻后的頻率比如2分頻是36MHZ,這個分頻后的頻率寫為fDTS。

????????舉個例子,假設主時鐘頻率是 72MHz,CKD 設置為分頻因子 2,那么 fDTS 的頻率就是 36MHz。此時,如果數字濾波器使用這個 fDTS 作為采樣時鐘,每個采樣周期的時間是 1/36MHz≈27.78ns。如果設置濾波器的采樣次數為 4 次,那么有效的濾波時間就是 4*27.78≈111ns,即只有信號穩定超過這個時間才會被確認。如果 CKD 設置為分頻因子 4,fDTS 為 18MHz,采樣周期為 55.56ns,四次采樣就是 222ns,這樣濾波時間更長,可以濾除更寬的脈沖噪聲,但信號變化的檢測會有更大的延遲。

STM32 定時器的外部時鐘輸入(如 ETR 引腳)最大頻率為?APB 時鐘的 1/4。若 APB 時鐘為 72MHz,則外部輸入信號最高為?18MHz

看一下手冊上相關的部分的說明:

其實這個圖筆者看不太懂,如果這個tDTS代表頻率的話好像和上文的陳述相反的,如果tDTS代表的是采樣時間的話那確實是正確的,比如10:代表4分頻,4分頻后的采樣時間是不分頻的4倍。

這個主要是針對ETR設置的,具體操作庫函數是:

????????TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler,?
? ?uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);第二個參數是PSC的設置聯系上下文,這個參數我們設置為2即TIM_ExtTRGPSC_DIV2,那代表光耦工作兩次計數器加1.

????????這個最后一項的參數就是寄存器ETF的相關設置,設置的就是外部觸發濾波的方式共16種,這里說明一下這個框圖里的描述“它記錄到N個事件后會產生一個輸出的跳變”,這里的N個事件指代的是什么意思?一開始筆者把它和PSC能混了,以為這個事件是指光耦的跳變電平信號,N個事件就是指N個跳變電平信號。其實不然,如果觸發電平是上升沿,那么N個事件就是說在上升沿往后的N個采樣周期內采樣到的電平都是高電平,同理如果觸發電平是下降沿,那么N個事件就是說在下降沿往后的N個采樣周期內采樣到的電平都是低電平。

? ? ? ? 0000的采樣頻率是fDTS,這個是分頻后的頻率。

? ? ? ? 0001的采用頻率是fCK_INT這個頻率應該是內部時鐘的頻率,一般來說是72MHZ

? ? ? ?0100的采樣頻率是fDTS/2這個是分頻后的頻率再分頻,它的采樣頻率更低了。這個fDTS筆者認為應該是在時基單元的結構體中設置了。

上圖的兩個PSC都可以對ETR的輸入時鐘分頻,但是建議用時基單元里的PSC預分頻,外部時鐘函數配置的預分頻,它的第一個觸發信號就會使計數器加1(4分頻也是如此),但是后續的還是按照分頻倍數觸發的。時基單元設置的PSC就不會有這個問題。 具體原因不清楚。


對于輸入信號的處理,區別分辯不同場景輸入信號的處理方式(下文來著deepseek)

一、功能對比

功能模塊ETR 外部觸發通道定時器輸入通道(CH1-CH4)外部中斷(EXTI)
核心用途外部時鐘同步或觸發定時器操作輸入捕獲(頻率、脈寬測量)、PWM 輸入快速響應外部電平 / 邊沿變化
信號處理能力支持高頻信號(最高 APB/4)支持高頻信號(受定時器時鐘限制)低頻信號(依賴中斷響應速度)
硬件資源定時器專用引腳(如 TIMx_ETR)定時器復用引腳(TIMx_CH1~CH4)任意 GPIO(需配置為 EXTI)
信號濾波可配置數字濾波器(基于 tDTS)可配置數字濾波器(基于 tDTS)無硬件濾波,依賴軟件去抖
分頻 / 預分頻支持外部時鐘預分頻(ETRPSC)支持輸入捕獲分頻(ICPSC)無分頻,直接響應邊沿
觸發事件類型上升沿、下降沿、雙邊沿上升沿、下降沿、雙邊沿上升沿、下降沿、雙邊沿
中斷 / DMA 支持支持觸發中斷或 DMA 請求支持輸入捕獲中斷或 DMA僅支持中斷

二、應用場景對比

1. ETR 外部觸發通道

  • 適用場景
    • 高頻外部時鐘輸入(如外部晶振、高速脈沖計數)。
    • 定時器級聯(主從模式,同步多個定時器)。
    • 精確觸發 ADC/DAC 等外設(通過定時器觸發輸出)。
  • 示例
    使用 ETR 引腳接收 18MHz 外部時鐘,驅動定時器計數(PSC=0),實現高精度計時。

2. 定時器輸入通道(CH1-CH4)

  • 適用場景
    • PWM 輸入模式測量占空比和頻率(如電機控制)。
    • 編碼器接口(正交編碼信號解碼)。
    • 輸入捕獲測量脈沖寬度(超聲波測距、紅外通信)。
  • 示例
    配置 TIMx_CH1 為輸入捕獲模式,測量 10kHz PWM 信號的上升沿和下降沿時間差,計算占空比。

3. 外部中斷(EXTI)

  • 適用場景
    • 按鍵檢測(低頻率、非精確時序需求)。
    • 快速響應外部事件(如緊急停止信號)。
    • 簡單電平狀態監控(如傳感器觸發)。
  • 示例
    配置 EXTI13(連接按鍵 GPIO)為下降沿觸發,檢測按鍵按下事件并喚醒 MCU。

????

三、關鍵差異總結

  1. 信號處理能力

    • ETR:專為高頻信號設計,支持外部時鐘輸入和復雜觸發邏輯。
    • 定時器輸入通道:適合中高頻信號的時間參數測量(如脈寬、頻率)。
    • EXTI:僅適合低頻事件響應,無法處理高頻或精確時序需求。
  2. 硬件集成度

    • ETR / 定時器通道:與定時器深度集成,支持濾波、分頻等硬件預處理。
    • EXTI:獨立于定時器,依賴軟件處理信號抖動和事件響應。
  3. 中斷響應速度

    • ETR / 定時器通道:通過硬件自動記錄時間戳,中斷延遲對測量精度無影響。
    • EXTI:中斷延遲(通常 1~2μs)直接影響事件響應實時性。

四、替代性分析

1. 何時可以互相替代?

  • 低頻事件檢測(如按鍵檢測):
    EXTI 和定時器輸入通道均可實現,但 EXTI 更節省資源。
  • 邊沿觸發計數
    ETR 和輸入通道均可實現,但 ETR 適合高頻,輸入通道適合帶時間戳的計數。

2. 何時不可替代?

  • 高頻信號處理(>100kHz):必須使用 ETR 或定時器輸入通道。
  • 精確時間測量(如超聲波測距):必須使用定時器輸入捕獲。
  • 硬件級信號同步(如 ADC 觸發):必須使用 ETR 或定時器觸發輸出。

5、配置建議

  1. 高頻信號(>1MHz)

    • 首選 ETR 外部時鐘模式,配合預分頻器(ETRPSC)降低頻率至 APB/4 以內。
    • 例:144MHz 信號 → 外部分頻 8 倍 → 18MHz → ETR 輸入。
    • 這個其實外部搞一個分頻功能的芯片,把144MHZ的頻率降低到18MHZ再接入單片機
  2. 中頻信號(10kHz~1MHz)

    • 使用定時器輸入捕獲通道,開啟數字濾波(ICF)抗噪聲。
    • 例:測量 100kHz PWM 占空比,配置 ICPSC 分頻和雙邊沿捕獲。
  3. 低頻事件(<10kHz)

    • 使用 EXTI,配合軟件去抖(如定時器輪詢或二次檢測)。
    • 例:檢測按鍵按下,EXTI 觸發中斷后啟動防抖延時。


然后對這個濾波器筆者自己的一些猜想和看法,首先由DEEPSEEK指出,高頻信號適用的是ETR端口,但是ETR端口最大采樣頻率是18MHZ,為什么會這樣呢?

從濾波邏輯來說,72M的每個周期都用于檢測信號的話最大也只能能檢測72MHZ的外源波形 ,如果我們極端點外源信號是144MHZ,那么可見的無論你怎么挑選檢測周期,72M的每個周期內必然檢測到邊沿信號,一旦檢測到邊沿跳變信號,信號就會被濾波器認為不穩定而過濾掉,因此它就不會輸出任何信號。所以不同頻率的信號要采用合適的頻率濾波。

(筆者覺得濾波功能起碼包括三個階段,開始濾波,檢測信號,結束濾波,三部分最少要三個周期? 。如果加上等待周期什么的,因此72MHZ的主頻只能檢測18MHZ的信號是可以理解的,因為極限也就24MHZ。)這是根據I2C,UART,SPI通訊邏輯的時序聯想,沒有其它的依據額。

?????????

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

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

相關文章

前端性能指標及優化策略——從加載、渲染和交互階段分別解讀詳解并以Webpack+Vue項目為例進行解讀

按照加載階段、渲染階段和交互階段三個維度進行系統性闡述&#xff1a; 在現代 Web 開發中&#xff0c;性能不再是錦上添花&#xff0c;而是決定用戶體驗與業務成敗的關鍵因素。為了全面監控與優化網頁性能&#xff0c;我們可以將性能指標劃分為加載階段、渲染階段、和交互階段…

MySQL——1、數據庫基礎

數據庫基礎 1、安裝MySQL2、什么是數據庫3、數據庫使用案例4、MySQL架構與SQL分類5、存儲引擎 1、安裝MySQL 1、更新軟件包列表 sudo apt update2、查看MySQL安裝包 apt list | grep mysql-server3、安裝MySQL # 默認安裝最新版 sudo apt install -y mysql-server4、啟動My…

ET MailBoxComponent類(實體) 分析

MailBoxComponent 作用是&#xff0c;用來接收Actor消息&#xff0c;處理Actor消息。這個沒有存儲能&#xff0c;收到消息后立即就處理了。ParentInstanceId 是MailBox所在的實體InstanceIdMailBoxType MailBox類型MailBoxInvoker 分發消息的包裝Add 方法&#xff0c;看名字是…

Weblogic SSRF漏洞復現(CVE-2014-4210)【vulhub靶場】

漏洞概述&#xff1a; Weblogic中存在一個SSRF漏洞&#xff0c;利用該漏洞可以發送任意HTTP請求&#xff0c;進而攻擊內網中redis、fastcgi等脆弱組件。 漏洞形成原因&#xff1a; WebLogic Server 的 UDDI 組件&#xff08;uddiexplorer.war&#xff09;中的 SearchPublicR…

js應用opencv

思路&#xff1a; 第一步&#xff1a;直方圖 第二步&#xff1a;獲得直方圖的波峰 第三步&#xff1a;波峰勝負10&#xff0c;高于或低于變紅色 1.引用import cv from ‘techstark/opencv-js’; 2.vue代碼 <div class"historyLeft2"><div style"relat…

用Python代碼繪制動態3D愛心效果

引言 介紹Python在創意編程中的應用&#xff0c;特別是如何通過簡單的代碼實現視覺上的美感。引出本文將分享的愛心代碼&#xff0c;并簡要說明其實現原理。 愛心代碼的基本實現 展示一個簡單的Python代碼示例&#xff0c;使用字符畫的方式在控制臺中繪制一個愛心圖案。 pr…

使用Python開發經典俄羅斯方塊游戲

使用Python開發經典俄羅斯方塊游戲 在這篇教程中&#xff0c;我們將學習如何使用Python和Pygame庫開發一個經典的俄羅斯方塊游戲。這個項目將幫助你理解游戲開發的基本概念&#xff0c;包括圖形界面、用戶輸入處理、碰撞檢測等重要內容。 項目概述 我們將實現以下功能&…

兼顧長、短視頻任務的無人機具身理解!AirVista-II:面向動態場景語義理解的無人機具身智能體系統

作者&#xff1a;Fei Lin 1 ^{1} 1, Yonglin Tian 2 ^{2} 2, Tengchao Zhang 1 ^{1} 1, Jun Huang 1 ^{1} 1, Sangtian Guan 1 ^{1} 1, and Fei-Yue Wang 2 , 1 ^{2,1} 2,1單位&#xff1a; 1 ^{1} 1澳門科技大學創新工程學院工程科學系&#xff0c; 2 ^{2} 2中科院自動化研究所…

【藍橋杯省賽真題49】python偶數 第十五屆藍橋杯青少組Python編程省賽真題解析

python偶數 第十五屆藍橋杯青少組python比賽省賽真題詳細解析 博主推薦 所有考級比賽學習相關資料合集【推薦收藏】1、Python比賽 信息素養大賽Python編程挑戰賽 藍橋杯python選拔賽真題詳解

鴻蒙(HarmonyOS)應用開發入門教程

目錄 第一章:鴻蒙系統簡介 1.1 什么是鴻蒙系統? 1.2 鴻蒙系統架構 第二章:開發環境搭建 2.1 安裝DevEco Studio 步驟1:下載與安裝 步驟2:首次配置 步驟3:設備準備 2.2 創建第一個項目 第三章:鴻蒙應用開發基礎 3.1 核心概念:Ability與AbilitySlice 示例代碼…

VM中 ubuntu 網卡不顯示

1.添加網卡配置 #sudo nano /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:ens33:dhcp4: trueens37:dhcp4: trueens38:dhcp4: true#保存后 sudo netplan apply2.查看網絡狀態 sudo systemctl start systemd-networkd sudo systemctl status sy…

阿克曼-幻宇機器人系列教程3- 機器人交互實踐(Message)

上一篇文章介紹了如何通過topic操作命令實現與機器人的交互&#xff0c;本篇我們介紹如何通過Message&#xff08;即topic的下一級&#xff09;實現與機器人的交互。 和topic一樣&#xff0c;首先在一個終端通過ssh命令登錄機器人、啟動機器人&#xff0c;然后打開另外一個終端…

Python 調試擴展版本兼容問題解決紀實

在 Python 開發中&#xff0c;調試工具的正常使用對效率至關重要。近期在公司項目中&#xff0c;便遇到了 Python 調試擴展與版本不兼容的問題。公司 ERP 服務器采用 Ubuntu 18.04 系統&#xff0c;其標配 Python 版本為 3.6&#xff0c;而常用的 Python Debugger 擴展對版本有…

React 第四十二節 Router 中useLoaderData的用途詳解

一、前言 useLoaderData&#xff0c;用于在組件中獲取路由預加載的數據。它通常與路由配置中的 loader 函數配合使用&#xff0c;用于在頁面渲染前異步獲取數據&#xff08;如 API 請求&#xff09;&#xff0c;并將數據直接注入組件&#xff0c;從而簡化數據流管理。 二、us…

Linux——mysql主從復制與讀寫分離

目錄 一&#xff0c;理解什么是mysql主從復制 1&#xff0c;mysql支持的復制類型 2&#xff0c;mysql主從復制的工作流程 二&#xff0c;配置mysql主從復制 三&#xff0c;配置mysql主主復制 四&#xff0c;mysql讀寫分離 1&#xff0c;了解什么是mysql讀寫分離 2&…

MongoDB數據庫深度解析:架構、特性與應用場景

在現代應用程序開發中&#xff0c;數據存儲技術的選擇至關重要。在眾多的數據庫管理系統中&#xff0c;MongoDB以其靈活性和強大的功能迅速崛起&#xff0c;成為NoSQL數據庫中的佼佼者。本文將深入解析MongoDB的架構、核心特性、性能優化及其在實際應用中的最佳實踐&#xff0c…

3D曲面上的TSP問題(一):曲面上點集距離求解

3D曲面上&#xff0c;兩點的距離求解不能采用歐式距離&#xff0c;而需要計算測地線距離。 代碼使用CGAL 5.6.2 OpenCV 4.11.0 版本實現 #include "cgal_utils.h" #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_…

【歌曲結構】2:小節與歌曲結構信息整合

歌曲小節與結構信息整合 我將為您整合小節信息與歌曲結構,創建一個更加詳細的JSON數據結構。 處理方法 將小節時間與歌曲結構段落進行匹配為每個小節添加所屬段落信息為小節添加格式化的時間戳為小節添加對應時間范圍內的歌詞{"song_title": "財神廟前許三億…

C語言:深入理解指針(3)

目錄 一、數組名的理解 二、用指針訪問數組 三、一維數組傳參的本質 四、冒泡排序 五、二級指針 六、指針數組 七、指針數組模擬二維數組 八、結語 一、數組名的理解 數組名其實就是首元素的地址 int arr[3] {1,2,3}; printf("arr :%p\n" ,arr); printf(…

Spring MVC 接口的訪問方法如何設置

RequestMapping 是 Spring 框架中用于映射 HTTP 請求到控制器方法的注解。它支持以下 HTTP 方法訪問類型&#xff0c;通過 method 屬性指定&#xff1a; GET&#xff1a;用于獲取資源POST&#xff1a;用于提交數據PUT&#xff1a;用于更新資源DELETE&#xff1a;用于刪除資源PA…