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