华芯微特公司SWM20x系列电机框架搭建之定时器模块HALL接口功能

描述

概述

本章节主要是介绍了华芯微特公司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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分