概述
本章節主要是介紹了華芯微特公司SWM20x系列電機框架搭建之定時器模塊HALL接口功能特點及應用設置,方便用戶可以更快的上手設計。
。
SWM20x系列電機框架搭建:TIMR_HALL篇
霍爾接口
TIMER0模塊提供了HALL接口功能,能夠自動記錄脈沖變化間隔,并產生中斷。使用方式如下:
HALL功能為指定引腳,且不同封裝可能有所差異,具體引腳詳見管教排布:
配置PORTCON模塊中INEN寄存器使能引腳輸入功能
通過PORT_SEL寄存器將引腳切換為HALL功能
配置HALLSR寄存器,設置對應HALL輸入信號的原狀態
配置TIMER0裝載值寄存器(LDVALx)
使能HALL模式控制寄存器中輸入HALL信號觸發使能位(HALLEN)
清除輸入HALL信號觸發中斷的狀態(HALLIF)
使能HALL中斷(HALLIE)
TIMER0使能(EN)
當外部HALL_X引腳產生指定電平變化時,將(計數器加載值-計數器當前值)的結果保存到寄存器HALLDR中,計數器復位到加載值重新計數,并產生TIMER中斷。同時HALLIF寄存器IFx將產生對應標示位,標識對應引腳產生電平變化。
Hall0、Hall1、Hall2 是HALL功能的三個輸入引腳,任意一個HALL引腳上出現跳變沿時,將(計數器加載值-計數器當前值)的結果保存到寄存器HALLDR中,并且計數器復位到加載值重新計數。HALL0~2信號輸入同時支持連接至CMP0~2,可通過ACMPCR2寄存器HALLx位配置,可選擇為CMPxOUT引腳或者HALLIO引腳。
中斷配置與清除
每路TIMER均具備獨立中斷,通過中斷使能寄存器IE進行各TIMER中斷使能。通過中斷狀態寄存器IF進行中斷查詢及清除。
TIMER中斷
可通過配置中斷使能寄存器IEx相應位使能中斷。當檢測到中斷觸發條件時,中斷標志寄存器IFx相應位中置1。如需清除此標志,需在相應標志位中寫1清零(R/W1C),否則中斷在開啟狀態下會一直進入。
HALL中斷
可通過配置HALL模式控制寄存器對應位設置輸入HALLx信號觸發中斷的條件:上升沿、下降沿、上升沿和下降沿。可通過配置HALL中斷使能寄存器HALLIE相應位使能中斷。當檢測到中斷觸發條件時,HALL中斷標志寄存器HALLIF相應位中置1。如需清除此標志,需在相應標志位中寫1清零(R/W1C),否則中斷在開啟狀態下會一直進入。
程序中配置如下:
void Motor_hall(void)
{
PORT_Init(PORTB, PIN4, PORTB_PIN4_HALL_IN0, 1); //連接PB4
PORT_Init(PORTB, PIN5, PORTB_PIN5_HALL_IN1, 1); //連接PB5
PORT_Init(PORTB, PIN6, PORTB_PIN6_HALL_IN2, 1); //連接PB6
PORTB-》PULLU |= ((1 《《 PIN4) | (1 《《 PIN5) | (1 《《 PIN6)); //上拉使能
TIMR_Init(TIMR0, TIMR_MODE_TIMER, CyclesPerUs*4, 65536, 0); //最大測量脈寬4us*65536 = 262ms
TIMRG-》HALLEN = 1; //HALL模式控制
TIMRG-》HALLIF = 7; //HALL中斷狀態
TIMRG-》HALLIE = 1; //HALL中斷使能
NVIC_EnableIRQ(HALL_IRQn); //設置中斷優先級
TIMR_Start(TIMR0);
}
//霍爾檢測中斷
void HALL_Handler(void)
{
TIMRG-》HALLIF = 7; //清除中斷
printf(“%dus ”, TIMRG-》HALLSR); //輸出霍爾值
}
使用TIMRG-》HALLSR可獲取當前霍爾值。
具體詳情可登錄華芯微特官網:http://www.synwit.cn/
共享文件夾:ftp://221.217.59.230/
編輯:jq
-
寄存器
+關注
關注
31文章
5325瀏覽量
120054 -
接口
+關注
關注
33文章
8526瀏覽量
150863 -
電機
+關注
關注
142文章
8940瀏覽量
145144 -
定時器
+關注
關注
23文章
3241瀏覽量
114520
原文標題:SWM20x系列電機框架搭建:TIMR_HALL篇
文章出處:【微信號:gh_737991c81b3d,微信公眾號:恒美股份】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論