OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32/FPGA开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 436|回复: 4

关于读取编码器的相关问题,望大神解答

[复制链接]

  离线 

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2018-9-10
在线时间
17 小时
发表于 2018-9-10 21:35:37 | 显示全部楼层 |阅读模式
1金钱
1.TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);        TIM_TimeBaseStructure.TIM_Prescaler = 0x0; /
        TIM_TimeBaseStructure.TIM_Period = (ENCODER_PRE*4)-1;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
请问ENCODER_PRE表示编码器每转一圈所产生的脉冲数,那么这个脉冲数为什么要乘以4,是因为AB相一个周期会有4个上升下降沿吗?

2.void TIM4_IRQHandler(void)   
{
        if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) ;
       
编码器中断服务函数表示溢出中断,也就是码盘每转一圈就会出现一次溢出中断吗?

3.stm32在编码器模式下会自动判断AB相得相位得出旋转方向感从而对CNT进行+1或者减1吗?

4.void TIM4_IRQHandler(void)   
{
        if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) ;
        {
                TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
                if ((TIM4->CR1 & 0x10) ==0x00)
                {
                         Overflow1++;
                }
                if ((TIM4->CR1 & 0x10) ==0x10)
                {
                         Overflow1--;
                }
        }
}
考虑正反转的话,在中断处理函数中就要判断是向上溢出还是向下溢出,因此需要读CR1寄存器的方向位进行判断?

5.脉冲数=【溢出事件数*(编码器线数*4)+定时器当前计数值】/4
pluse=(Overflow*((ENCODER_PRE*4)-1)+TIM_GetCounter(TIMx))/4;
这样计算脉冲数对吗?

烦请大神吗答疑了,小弟感激不尽!!!

最佳答案

查看完整内容[请看2#楼]

https://blog.csdn.net/wang328452854/article/details/50579832 这篇博客里面讲解的很清除
回复

使用道具 举报

  离线 

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2017-12-14
在线时间
17 小时
发表于 2018-9-10 21:35:38 | 显示全部楼层
回复

使用道具 举报

  在线 

524

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135915
金钱
135915
注册时间
2010-12-1
在线时间
1366 小时
发表于 2018-9-11 02:00:42 | 显示全部楼层
帮顶
回复

使用道具 举报

  离线 

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-5-14
在线时间
16 小时
发表于 2018-9-11 11:07:15 | 显示全部楼层
那是因为编码器内部做了一次分频处理
我依稀记得安川电机后面的编码器也是这样的,编码盘线数越多,那么每旋转一定的角度它需要处理传感器的信息量就越大,尤其是现在编码器技术的发展很迅速,很多编码器都达到了21位,甚至23位,编码器内部的芯片就已经对码盘进行了滤波和分频的处理,这样才可以得到理想的波形
回复

使用道具 举报

  离线 

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2017-12-14
在线时间
17 小时
发表于 2018-10-12 16:54:52 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




关闭

正点原子STM32/FPGA资料免费洗澡上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-12-19 22:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */