STM32正交編碼器例程_第1頁
STM32正交編碼器例程_第2頁
STM32正交編碼器例程_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、STM3216位定時器對正交編碼器計數(shù)的方法(附檢測輸入脈沖的方法)發(fā)布時間:2009-10-0414:29:11今天決定在END開博,之前沒有工作記錄的習慣,從今天起在這里記錄下自己工作時的點滴經驗,以供日后參考以及與網(wǎng)絡朋友交流。第一篇文章先簡要描述下STM32定時器對正交編碼器進行計數(shù)控制的方法。如圖,STM32的每個TIMER都有正交編碼器輸入接口,TI1,TI2經過輸入濾波,邊沿檢測產生TI1FP1,TI2FP2接到編碼器模塊,通過配置編碼器的工作模式,即可以對編碼器進行正向/反向計數(shù)。圖46茴玻段制定時器樁圖TiftqrtJf'一fifLthw,fJ"11BKEv

2、riifr如下圖,編碼器使用了A,B兩相信號,但是我只需要對TI1信號進行計數(shù)(第一行),我也是剛發(fā)現(xiàn)了這個錯誤,原來對兩個信號都計數(shù),導致碼盤轉一周得到不止100個脈沖(100線的光電碼盤)。通過STM32的編碼器模塊比較兩想的電平信號就可以很容易地計算出編碼器的運行情況了。表36計數(shù)方向與綜碼器信$的關系有姬沿相對宿號的電平(TI1FP1對應TINTI2FF2JF?TI1J口1FPI信號TI2FP2信號上升下降上升下降01在Til計數(shù)1IIfill向卜計欲問上計鼓不計監(jiān)卞計歆向卜計數(shù)向數(shù)不計數(shù)不計數(shù)僅flTI2計敷wlift向Ett®向下計致位不計牧不計敷網(wǎng)下計敷同卜1數(shù)fiiT

3、iiMiaJ1II問下下敝時上計哉向憶汁致向卜計敏計敷向E計數(shù)向卜i1數(shù)向卜計數(shù)向卜計麒卜面是我調試OK的代碼:voidEncoder_Configration(void)(GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_ICInitTypeDefTIM_ICInitStructure;/PC6A相PC7B相GPIOInitStructure.GPIOPinGPIO_InitStructure.GPIO_ModeGPIO_InitStructure.GPIO_SpeedGPI

4、O_Init(GPIOC,&GPIO_InitStructure);=GPIO_Pin_6|GPIO_Pin_7;=GPIO_Mode_IN_FLOATING;=GPIO_Speed_50MHz;/*EnabletheTIM3UpdateInterrupt*/*NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=TIMx_PRE_EMPTION_PRIORITY;NVIC_InitStructure.NVIC_IRQChannelS

5、ubPriority=TIMx_SUB_PRIORITY;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);*/*TimerconfigurationinEncodermode*/=0x0;/Noprescaling=10000;TIM_TimeBaseStructure.TIM_PrescalerTIM_TimeBaseStructure.TIM_PeriodTIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBa

6、seStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM8,&TIM_TimeBaseStructure);TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);TIM_ICStructInit(&TIM_ICInitStructure);TIM_ICInitStructure.TIM_ICFilter=6;/ICx_FILTER;TIM_ICInit(TIM8,&TIM_ICInitStructure);/Clearallpendinginterrupts

7、TIM_ClearFlag(TIM8,TIM_FLAG_Update);TIM_ITConfig(TIM8,TIM_IT_Update,ENABLE);/ResetcounterTIM2->CNT=0;TIM_Cmd(TIM8,ENABLE);n_Counter=TIM_GetCounter(TIM8);Diled_Disp_Num(float)n_Counter);另外一個值得注意的問題是,STM32的定時器是16位的,意思是只能計數(shù)到65535,有兩種方法,一是采用鏈式的方式用兩個定時器將16位擴展為32位,還有一種簡單的方法就是開啟定時器的溢出中斷,每中斷一次就代表編碼器運轉了特定

8、的角度。比如編碼器是400線的,將ARR寄存器設置為400,每溢出中斷一次就代表電機轉了一圈,以此類推。另外,關于輸入脈沖的檢測,其實是類似的,只不過在STM32內部是專門用了一個外部觸發(fā)模塊來實現(xiàn)的,如圖一中紫色框的標注,編碼器模塊應該是在這個模塊上的升級,下面是配置代碼:voidTIM3_ETR_GetDropCounts_Configuration(void)GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;/testPA0TIM8_ETRGPIO_InitStructure.G

9、PIO_Pin=GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStructure);TIM_TimeBaseStructure.TIM_Prescaler=0x00;TIM_TimeBaseStructure.TIM_Period=0xFFFF;TIM_TimeBaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);/Ti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論