这里是使用STM32F103系列,其他型号可能略有区别

设置步骤:

1.首先HALL的IO口初始化

2.硬件HALL接口初始化

3.检测到hall信号变化会触发TIM5中断,中断处理进行电机换向

重点分析:

xx.TIM_Channel = TIM_Channel_1;是通道选择,这里只有通道1,也只能选择通道1,因为1/2/3通道最后都只能异或到通道1上,没有其他选择

xx.TIM_ICSelection = TIM_ICSelection_TRC;选择触发捕获,1/2/3通道被连在一起

TIM_SelectInputTrigger(TIM5, TIM_TS_TI1F_ED);                   //输入触发源选择,选择通道1

xx.TIM_ICFilter = 0x04;//重点说一下滤波器,数据手册上解释的不够清楚,这里TIM5的时钟频率是84MHz,1个周期时间=1/84 ns;如果TIM_ICFilter=0,说明采样一个周期的信号就作为有效判断信号,例如前一刻IN=0,下一刻IN=1,这时开始捕获电平,那捕获多长时间作为有效判断呢,这个参数就是决定这个的,如果设定上升沿有效,TIM_ICFilter=0说明只需要采集1个周期(1/84 ns)的电平信号就来判断是否是上升沿,如果TIM_ICFilter=8那就是采集8*1/81 ns这么长时间再判断是否有上升沿,如果中间有一次电平不一样,则重新采样计数,知道连续8次的电平一样才作为判断依据;

滤波器其实是为了抗干扰,因为会有电磁干扰进入引脚,就相当于按键的多次计数软件滤波

另外说明:使用定时器5计数溢出中断,这个是为了计算hall跳变换相时间间隔,用来计算速度

代码分享:

void HALL_IO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStre;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);

GPIO_InitStre.GPIO_Pin=HALL_U_Pin|HALL_V_Pin|HALL_W_Pin;
    GPIO_InitStre.GPIO_Mode=GPIO_Mode_IPU;//上拉输入
    GPIO_InitStre.GPIO_Speed=GPIO_Speed_10MHz;
    GPIO_Init(GPIOA,&GPIO_InitStre);    
}
/**********************************************************************/
//名称:void HALL_InterIO_Init(void)
//功能:HAll信号外部中断初始化
//参数:无
//返回:无
/**********************************************************************/
void HALL_InterIO_Init(void)
{
    TIM_ICInitTypeDef  TIM_ICInitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    
    HALL_IO_Init();//Hall IO基本初始化
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
    //初始化定时器 84MHz
    TIM_TimeBaseInitStre.TIM_Prescaler=84-1;//1MHz
    TIM_TimeBaseInitStre.TIM_Period=0xFFFF-1;//计数65535=65.535ms
    TIM_TimeBaseInitStre.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInitStre.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseInitStre.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM5,&TIM_TimeBaseInitStre);

//CC1S=01     选择输入端 IC1映射到TI1上
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;// 注意只有一个通道|TIM_Channel_2|TIM_Channel_3;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;//双边沿触发
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_TRC;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//配置输入分频,不分频 
  TIM_ICInitStructure.TIM_ICFilter = 0x04;//滤波器
    TIM_ICInit(TIM5,&TIM_ICInitStructure);

/* 配置TIM为中断源 */
  NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
    
    TIM_SelectHallSensor(TIM5,ENABLE);                          //使能TIMx的霍尔传感器接口,同时异或映射
  TIM_SelectInputTrigger(TIM5, TIM_TS_TI1F_ED);                   //输入触发源选择    
  
    TIM_SelectSlaveMode(TIM5, TIM_SlaveMode_Reset);                 //从模式选择为复位模式
  TIM_SelectMasterSlaveMode(TIM5, TIM_MasterSlaveMode_Enable);    //主从模式选择 使能
   /* 允许更新中断 ,允许CC1IE捕获中断     */
  TIM_ITConfig(TIM5, TIM_IT_Trigger, ENABLE);//
  /* 使能定时器 */
  TIM_ClearITPendingBit(TIM5,TIM_IT_Trigger);//清除触发中断标志

TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);//使能溢出中断
     TIM_ClearITPendingBit(TIM5, TIM_IT_Update);//清除中断

TIM_ARRPreloadConfig(TIM5,ENABLE);//自动装载 
     TIM_Cmd(TIM5, ENABLE);//使能
}

/**********************************************************************/
//名称:void EXTI15_10_IRQHandler(void)
//功能:Hall TIM5输入捕获中断服务函数
//参数:无
//返回:无
/**********************************************************************/
void TIM5_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM5,TIM_IT_Trigger)!=RESET)
    {
        HAll_ChangePhase();//电机换相

TIM_ClearITPendingBit(TIM5,TIM_IT_Trigger);
    }

if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)
    {
        Count++;//溢出次数

TIM_ClearITPendingBit(TIM5,TIM_IT_Update);
    }

}

STM32 BLDC无刷直流电机 HALL霍尔硬件接口 程序相关推荐

  1. STC单片机驱动BLDC无刷直流电机(无HALL)官方示例

    STC单片机驱动BLDC无刷直流电机(无HALL)官方示例 示例代码在STC8系列文档第20章里面:http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pd ...

  2. BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序

    BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...

  3. BLDC无刷直流电机和PMSM永磁同步电机

    BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...

  4. ,bldc 无刷直流电机和pmsm永磁同步电机 主控TMS28335

    28335主控,bldc 无刷直流电机和pmsm永磁同步电机 主控TMS28335,,有原理图,以下代码 三相异步电机 VF变频调速程序 三相永磁同步电机 无感 双闭环FOC程序 三相永磁同步电机 有 ...

  5. BLDC无刷直流电机仿真设计simulink 转速电流双闭环 调速系统 matlab simulink仿真

    BLDC无刷直流电机仿真设计simulink 转速电流双闭环 调速系统 matlab simulink仿真 有整理好的文档,资料很详细,可以直接用,有参考资料, ID:3230671328383169 ...

  6. BLDC无刷直流电机转速控制Simulink模型(分别采用数学方法和SimScape库搭建,后者仿真效果更好)

    BLDC无刷直流电机转速控制Simulink模型(分别采用数学方法和SimScape库搭建,后者仿真效果更好) 版本:marlab2018a,可生成低版本 算法采用PI控制 仿真时设期望转速为800r ...

  7. 基于STM32的无刷直流电机无传感器调速系统代码和原理图

    说明:有代码和原理图 项目代码很全(是两个大项目,两个项目的区别是一个有传感器一个没有,其余实现功能都相同) 无感方波有 有传感器(霍尔元件)的编程也有 1: 基于STM32的无刷直流电机无传感器调速 ...

  8. BLDC(无刷直流电机)应用相关

    1.基于XC866的直流无刷电机简易正弦波控制 http://blog.gkong.com/hushunlin_219521.ashx 2.无刷直流电机的PWM调制方式介绍 http://blog.g ...

  9. BLDC无刷直流电机之电机驱动的组成

    1.组成 框图如下 五大组成分析: 1.MCU:主要是信号的处理,反馈信号故障信号的处理,同时会给出6路PWM波,给到门极驱动 2.门极驱动:带动功率器件,带动电机的旋转,电机也会给出转子的位置信号或 ...

最新文章

  1. linux 调用redis cli,使用redis-cli定时执行指定命令
  2. pytorch 笔记:tensorboardX
  3. CodeForces - 859C Pie Rules(dp+博弈)
  4. 判断groupbox中所有的edit是否为空,并给出空的哪个edit为空
  5. 你好a+b(非入门)
  6. TokenInsight:反映区块链行业整体表现的 TI 指数较昨日同期上涨9.79%
  7. python画超长图-python—networkx:求图的平均路径长度并画出直方图
  8. linux centos 系统php支持jpeg的安装方法
  9. 从零基础入门Tensorflow2.0 ----九、44.5 keras转换成具体函数
  10. MAXScript学习笔记(1)
  11. git通过http的方式下载和提交代码
  12. 诺基亚系列手机型号命名研究(转)
  13. 菜鸟、小白在autojs和冰狐智能辅助之间如何选择?
  14. 保龄球计分c语言程序,求C语言代码解释(保龄球记分程序)
  15. java学习笔记-良葛格_Java良葛格 学习笔记
  16. Python 获取网站证书有效期
  17. Win7 注册ocx控件 “DllRegisterServer的调用失败,错误代码为0x80040200 ”
  18. 计算机重镜像网络文件夹位置,利用备份的Win10映像系统文件还原win10的教程
  19. 基于区块链的Smart系统-题库及试卷管理模块的设计与开发
  20. 用计算机怎么弹出凉凉这首歌,凉凉歌词的意思是什么 凉凉歌曲表达的意思

热门文章

  1. 一二线城市地王频出 供应加量能否房价“去火
  2. 区块链技术的安全价值与局限性解析
  3. 孪生素数的最优解(应该)
  4. win7下运行Excel2007,出现“向程序发送命令时出现问题”的解决
  5. 轻触开源(三)-Gson项目源码解析_贰
  6. 为什么需要每年重新签发SSL证书?
  7. 链塔智库|区块链产业要闻及动态周报(2021年8月第4周)
  8. Pytorch → ONNX → TensorRT
  9. C++数据结构——小明的通讯录(哈希表线性探测法)
  10. LLMs之Alpaca:《Alpaca: A Strong, Replicable Instruction-Following Model》翻译与解读