有人問如果STM32定時器外接了正交編碼器,該定時器的剩余通道是否可以做PWM輸出呢?
其實,對于STM32芯片,編碼輸入信號就是定時器的計數(shù)時鐘源之一。定時器外接了編碼輸入,若還有剩余通道的話,剩余通道依然可以實現(xiàn)輸入捕獲或輸出比較功能。
此時,該定時器的計數(shù)時鐘就是由編碼器信號提供的。編碼器信號從定時器的通道1和通道2同時輸入,計數(shù)器基于編碼信號的邊沿事件進行計數(shù),可以有多種計數(shù)方式供選擇。
具體編碼器計數(shù)方式參見下表。后面實驗采用第三種方式。
下面使用STM32C0系列的Nucleo板,從定時器1的通道1、通道2接入正交編碼信號,以TI1、TI2的有效跳變沿作為時鐘源來實現(xiàn)PWM輸出。
我先使用STM32C031芯片內(nèi)部的TIM3產(chǎn)生兩路正交編碼信號的輸出,然后將這兩路輸出接到TIM1的CH1、CH2,并令TIM1工作在編碼模式,讓其CH3輸出PWM脈沖。
先看看TIM3的CubeMx配置。為了產(chǎn)生一對相差90°的正交編碼信號,我用到了TIM3的三個通道,其中CH2沒有做實際輸出【當然,若用兩個通道也行】。見下面配置。
下面波形就是基于上面配置的兩路正交編碼輸出信號:
我們再來看看TIM1的CubeMx配置。工作在編碼器模式,CH1、CH2作為編碼信號輸入,選擇針對兩路輸入的跳變沿進行計數(shù)的方式。CH3、CH4做PWM輸出。
在上圖中可以看到,TIM1的PSC=0,ARR為19,計數(shù)器處于單向計數(shù)模式,即每計20個跳變沿就產(chǎn)生溢出。因為對TI1、TI2兩路的跳變沿進行計數(shù),在輸入信號的1個周期內(nèi)會做4次計數(shù)。
這樣算下來,TIM1的一個輸出周期對應于正交編碼輸入信號的5個周期。
完成配置后創(chuàng)建工程,添加如下必要的用戶代碼。
稍作調試可以看到如下結果,藍色的為TIM1-CH3的PWM輸出,另外兩路為正交編碼信號。實驗結果跟前面推理的一致。
不難理解,在前面TIM1時基參數(shù)不變的前提下,TIM1-CH3的輸出頻率由外來編碼脈沖的頻率決定,編碼脈沖頻率越高,TIM3-CH1的PWM輸出頻率也越高,反之亦然?!狙奂獾娜丝赡馨l(fā)現(xiàn)了此時計數(shù)器實際上是處于向下計數(shù)模式】
定時器基于編碼脈沖作為計數(shù)時鐘源時,使用CubeMx配置計數(shù)器的計數(shù)方向時,不要選擇中心對齊計數(shù)模式,編碼器時鐘模式不支持該計數(shù)模式。
至于選擇向上計數(shù)模式還是向下計數(shù)模式無關緊要。因為編碼器模式下,計數(shù)器是向上計數(shù)還是向下計數(shù)是硬件決定的,即根據(jù)TI1FP1和TI2FP2的相對電平以及所選擇的計數(shù)方式?jīng)Q定。
審核編輯:劉清
-
計數(shù)器
+關注
關注
32文章
2273瀏覽量
95025 -
定時器
+關注
關注
23文章
3256瀏覽量
115411 -
正交編碼器
+關注
關注
0文章
16瀏覽量
10646 -
PWM輸出
+關注
關注
1文章
66瀏覽量
5225
原文標題:基于編碼器信號的PWM輸出示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論