概述
本章节主要是介绍了华芯微特公司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/
QQ技术交流群:492524359 等方式获取最新支持。
编辑:jq
全部0条评论
快来发表一下你的评论吧 !