国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32——TIM編碼器接口

這篇具有很好參考價值的文章主要介紹了STM32——TIM編碼器接口。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、編碼器接口簡介

  • Encoder Interface 編碼器接口
  • 編碼器接口可接收增量(正交)編碼器的信號,根據(jù)編碼器旋轉(zhuǎn)產(chǎn)生的正交信號脈沖,自動控制CNT自增或自減,從而指示編碼器的位置、旋轉(zhuǎn)方向和旋轉(zhuǎn)速度
  • 每個高級定時器和通用定時器都擁有1個編碼器接口,C8T6擁有4個編碼器接口
  • 兩個輸入引腳借用了輸入捕獲的通道1和通道2(CH1和CH2引腳)
  • 編碼器接口可以看做是帶有方向控制的外部時鐘
  • 實際上是測頻法測正交脈沖的頻率,可以根據(jù)旋轉(zhuǎn)方向,實現(xiàn)自增計次,自減計次,然后每隔一段時間取一次CNT的值,再把CNT清零,每次取出來的就是編碼器的速度。如果只是取出CNT的值不清零,則表示編碼器當前的位置
  • 外部中斷實現(xiàn)的效果和編碼器接口實現(xiàn)的效果相同,區(qū)別是后者使用硬件資源取代軟件資源開銷

二、正交編碼器

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

  • 可以測量位置(返回CNT的值),或帶方向的速度值(返回CNT的變化值)
  • 旋轉(zhuǎn)越快,頻率越高,頻率代表速度
  • 設計正交信號可以抗噪聲
  • 由右側(cè)的圖可知,A相上升沿的時候,B相在正傳和反轉(zhuǎn)時是不同的電平。所以,將A相和B相的所以邊沿作為計數(shù)器的時鐘,出現(xiàn)邊沿變化時,計數(shù)器就自增或自減

三、通用定時器框圖

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

  • 編碼器接口的兩個輸入引腳借用了輸入捕獲的通道的CH1和CH2引腳
  • 編碼器接口是從模式控制器,通路連接到CNT計數(shù)器
  • 72MHZ的內(nèi)部時鐘和時基單元初始化設置的計數(shù)方向并不會使用,而是受到編碼器控制

四、編碼器接口基本結(jié)構(gòu)

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

  • ARR自動重裝器設置為65535。利用補碼特性得到負數(shù),將16位的無符號數(shù)轉(zhuǎn)化為16位的有符號數(shù),65535為-1,65534為-2。
  • 函數(shù)TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//配置編碼器接口,第二個參數(shù)為編碼器模式,參數(shù)三四為通道的極性
  • 邊沿檢測:上升沿有效表示的是高低電平不翻轉(zhuǎn),下降沿有效表示翻轉(zhuǎn)高低電平

五、工作模式

  • 四倍頻技術(shù)

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

  • 左側(cè)的有效邊沿為3種工作模式:由于在判斷為正轉(zhuǎn)時可以有四種狀態(tài),也就是AB相都可以用來判斷,僅僅采用一個通道進行判斷也可以只是計次精度會下降
    stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

六、實例(均不反相)

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

  • 一個引腳不變,另一個引腳多次變化的毛刺信號,計數(shù)值還是原來那個數(shù)

七、實例(TI1反相)

stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

  • TI1反相,在分析前先將TI1的時序圖翻轉(zhuǎn)
  • TI1反相,是修改將CH1或2通道內(nèi)的極性選擇,在編碼器模式下是高低電平的極性翻轉(zhuǎn),而不是輸入捕獲模式下的邊沿翻轉(zhuǎn)
  • 用途:當計數(shù)相反的時候可以修改極性

八、編碼器接口測速

本質(zhì):編碼器計次,計次可以使用外部中斷方式,方波信號來自編碼器,在中斷函數(shù)里面手動計次,占用軟件資源,CPU會頻繁進入中斷,可以采用硬件自動化計次,也就是定時器的編碼器接口模式。

使用場景:使用PWM驅(qū)動電機,再使用編碼器(無接觸式的霍爾傳感器或光柵)測量電機速度,再用PID算法實現(xiàn)閉環(huán)控制

電路設計

旋轉(zhuǎn)編碼器的AB相分別接PA6和PA7
stm32編碼器接口,STM32,stm32,單片機,嵌入式硬件

關(guān)鍵代碼

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"
#include "Encoder.h"

int16_t Speed;

int main(void)
{
	OLED_Init();
	Timer_Init();
	Encoder_Init();
	
	OLED_ShowString(1, 1, "Speed:");
	
	while (1)
	{
		OLED_ShowSignedNum(1, 7, Speed, 5);//OLED_ShowSignedNum()可以顯示負數(shù)
		//Delay_ms(1000);為了避免在主循環(huán)中造成阻塞,可以用定時中斷的方式讀取CNT的變化值,如TIM2_IRQHandler()函數(shù)
	}
}

void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		Speed = Encoder_Get();//每隔一秒讀取一次速度
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
	}
}

Encoder.c

#include "stm32f10x.h"                  // Device header

void Encoder_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
		
		//因為編碼器接口是一個帶有方向控制的外部時鐘,所以不需要配置時鐘
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//計數(shù)模式也是無效,由編碼器接口控制
	TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1;		//ARR
	TIM_TimeBaseInitStructure.TIM_Prescaler = 1 - 1;		//PSC,不分頻,編碼器時鐘直接驅(qū)動計數(shù)器
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
	
	TIM_ICInitTypeDef TIM_ICInitStructure;
	TIM_ICStructInit(&TIM_ICInitStructure);
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//通道1
	TIM_ICInitStructure.TIM_ICFilter = 0xF;//濾波器
	TIM_ICInit(TIM3, &TIM_ICInitStructure);
	//無須定義新的結(jié)構(gòu)體配置成員,因為調(diào)用TIM_ICInit()函數(shù)后就寫入到硬件寄存器中
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;//通道2
	TIM_ICInitStructure.TIM_ICFilter = 0xF;//濾波器
	TIM_ICInit(TIM3, &TIM_ICInitStructure);
	
	TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//配置編碼器接口,第二個參數(shù)為編碼器工作模式,參數(shù)三四為通道的極性,F(xiàn)alling表示通道反向,Rising表示通道不反向
	
	TIM_Cmd(TIM3, ENABLE);
}

//返回有符號位的16位計數(shù)器的值
int16_t Encoder_Get(void)
{
	int16_t Temp;
	Temp = TIM_GetCounter(TIM3);
	TIM_SetCounter(TIM3, 0);
	return Temp;
}

參考視頻:江科大自化協(xié)文章來源地址http://www.zghlxwxcb.cn/news/detail-804117.html

到了這里,關(guān)于STM32——TIM編碼器接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • STM32單片機(五)第二節(jié):EXTI外部中斷練習2(旋轉(zhuǎn)編碼器計次)

    STM32單片機(五)第二節(jié):EXTI外部中斷練習2(旋轉(zhuǎn)編碼器計次)

    ?? 專欄簡介:本專欄記錄了從零學習單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學習51單片機,其是STM32等高級單片機的基礎;這樣再學習STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎開始學習入門單片機,且有一定C語言基礎的的童鞋

    2024年02月11日
    瀏覽(25)
  • STM32單片機(五)第二節(jié):EXTI外部中斷練習(對射式紅外傳感器計次和旋轉(zhuǎn)編碼器計次)

    STM32單片機(五)第二節(jié):EXTI外部中斷練習(對射式紅外傳感器計次和旋轉(zhuǎn)編碼器計次)

    ?? 專欄簡介:本專欄記錄了從零學習單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學習51單片機,其是STM32等高級單片機的基礎;這樣再學習STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎開始學習入門單片機,且有一定C語言基礎的的童鞋

    2024年02月09日
    瀏覽(28)
  • STM32(HAL)--使用定時器TIM的Encoder Mode來讀取旋鈕編碼器的脈沖數(shù)

    STM32(HAL)--使用定時器TIM的Encoder Mode來讀取旋鈕編碼器的脈沖數(shù)

    目錄 一 旋鈕編碼器相關(guān)知識 二 STM32CubeMx配置 三 程序編寫 3.1 相關(guān)函數(shù)介紹 3.2 程序編寫 四 實驗結(jié)果 旋轉(zhuǎn)編碼器是一種位置傳感器,輸出脈沖信號可以用來確定編碼器的旋轉(zhuǎn)角度和旋轉(zhuǎn)方向。 編碼器中有兩個開關(guān),當旋鈕旋轉(zhuǎn)后,開關(guān)會依次導通,開關(guān)結(jié)構(gòu)圖如下圖所示

    2024年02月15日
    瀏覽(21)
  • STM32移植LVGL+旋轉(zhuǎn)編碼器接口對接

    STM32移植LVGL+旋轉(zhuǎn)編碼器接口對接

    寫在前面:本菜鳥結(jié)合了許多大佬的文章,成功實現(xiàn)了基于LVGL的GUI設計,小開心~淺淺記錄一下!~ 本文以單片機STM32F103VET6為核心,利用ST7796芯片驅(qū)動分辨率為480*320的LCD液晶屏模塊,移植LVGL,對接顯示接口,對接外部接口——旋轉(zhuǎn)編碼器,完成以上兩步,就可以實現(xiàn)LVGL的顯

    2024年02月10日
    瀏覽(45)
  • STM32定時器的編碼器接口模式

    STM32定時器的編碼器接口模式

    MCU為STM32L431,通用定時器框圖: 編碼器接口模式一共有三種,通過TIMx_SMCR寄存器的SMS[3:0]位來選擇。模式1計數(shù)器僅在TI1FP1的邊沿根據(jù)TI2FP2的電平來判斷向上/下計數(shù);模式2計數(shù)器僅在TI2FP2的邊沿根據(jù)TI1FP1的電平來判斷向上/下計數(shù);模式3計數(shù)器同時在TI1FP1和TI2FP2的邊沿根據(jù)另

    2023年04月15日
    瀏覽(23)
  • 【嵌入式】STM32計時器編碼器接口模式使用

    【嵌入式】STM32計時器編碼器接口模式使用

    使用STM32調(diào)試電機或傳感器時經(jīng)常會使用到計數(shù)器的編碼器接口模式,本文主要記錄該模式的固件庫配置方法,并給出使用該模式獲取光柵測距值的實例。 硬件: STM32F103C8T6 光柵測距傳感器 編碼器接口模式為STM32計時器的一種特殊使用模式,該模式下可對編碼器輸出的脈沖信

    2024年02月20日
    瀏覽(20)
  • 【32單片機學習】(3)霍爾編碼器減速直流電機控制及測速

    【32單片機學習】(3)霍爾編碼器減速直流電機控制及測速

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 目錄 前言 1.實驗現(xiàn)象 2.實驗接線及原理圖 接線圖 原理圖? 電機接線圖 3.代碼部分 1.主函數(shù)? main.c 2.按鍵部分? ?key.c ?key.h pwm代碼? ?pwm.c ?pwm.h 電機驅(qū)動? ?motor.c? ?motor.h ?OLED顯示 oled.c oled.h? 編碼器

    2024年02月11日
    瀏覽(36)
  • stm32-編碼器測速

    stm32-編碼器測速

    編碼電機 旋轉(zhuǎn)編碼器 A,B相分別接通道一和二的引腳,VCC,GND接單片機VCC,GND 以前的代碼是通過觸發(fā)外部中斷,然后在中斷函數(shù)里手動進行計次。使用編碼器接口的好處就是節(jié)約軟件資源。對于頻繁執(zhí)行,操作簡單的任務,一般設計一個硬件電路模塊來自動完成。 使用定時器

    2024年03月19日
    瀏覽(27)
  • STM32編碼器模式(帶方向/正交編碼)

    STM32編碼器模式(帶方向/正交編碼)

    看前說明 :這里重點介紹的時STM32的定時器編碼器模式,是根據(jù)STMF10x參考手冊,如果有使用過編碼器或編碼器不一樣的可以直接跳過前面的編碼器介紹,直接看理論分析與程序部分。 這里需要注意的參數(shù) 輸出脈沖線數(shù):1024線: 編碼器每旋轉(zhuǎn)一周輸出的脈沖的個數(shù) ,這個數(shù)

    2023年04月24日
    瀏覽(21)
  • STM32 EC11 旋轉(zhuǎn)編碼器

    STM32 EC11 旋轉(zhuǎn)編碼器

    代碼在最后,復制可直接食用 以及我的電路圖 在研究EC11的時序之前首先要了解一點,EC11按旋轉(zhuǎn)的輸出動作可以分為兩種。一種是轉(zhuǎn)兩格,A、B對C端輸出一個完整脈沖(轉(zhuǎn)一格就只是由低電平-高電平或由高電平-低電平);另一種就是轉(zhuǎn)一格,A、B對C端輸出一個完整脈沖。

    2024年02月02日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包