編碼器是什么?STM32編碼器接口及應(yīng)用編程
作者:strongerHuang
微信公眾號:strongerHuang
編碼器是一種比較常見的產(chǎn)品(也可以理解為傳感器),最常見的就是配合電機一起工作,那么,你對編碼器有多了解呢?
一、關(guān)于編碼器
二、STM32編碼器接口模式
在STM32芯片中,都有這么一個定時器,叫通用定時器“General-purpose timers”,定時器里面存在這么一個模式,叫編碼器接口模式“Encoder interface mode”。當然,具體可參看芯片對應(yīng)的數(shù)據(jù)手冊。
STM32提供的編碼器接口模式主要針對的就是“正交編碼器”,它可以利用定時器的“計數(shù)”功能,得出編碼器計了多少個脈沖;同時,它可以根據(jù)編碼器AB的相位得出編碼器是正轉(zhuǎn),還是反轉(zhuǎn)。
(圖片來自STM32參考手冊)
1.計算脈沖個數(shù)
有點類似TIM的捕獲功能,捕獲A相、B相的脈沖信號;只是編碼器模式是捕獲A(TI1)、B(TI2)相的邊沿信號(如上圖),相當于一個周期內(nèi),計4個脈沖信號的值。
2.計數(shù)器的增減(方向)
STM32的計數(shù)器會根據(jù)方向(+ 或者 -)來進行計數(shù),TI1和TI2相位相差90,4個階段的邊沿,對應(yīng)TI1和TI2不同電平信號,從這個不同的信號,硬件自身可以判斷出其方向。在編碼器模式下,有個寄存器(TIMx_CR1)中有一個方向位(DIR),會隨著編碼器旋轉(zhuǎn)方向的改變而改變,我們可以通過讀取該位來判斷編碼器的正轉(zhuǎn),還是反轉(zhuǎn)。
3.TIM時基
STM32編碼器接口模式,其實是通過利用AB相位TIM時基提供時鐘信號,使其計數(shù)。
相信看了上面的一些描述,大家應(yīng)該對編碼器有所理解了。其實,在STM32中,可以通過配置編碼器模式對應(yīng)的函數(shù),就能實現(xiàn)獲取編碼器傳感器上面的信息了。
使用STM32提供的標準外設(shè)庫,或者使用STM32CubeMX工具很容易將TIM配置成編碼器模式。
1.標準外設(shè)庫配置編碼器
TIM_EncoderInterfaceConfig,它就是編碼器接口的配置函數(shù)。簡單的只需要配置該函數(shù),使能TIM,即可實現(xiàn)采集編碼器上面的信息。(當然,需要復雜的操作,還需要做其他相應(yīng)的配置)
2.STM32CubeMX配置
STM32CubeMX是一套快速開發(fā)的工具,讓很多不了解STM32底層的朋友可以快速的在STM32上編寫應(yīng)用程序。
本文說的配置編碼器接口,在某些TIM上存在一個“Combined Channel”配置,可以理解為“連接通道”,也算是TIM的一種復用模式。選擇里面的“Encoder Mode”即可。
四、實例代碼
本文提供的代碼為一個使用標準外設(shè)庫編寫的簡單Demo工程,其中里面附帶一個工程(用于模擬編碼器AB相波形的工程),如下:
該工程主要配置TIM的編碼器模式,通過定時讀取編碼器的方向(DIR),和計數(shù)(CNT),并通過串口打印出來。
下載地址:
百度網(wǎng)盤:
密碼:t4kx
GitHub:
CSDN:
英特爾工藝真的落后了嗎?
gcc和g++是什么,有什么區(qū)別?
預處理 #pragma 命令詳解
長按前往圖中包含的公眾號關(guān)注
免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!