6-7 TIM編碼器接口 [江科協STM32]

一、引入

(1)編碼器接口的好處:

  • 節約軟件資源:外部中斷計次,程序頻繁進入中斷,則軟件資源會被簡單頻繁的工作給占用,效率不高
  • 使用定時器的編碼器接口,再配合編碼器,就可以測量旋轉速度和旋轉方向

(2)編碼器測速:

  • 一般應用在電機控制的項目上,使用編碼器測量電機的速度,然后再用PID算法進行閉環控制
  • 一般電機轉速比較高,會選擇無接觸式的霍爾傳感器或者光柵

二、編碼器接口(Encoder Interface

作用可以接收增量(正交)編碼器的信號,根據編碼器旋轉產生的正交信號脈沖,自動控制CNT自增或自減,從而指示編碼器的位置、旋轉方向和旋轉速度
解釋

正交:輸出兩個方波信號,相位相差90度

超前90°——正轉

滯后90°——反轉

原理測頻法正交脈沖的頻率CNT計次,然后每隔一段時間取一次計次
優點可以根據旋轉方向,不僅能自增計次,還能自減計次,是一個帶方向的計次
特點

每個高級定時器和通用定時器都擁有一個編碼器接口

如果一個定時器配置成了編碼器接口模式,基本上就干不了其他活了

C8T6芯片只有TIM1-4總共4個計時器,所以最多只能接4個編碼器

也可以通過外部中斷來接編碼器——通過軟件資源彌補硬件資源

兩個輸入引腳借用了輸入捕獲的通道1和通道2

(編碼器的兩個輸入引腳就是定時器的CH1和CH2引腳,CH3和CH4不能接編碼器)

定位編碼器接口模式基本上相當于使用了一個帶有方向選擇的外部時鐘

三、正交編碼器

功能測量位置、或者帶有方向的速度值
配置

一般有兩個信號輸出引腳,一個是A相,一個是B相

正交信號優勢

①精度更高:A、B相都可以計次,相當于計次頻率提高一杯

②可抗噪聲:正交信號必須交替跳變,所以可以設計一個抗噪聲電路,如果一個信號不變,另一個信號連續跳變,也就是產生了噪聲,這時計次值是不會變化的

編碼器接口設計邏輯

將A相和B相素有的邊沿作為計數器的計數時鐘,出現邊沿信號時計數自增or自減

②判斷計數是增還是減:計數方向由另一相的狀態來確定,當出現某個邊沿時,判斷另一相的高低電平

四、編碼器接口的電路結構

高級定時器和通用定時器都是一樣的,每個定時器都只有一個編碼器接口基本定時器是沒有編碼器接口

(1)編碼器接口的輸入連接與核心資源

編碼器接口的核心功能是通過檢測編碼器 A 相、B 相的相位信號實現計數,其輸入部分的硬件與資源關聯如下:

編碼器的 A 相、B 相分別連接到編碼器接口的兩個輸入端,這兩個輸入端復用了定時器輸入捕獲單元的前兩個通道(CH1 和 CH2),即編碼器的實際輸入引腳為定時器的 CH1 和 CH2 引腳
輸入捕獲單元的 CH3、CH4 與編碼器接口無關,不參與編碼器信號的處理。

(2)編碼器接口對輸入捕獲資源的復用

編碼器接口雖然復用了 CH1CH2 通道,但并非使用輸入捕獲單元的全部功能,具體復用的資源包括:

輸入捕獲濾波器CH1 和 CH2 通道配置的輸入濾波器會被編碼器接口使用,用于對 A 相、B 相的輸入信號進行濾波減少噪聲干擾(例如通過設置濾波系數,濾除高頻毛刺)。
邊沿檢測電路CH1 和 CH2 通道的邊沿檢測功能(上升沿 / 下降沿檢測)也會被編碼器接口利用,用于捕捉 A 相、B 相信號的跳變,作為計數觸發的依據

(3)與編碼器接口無關的輸入捕獲資源

輸入捕獲預分頻器輸入捕獲單元的預分頻器(用于控制捕獲信號的分頻)不影響編碼器接口,因為編碼器的計數觸發直接由 A 相、B 相的邊沿信號決定,無需對信號進行分頻處理

捕獲比較寄存器

(CCR)

CCR 是輸入捕獲模式下用于存儲捕獲時刻計數器值的寄存器,而編碼器接口的核心是通過 A、B 相信號控制計數器(CNT)的增減,無需使用 CCR 寄存器

(4)編碼器接口對計數的控制邏輯

編碼器接口的輸出部分本質上是一個 “從模式控制器”,其核心作用是根據 A 相、B 相的信號狀態控制計數器(CNT)的計數行為(計數時鐘和計數方向)

計數時鐘不依賴定時器的內部時鐘(如 72MHz 內部時鐘),而是以 A 相、B 相的邊沿信號作為計數觸發時鐘
計數方向

不受時基單元初始化時設置的計數方向影響,而是由 A 相、B 相的相位關系決定:

當檢測到某一相的邊沿信號時,通過判斷另一相的當前狀態(高 / 低電平)

若符合 “正轉” 相位關系則控制 CNT 自增,若符合 “反轉” 相位關系則控制 CNT 自減。

此時的計數時鐘和計數方向都處于編碼器接口托管的狀態

五、編碼器接口的基本結構

(一)連接方式

輸入捕獲的前兩個通道,通過GPIO口接入編碼器的A、B相,然后通過濾波器邊沿檢測極性選擇,產生TI1FP1和TI2FP2 ,通向編碼器接口,編碼器接口通過預分頻器控制CNT計數器的時鐘,同時編碼器接口根據編碼器的旋轉方向控制CNT的計數方向

(二)運行邏輯

編碼器正轉時,CNT自增,編碼器反轉時,CNT自減

(三)使用補碼的特性

這里ARR是有效的,一般設置ARR為最大量程65535,這樣利用補碼的特性很容易得到負數:

如正轉,CNT正常自增;但反轉CNT自減,0減一下,是65535,65534,65533

將65535這個16位無符號數轉為16位的有符號數,根據補碼的定義,65535對應-1,65534對應-2,65533對應-3

六、工作細節

下表描述的就是編碼器接口的工作邏輯

TI1FP1和TI2FP2就是A、B相,在A相和B相的上升沿或者下降沿觸發計數

是向上計數還是向下計數呢?

取決于邊沿信號發生的這一時刻,另一相的電平狀態(即上標的相對信號的電平)

  • 僅在TI1(TI2)計數,就是僅在一相的邊沿技術,另一相邊沿忽略,不計數

僅在TI1計數:僅在A相的上升沿和下降沿自增或自減,而B相的這兩個狀態忽略掉,不執行計數

僅在TI2計數:僅在B相的上升沿和下降沿計數,A相的邊沿忽略,不計數

  • 在TI1和TI2上計數(一般用這個模式):

如果A相上升沿、A相下降沿、B相上升沿、B相下降沿這四種狀態都執行自增或自減,即A相和B相的邊沿都計數,正轉的狀態都向上計數,反轉的狀態都向下計數

七、例子

(一)實例1——兩個引腳都不反相

? ??展示計數方向邏輯與正交編碼器抗噪聲的原理

????上圖使用的就是兩個引腳的邊沿都計數的模式

? ? 這里是TI1和TI2的時序信號,下面是計數器值的變化情況

第一個狀態TI1上升沿,TI2低電平向上計數
第一個狀態TI1高電平,TI2上升沿向上計數
第一個狀態TI1下降沿,TI2高電平向上計數
第一個狀態TI1低電平,TI2下降沿向上計數
毛刺狀態

展示抗噪聲原理:

TI2沒有變化,TI1卻跳變了好幾次

這不符合正交信號的變化規律

這樣就可以將這個噪聲濾掉

TI1上升沿,TI2低電平,向上計數

TI1下降沿,TI2低電平,向下計數

TI1上升沿,TI2低電平,自增

TI1下降沿,TI2低電平,自減

因此在出現毛刺現象的時候,計數器就會加、減、加、減來回擺動,最終的計數值還是原來的那個值

第三個狀態TI2上升沿,TI1低電平向下計數
第三個狀態

TI2高電平,TI1上升沿

向下計數
第三個狀態

TI2下降沿,TI1高電平

向下計數
第三個狀態TI2低電平,TI1下降沿向下計數

(二)實例2——TI1反相、TI2不反相

? ? ?展示極性的變化對計數的影響

TI1反相是什么意思?——首先要理解這個極性選擇的作用是什么

  • TI1和TI2進來都會經過這個極性選擇的部分,在輸入捕獲的情況下,這個極性選擇是選擇上升沿有效還是下降沿有效
  • 但是編碼器接口顯然始終都是上升沿和下降沿都有效的,上升沿和下降沿都需要計次的

所以在編碼器接口這里就不再是邊沿的極性選擇了,而是高低電平的極性選擇

選擇上升沿的參數信號直通過來,高低電平極性不反轉;
選擇下降沿的參數信號通過一個非門過來,高低電平極性反轉

這意味著存在兩個控制極性的參數,用于決定是否對 TI1 或 TI2 的信號進行極性反轉

均不反相TI1 和 TI2 都不進行反轉
TI1 反相選擇對 TI1 的信號進行處理時,即 TI1 高低電平取反,這才是反相后實際給編碼器接口的電平
  • 需要注意的是,在分析過程中,如果直接將 TI1 和 TI2 畫成輸入信號并對照相關表格,得到的計數方向可能是錯誤的。
  • 因為 TI1 反相后,實際給到編碼器接口的電平是 TI1 高低電平取反后的結果。
  • 例如:第一個狀態原本是 TI1 上升沿、TI2 低電平,經過 TI1 反相后,實際狀態變為 TI1 下降沿、TI2 低電平,此時編碼器會向下計數。

實例1和實例2的計數方向是相反的,這有什么用呢?

比如,當連接一個編碼器時,若發現其數據的加減方向與預期相反 —— 即正轉時計數器自減,反轉時計數器自增,這時就可以通過調整極性來解決,只需將任意一個引腳(TI1 或 TI2)進行反相,就能實現計數方向的反轉。不過,實際上想要反轉計數方向,也可以直接將 A、B 相兩個引腳互換。

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

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

相關文章

01數據結構-交換排序

01數據結構-交換排序1.冒泡排序1.1基礎冒泡排序1.1.1基礎冒泡排序代碼實現1.2冒泡排序的一次優化1.2.1冒泡排序的第一次優化代碼實現1.3冒泡排序的二次優化1.3.1 冒泡排序的二次優化代碼實現2.快速排序2.1雙邊循環法2.1.1雙邊循環法的代碼實現2.2單邊循環法2.2.1單邊循環法代碼…

MySQL架構和儲存引擎

MySQL服務器整體架構如下:連接層:連接層的作用是處理客戶端的連接,如何管理連接的。網絡端口和連接管理線程:網絡端口:一臺服務器可以連接網絡上多個端口的客戶連接,只需要開放多個端口,只需要在…

詳解flink java基礎(一)

文章目錄1.流式處理flink介紹2.Flink SQL介紹3. Flink Runtime4.使用flink集成kafka5.使用Flink SQL進行有狀態流處理6.Event time & Watermarks7. flink Checkpoints & recovery1.流式處理flink介紹 實時服務依賴流式處理: flink優點: 高性能豐富的特性&#xff1a…

Day119 持續集成docker+jenkins

Day119 dockerjenkins 1.Dockerfile Dockerfile 可以用于項目部署。通過編寫 Dockerfile,可以將整個項目及其所需的依賴項打包到一個 Docker 鏡像中,然后在任何支持 Docker 的環境中部署和運行該鏡像 Dockerfile 是用于構建 Docker 鏡像的文本文件。它包…

Vue3+Vite MPA多頁面應用開發完整指南 – 從零搭建到部署優化

什么是 MPA 多頁面應用 MPA(Multi-Page Application)是由多個獨立的 HTML 頁面組成的應用,每個頁面都有獨立的入口文件。與 SPA 不同,MPA 的每個頁面都是獨立的,頁面間通過鏈接跳轉,適合大型項目或需要 SE…

【企業級架構】企業戰略到技術落地的全流程【第一篇】

目錄 一、人生藍圖與企業羅盤:戰略視角下的成長架構 1. 大學畢業迷茫期 → 企業未制定戰略前:無方向、無目標? 2. 制定職業規劃 → 企業戰略制定:明確 “去哪” 和 “分幾步走”? 3. 盤點自身能力差距 → 業務架構梳理:搞清…

(二) Python + 地球信息科學與技術 = 經典案例分析

目錄 四、農業精準施肥與產量預測(植被指數 機器學習) 五、公共場所踩踏事故預警系統(時空大數據 Web 開發) 六、森林火災智能識別與救援路徑規劃(遙感 路徑優化) 七、海岸線侵蝕動態監測與防護&…

從需求到部署全套方案:餐飲服務許可證數據可視化分析系統的大數據技術實戰

🎓 作者:計算機畢設小月哥 | 軟件開發專家 🖥? 簡介:8年計算機軟件程序開發經驗。精通Java、Python、微信小程序、安卓、大數據、PHP、.NET|C#、Golang等技術棧。 🛠? 專業服務 🛠? 需求定制化開發源碼提…

Qt 關于QString和std::string數據截斷的問題- 遇到\0或者0x00如何處理?

Qt 關于QString和std::string數據截斷的問題- 遇到\0或者0x00如何處理?引言一、解決方案二、使用QByteArray注意事項引言 在Qt開發中,使用QString或std::string獲取、發送字符串時,遇到\0(空字符)或者0x00(十六進制表示)可能導致數據截斷&am…

Spring Cloud LoadBalancer 最佳實踐

Ribbon 曾經是 Spring Cloud 家族默認的客戶端負載均衡工具,而 Spring Cloud LoadBalancer (SCLB) 是官方替換 Ribbon 的新實現。表面上它們都解決 “服務調用時選哪個實例” 的問題,但在理念、架構和生態上差異不小。一、Ribbon vs SCLB1. 定位和生態…

【STM32】SPI 與 Flash 筆記

1?? SPI(Serial Peripheral Interface,串行外設接口)英文解釋: Serial:串行Peripheral:外設Interface:接口用途:MCU 與外部設備(Flash、傳感器等)高速數據通…

抽象工廠設計模式 Abstract Factory

抽象工廠抽象工廠設計模式是一種創建模式,它提供了一個用于創建相關或從屬對象族的接口,而無需指定其具體類。 它在以下情況下特別有用: 您需要創建必須一起使用并且是一致系列的一部分的對象(例如,按鈕、復選框和菜單…

WSL 下的虛擬網卡配置

第一部分:Windows 虛擬網卡創建指南 1. 原理 在 Windows 里,“虛擬網卡”本質是由網絡驅動在系統網絡棧中創建的一個 軟件網卡接口。它的作用和物理網卡類似,只不過不直接連接到物理硬件,而是通過內核網絡驅動與宿主機網絡進行交換…

Dify web前端源碼本地部署詳細教程

目錄 1. 先啟動API 2. 啟動worker服務 3. 啟動web 4. 訪問登陸地址 在前面的文章中,Dify源碼部署,搭建二次開發環境(一) 已經記錄了如何在本地啟動API、work、中間件。在本篇文章中,將概述如何啟動dify web源碼項…

CVPR 2025|英偉達聯合牛津大學提出面向3D醫學成像的統一分割基礎模型

在 2D 自然圖像和視頻的交互式分割領域,基礎模型已引發廣泛關注,這也促使人們開始構建用于醫學成像的 3D 基礎模型。然而,3D 醫學成像存在的領域差異以及臨床應用場景,要求開發一種有別于現有 2D 解決方案的專用模型。具體而言&am…

解決“Win7共享文件夾其他電腦網絡無法發現共享電腦名稱”的問題

要讓運行 Windows 7 的電腦被局域網中其他設備(包括另一臺電腦、手機、NAS 等)“發現”,必須同時滿足三個條件: 網絡發現功能已啟用;對應的后臺服務已啟動;防火墻規則放行。 下面給出最簡、最穩妥的 3 步設…

Python pyzmq 庫詳解:從入門到高性能分布式通信

一、前言 在現代軟件開發中,進程間通信(IPC)與分布式系統通信已經成為基礎能力。無論是構建一個微服務架構的后端,還是實現大規模并行計算任務,如何讓不同的進程或節點之間高效地傳遞消息,都是核心問題。 傳…

CentOS 7更換國內鏡像源

第一步:檢查系統版本 在修改任何配置之前,先確定你的 CentOS 版本,因為不同版本的鏡像源配置文件不同。 cat /etc/redhat-release這個命令會顯示你的 CentOS 版本信息,例如 CentOS Linux release 7.9.2009 (Core)。從你的錯誤日志…

詳解 doclayout_yolo:Python 文檔布局檢測

目錄一、doclayout_yolo 核心功能二、安裝方法1. 直接安裝2. 通過 PDF-Extract-Kit 安裝三、使用示例1. 快速體驗(HuggingFace Demo)2. 本地推理代碼3. 批量處理四、技術亮點五、應用場景六、其他說明1.相關資源2. 注意事項doclayout_yolo 是一個基于 Y…

貓頭虎AI分享|一款Coze、Dify類開源AI應用超級智能體Agent快速構建工具:FastbuildAI

貓頭虎AI分享|一款 Coze、Dify 類開源 AI 應用超級智能體快速構建工具:FastbuildAI 區別在于它的易用度和商業閉環功能 摘要:FastbuildAI 是一個開源的 AI 應用“快速構建 商業化閉環”工具。它讓個人開發者與小團隊用 可視化 零代碼 的方…