0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何不用實(shí)物來(lái)驗(yàn)證TIMER編碼器接口功能

麥辣雞腿堡 ? 來(lái)源:茶話(huà)MCU ? 作者:茶話(huà)MCU ? 2023-06-21 16:16 ? 次閱讀

通常在STM32芯片的通用TIMER或高級(jí)TIMER都帶編碼器功能,支持基于1路或2路輸入的編碼脈沖計(jì)數(shù)。我們一般外接正交編碼器,使用2路輸入。TIMER硬件基于2路輸入的相差特征來(lái)確定計(jì)數(shù)方向并依據(jù)方向?qū)τ?jì)數(shù)器做遞增或遞減操作。

圖片

正交編碼器一般使用5根線(xiàn)連接,分別為A、B、

Z信號(hào)線(xiàn)及VCC和GND電源線(xiàn)。其中,A、B兩路是存在相差的同頻信號(hào)。Z信號(hào)即零點(diǎn)信號(hào),當(dāng)編碼器旋轉(zhuǎn)到某位置時(shí),它會(huì)發(fā)出一個(gè)脈沖表示約定的零位。VCC、GND分別是電源線(xiàn)和地線(xiàn)。至于編碼器線(xiàn)數(shù),是指旋轉(zhuǎn)一圈A(B)端會(huì)輸出的脈沖個(gè)數(shù)

,二者轉(zhuǎn)一圈所發(fā)出的脈沖數(shù)相同,但存在90°相差。編碼器的線(xiàn)數(shù)越高代表其能夠反應(yīng)的位置精度越高。

圖片

關(guān)于STM32片內(nèi)TIMER編碼器接口工作原理,這里就不介紹了。更多細(xì)節(jié)請(qǐng)參考STM32的相應(yīng)系列的參考手冊(cè)。這里想重點(diǎn)分享的是,如果手頭沒(méi)有正交編碼器實(shí)物,如何來(lái)驗(yàn)證或體驗(yàn)TIMER的編碼器接口功能呢?

其實(shí),TIMER編碼器處理單元就是對(duì)外來(lái)的兩路同頻但輸出具有前后時(shí)序差的脈沖信號(hào)進(jìn)行方向辨認(rèn)后做TIMER計(jì)數(shù)器的遞增或遞減計(jì)數(shù)。既然手頭沒(méi)有編碼器實(shí)物,我們何不利用STM32片內(nèi)的TIEMR產(chǎn)生2路帶相差的同頻信號(hào),再接到另一個(gè)支持編碼器接口的TIMER不就OK了嗎?

當(dāng)然,使用STM32的TIMER產(chǎn)生2路帶相差的同頻信號(hào),有多種方法。比方通過(guò)2個(gè)定時(shí)器主從級(jí)聯(lián)、單個(gè)定時(shí)器使用OC

toggle模式加以DMA輔助、利用非對(duì)稱(chēng)PWM輸出模式來(lái)實(shí)現(xiàn)。

其中,前2種方法在STM32芯片里通用性好,每個(gè)STM32系列都支持。而非對(duì)稱(chēng)PWM輸出模式雖然可以非常方便地實(shí)現(xiàn)帶相差的同頻輸出信號(hào),但不是所有STM32系列支持。當(dāng)然,不支持的主要是ST推出得比較早的STM32系列,比方STM32F1\\STM32F2\\STM32F4這些老舊的系列,后來(lái)推出的STM32系列,比方STM32L4,STM32G4,STM32C0、STM32U5、STM32F7、STM32H7、STM32H5等都支持非對(duì)稱(chēng)PWM輸出模式。

我這里采用非對(duì)稱(chēng)PWM輸出模式并使用STM32L4開(kāi)發(fā)板來(lái)演示實(shí)現(xiàn)過(guò)程。先用TIM1結(jié)合非對(duì)稱(chēng)PWM輸出模式輸出2路帶相差的同頻信號(hào),然后連接到TIM2的編碼器接口。另外,我還用了個(gè)按鍵【接到PC13】動(dòng)態(tài)調(diào)整TIM1兩路輸出相差的前后關(guān)系,以觀察TIM2計(jì)數(shù)器的計(jì)數(shù)變化情況,即遞增還是遞減計(jì)數(shù)。

圖片

我先配置TIM1的CH1/CH2,實(shí)現(xiàn)2路帶相差的PWM輸出?!娟P(guān)于TIMER非對(duì)稱(chēng)PWM輸出模式這里不介紹了,此處直接上配置。下面鏈接有相關(guān)文章介紹,或者自行研讀STM32參考手冊(cè)相關(guān)內(nèi)容?!?/p>

圖片

基于CubeMx配置后生成初始化工程,添加2行上圖中的代碼就可以輸出了。

我這里使用ARM MDK IDE自帶的邏輯分析儀就可以看到下面波形。2路波形分別從GPIOA_PIN8/GPIOA_PIN9輸出。

然后我將這兩路輸出分別連接到TIM2的編碼器接口腳【GPIOA_PIN0、GPIOA_PIN1】。

我把有關(guān)TIM2編碼器應(yīng)用的CubeMx配置也截圖出來(lái)供參考?!酒渲蠥RR可按需調(diào)整,為了便于查看效果,后來(lái)我將其改為1000了。這點(diǎn)不影響功能演示?!浚?/p>

圖片

然后,添加啟動(dòng)TIMER編碼器功能的API函數(shù)?!続PI函數(shù)里啟動(dòng)了2個(gè)通道的輸入捕獲中斷,我這里只保留通道1的而關(guān)閉了通道2的。即每次在TIM2通道1的捕獲中斷里讀取其計(jì)數(shù)器的值?!?/p>

圖片

編譯、除錯(cuò)后運(yùn)行,即可在IDE的邏輯分析儀上看到下面的結(jié)果。其中CNT_value就是TIM2的計(jì)數(shù)器動(dòng)態(tài)值。目前看到的是TIM2的編碼器接口針對(duì)當(dāng)前2路輸入信號(hào)進(jìn)行周期計(jì)數(shù)。綠色和紫色是上面提到過(guò)的兩路輸入信號(hào)【因顯示分辨率的關(guān)系下面相關(guān)圖形變成單色方塊了】。

圖片

當(dāng)然,我們可以通過(guò)按鍵來(lái)調(diào)整TIM1兩路輸出信號(hào)的相差時(shí)序,進(jìn)而改變TIM2編碼器計(jì)數(shù)的方向。不難看出下圖中3個(gè)圓圈的地方就是切換計(jì)數(shù)方向的位置。

圖片

我們還可以調(diào)整TIM1的參數(shù)改變輸出給TIM2的信號(hào)頻率。整個(gè)過(guò)程就是利用TIMER的非對(duì)稱(chēng)PWM輸出模式構(gòu)造2路帶相差的編碼器信號(hào),從而讓TIMER的編碼器接口電路實(shí)現(xiàn)對(duì)外部編碼輸入信號(hào)的計(jì)數(shù)。實(shí)現(xiàn)這些基本功能之后,可以進(jìn)一步研究應(yīng)用中可能涉及的各種測(cè)量功能。

聊到這里,可能有人對(duì)上面邏輯分析儀的配置感興趣。之前我在本公眾號(hào)專(zhuān)門(mén)介紹過(guò),這里簡(jiǎn)單就今天查看的幾個(gè)變量的配置過(guò)程介紹下。

這里的CNT_value連續(xù)記錄TIM2計(jì)數(shù)器的值,這里為Analog量。

Level_PA8記錄GPIOA_PIN8的電平情況,1或0兩個(gè)值之一,為Bit量。

Level_PA9跟Level_PA8是完全相同的數(shù)據(jù)類(lèi)型,不過(guò)顯示的是GPIOA_PIN9的電平。顯然,邏輯分析儀配置里關(guān)于Level_PA9的顯示算式的屏蔽數(shù)應(yīng)該是0x00000200,右移位為9。我目前是在SYSTICK的毫秒中斷里讀取GPIOA-》IDR的值即管腳電平到變量Level_PA8和Level_PA9的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3552

    瀏覽量

    133792
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10847

    瀏覽量

    353773
  • 控制
    +關(guān)注

    關(guān)注

    4

    文章

    1009

    瀏覽量

    122561
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    利用非對(duì)稱(chēng)PWM模式體驗(yàn)編碼器功能

    通常在STM32芯片的通用TIMER或高級(jí)TIMER都帶編碼器功能,支持基于1路或2路輸入的編碼脈沖計(jì)數(shù)。
    的頭像 發(fā)表于 05-04 10:01 ?2070次閱讀
    利用非對(duì)稱(chēng)PWM模式體驗(yàn)<b class='flag-5'>編碼器</b><b class='flag-5'>功能</b>

    5.EV_HC32F460_Timer之正交編碼器調(diào)試簡(jiǎn)介

    5.EV_HC32F460_Timer之正交編碼器調(diào)試簡(jiǎn)介T(mén)imerHC32F460 中與 PWM 相關(guān)的外設(shè)有– 3 個(gè)多功能 16bit PWM Timer
    發(fā)表于 12-07 09:56

    怎樣使用輸入捕獲來(lái)計(jì)算編碼器的數(shù)值

    (一)編碼器介紹首先可以在man手冊(cè)中查看TAx的功能(function),發(fā)現(xiàn)他不支持直連編碼器,然后看了下timer32,發(fā)現(xiàn)timer
    發(fā)表于 02-15 06:26

    基于GD32F310 定時(shí)編碼器接口的簡(jiǎn)介及特點(diǎn)

    單通道輸出】文章中有講到具有編碼器接口的定時(shí),如下所示。TIMER0、TIMER14、TIMER
    發(fā)表于 09-28 15:53

    在GD32F427開(kāi)發(fā)板上怎樣去使用編碼器接口

    【GD32F427開(kāi)發(fā)板試用】03-PWM單通道輸出文章中有講到具有編碼器接口的定時(shí),如下所示。TIMER0 TIMER7 這兩個(gè)定時(shí)
    發(fā)表于 11-30 14:42

    增量型編碼器與絕對(duì)型編碼器的區(qū)別

    增量型編碼器與絕對(duì)型編碼器的區(qū)別 編碼器如以信號(hào)原理來(lái)分,有增量型編碼器,絕對(duì)型編碼器。   
    發(fā)表于 09-26 17:36 ?2570次閱讀

    編碼器,編碼器是什么意思

    編碼器,編碼器是什么意思 編碼器 編碼器(encoder)是將信號(hào)
    發(fā)表于 03-08 15:04 ?3061次閱讀

    接口 - 海德漢編碼器

    接口 - 海德漢編碼器,全部產(chǎn)品接口介紹,各種接口技術(shù)。
    發(fā)表于 03-14 15:44 ?10次下載

    電機(jī)位置編碼器接口設(shè)計(jì)

    電機(jī)位置編碼器廣泛用于伺服驅(qū)動(dòng)、機(jī)器人、機(jī)床、印刷機(jī)、紡織機(jī)和電梯等工業(yè)電機(jī)控制應(yīng)用。用接口把這些編碼器連接到您系統(tǒng)的其它部分會(huì)帶來(lái)一些棘手的電磁兼容(EMC)問(wèn)題。為幫您應(yīng)對(duì)這些挑
    發(fā)表于 11-17 01:53 ?2752次閱讀

    硬件編碼器是什么,軟件編碼和硬件解碼的區(qū)別

    用于視頻信號(hào)編碼編碼器,依據(jù)接口不同分了SDI高清編碼器、VGA高清編碼器、HDMI高清編碼器
    發(fā)表于 08-02 17:49 ?1.9w次閱讀

    基于FPGA的EnDat接口編碼器數(shù)據(jù)采集設(shè)計(jì)

    EnDat接口是HEIDENHAIN專(zhuān)為編碼器設(shè)計(jì)的數(shù)字式、全雙工同步串行的數(shù)據(jù)傳輸協(xié)議,具有傳輸速度快、功能強(qiáng)大、連線(xiàn)簡(jiǎn)單、抗干擾能力強(qiáng)等優(yōu)點(diǎn),是編碼器、光柵尺數(shù)據(jù)傳輸?shù)耐ㄓ?/div>
    發(fā)表于 01-01 13:13 ?2131次閱讀
    基于FPGA的EnDat<b class='flag-5'>接口</b><b class='flag-5'>編碼器</b>數(shù)據(jù)采集設(shè)計(jì)

    STM32編碼器接口 以及應(yīng)用編程

    STM32編碼器接口,以及應(yīng)用編程
    的頭像 發(fā)表于 03-14 10:36 ?1w次閱讀
    STM32<b class='flag-5'>編碼器</b><b class='flag-5'>接口</b> 以及應(yīng)用編程

    EV_HC32F460_Timer之正交編碼器調(diào)試

    5.EV_HC32F460_Timer之正交編碼器調(diào)試簡(jiǎn)介T(mén)imerHC32F460 中與 PWM 相關(guān)的外設(shè)有– 3 個(gè)多功能 16bit PWM Timer
    發(fā)表于 11-24 12:21 ?15次下載
    EV_HC32F460_<b class='flag-5'>Timer</b>之正交<b class='flag-5'>編碼器</b>調(diào)試

    編碼器的作用和功能

    編碼器的作用和功能編碼器是一種常用的電子元件,其作用是將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)或者將數(shù)字信號(hào)進(jìn)行編碼。其主要功能是將輸入信號(hào)進(jìn)行分析和處理
    的頭像 發(fā)表于 06-14 09:22 ?1.2w次閱讀
    <b class='flag-5'>編碼器</b>的作用和<b class='flag-5'>功能</b>

    編碼器音頻功能

    的音頻通道數(shù)量。編碼器音頻工作原理,其中實(shí)現(xiàn)了雙向音頻功能,即對(duì)講功能。 聲明:部分內(nèi)容及圖片來(lái)源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除。 無(wú)論音頻編碼器還是視頻
    的頭像 發(fā)表于 08-25 11:11 ?678次閱讀