有人問如果STM32定時器外接了正交編碼器,該定時器的剩余通道是否可以做PWM輸出呢?
其實,對于STM32芯片,編碼輸入信號就是定時器的計數時鐘源之一。定時器外接了編碼輸入,若還有剩余通道的話,剩余通道依然可以實現輸入捕獲或輸出比較功能。
此時,該定時器的計數時鐘就是由編碼器信號提供的。編碼器信號從定時器的通道1和通道2同時輸入,計數器基于編碼信號的邊沿事件進行計數,可以有多種計數方式供選擇。
具體編碼器計數方式參見下表。后面實驗采用第三種方式。
下面使用STM32C0系列的Nucleo板,從定時器1的通道1、通道2接入正交編碼信號,以TI1、TI2的有效跳變沿作為時鐘源來實現PWM輸出。
我先使用STM32C031芯片內部的TIM3產生兩路正交編碼信號的輸出,然后將這兩路輸出接到TIM1的CH1、CH2,并令TIM1工作在編碼模式,讓其CH3輸出PWM脈沖。
先看看TIM3的CubeMx配置。為了產生一對相差90°的正交編碼信號,我用到了TIM3的三個通道,其中CH2沒有做實際輸出【當然,若用兩個通道也行】。見下面配置。
下面波形就是基于上面配置的兩路正交編碼輸出信號:
我們再來看看TIM1的CubeMx配置。工作在編碼器模式,CH1、CH2作為編碼信號輸入,選擇針對兩路輸入的跳變沿進行計數的方式。CH3、CH4做PWM輸出。
在上圖中可以看到,TIM1的PSC=0,ARR為19,計數器處于單向計數模式,即每計20個跳變沿就產生溢出。因為對TI1、TI2兩路的跳變沿進行計數,在輸入信號的1個周期內會做4次計數。
這樣算下來,TIM1的一個輸出周期對應于正交編碼輸入信號的5個周期。
完成配置后創建工程,添加如下必要的用戶代碼。
稍作調試可以看到如下結果,藍色的為TIM1-CH3的PWM輸出,另外兩路為正交編碼信號。實驗結果跟前面推理的一致。
不難理解,在前面TIM1時基參數不變的前提下,TIM1-CH3的輸出頻率由外來編碼脈沖的頻率決定,編碼脈沖頻率越高,TIM3-CH1的PWM輸出頻率也越高,反之亦然。【眼尖的人可能發現了此時計數器實際上是處于向下計數模式】
定時器基于編碼脈沖作為計數時鐘源時,使用CubeMx配置計數器的計數方向時,不要選擇中心對齊計數模式,編碼器時鐘模式不支持該計數模式。
至于選擇向上計數模式還是向下計數模式無關緊要。因為編碼器模式下,計數器是向上計數還是向下計數是硬件決定的,即根據TI1FP1和TI2FP2的相對電平以及所選擇的計數方式決定。
審核編輯:劉清
-
計數器
+關注
關注
32文章
2261瀏覽量
94981 -
定時器
+關注
關注
23文章
3255瀏覽量
115368 -
正交編碼器
+關注
關注
0文章
16瀏覽量
10644 -
PWM輸出
+關注
關注
1文章
66瀏覽量
5218
原文標題:基于編碼器信號的PWM輸出示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
基于STM32的正交編碼器驅動電機設計
![基于<b class='flag-5'>STM32</b>的<b class='flag-5'>正交</b><b class='flag-5'>編碼器</b>驅動電機設計](https://file.elecfans.com/web1/M00/C6/A0/pIYBAF9Z4bCAYL3EAAE7QLksRkU783.png)
STM32定時器用做正交編碼器之后還能輸出PWM嗎?
正交編碼器原理什么是正交?
可以使用單個定時器對通道1和2進行編碼器計數并在通道3和4上生成PWM嗎?
電機控制基礎——定時器基礎知識與PWM輸出原理
![電機控制基礎——<b class='flag-5'>定時器</b>基礎知識與<b class='flag-5'>PWM</b><b class='flag-5'>輸出</b>原理](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32F401 定時器做編碼器使用 采集電機旋轉速度、旋轉方向
![<b class='flag-5'>STM32</b>F401 <b class='flag-5'>定時器</b>做<b class='flag-5'>編碼器</b>使用 采集電機旋轉速度、旋轉方向](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論