OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

楼主: 科科1987

STM32编码器接口模式--寄存器版

  [复制链接]

  离线 

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-1-21
在线时间
17 小时
发表于 2016-2-15 15:32:54 | 显示全部楼层
正点原子公众号
你好,STM32编码器接口模式,是不是只是适用于电机上的编码器(光电的那种),如果用在机械编码器(ALPS的编码开关)抖动<4ms的机械触点就不行了。
回复 支持 反对

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-6-15
在线时间
32 小时
发表于 2016-2-16 09:22:42 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-2-16 14:53:06 | 显示全部楼层
Jerry_9527 发表于 2016-2-15 15:32
你好,STM32编码器接口模式,是不是只是适用于电机上的编码器(光电的那种),如果用在机械编码器(ALPS的 ...

是的
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2014-6-23
在线时间
17 小时
发表于 2016-2-18 16:32:22 | 显示全部楼层
mark~~
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-18 23:16:40 | 显示全部楼层
正点原子公众号
本帖最后由 SCREA 于 2016-2-18 23:19 编辑

楼主,抓狂了,帮忙看下,一晚上出来的值一直是ARR的值
先谢谢了
TIM4_CodeInit(399,36);
读取CNT全是399,读数据是从TIM4->CNT读取吧
我用的400线的
[AppleScript] 纯文本查看 复制代码
void TIM4_CodeInit(u16 arr,u16 psc)
{
        RCC->APB2ENR |= 1<<3;
        GPIOB->CRL &= 0x00ffffff;
        GPIOB->CRL |= 0x44000000;      //浮空输入,PB6/7 
        RCC->APB1ENR|=1<<2 ;            /*TIM4时钟使能*/
        RCC->APB1RSTR |= (1<<2);
        RCC->APB1RSTR &= ~(1<<2);
        TIM4->ARR    =arr;                   /*设定计数器自动重装值*/
        TIM4->PSC    =psc;                                 /*预分频器*/
        TIM4->CR1   |=0x0080;             /*ARPE使能, 中央对齐模式2,向上计数*/
        
        TIM4->SMCR  |= 3;                 /*俩通道全用上*/
        TIM4->CCMR1 |= 0x4141;        /*CH1 通道,无预分频器,采样率N=6   CH2同CH1*/
        TIM4->CCER  |= 0x11;             /*CH1、2 捕获发生在 上升沿, 捕获使能*/
        TIM4->CNT    = 0;
        
        TIM4->DIER  |= (1<<6) | 7;    /*允许跟新中断*/
        TIM4->CR1   |=1<<0;            /*使能定时器4*/
//        MY_NVIC_Init(1,2,TIM4_IRQChannel,2);  /*抢占,子优先级3,组2 */
}
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-19 08:58:18 | 显示全部楼层
科科1987 发表于 2013-8-9 21:19
回复【26楼】648342243:

                                                                        回复【楼主位】科科1987:
---------------------------------
LZ你好, ...

楼主,我遇到一样的问题。


A相接CH1,B相接CH2.    且 外部电路 都上拉一个电阻。  不对吗?
电源5V,GND都接了
QQ截图20160219085700.png
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-2-19 09:29:44 | 显示全部楼层
SCREA 发表于 2016-2-18 23:16
楼主,抓狂了,帮忙看下,一晚上出来的值一直是ARR的值
先谢谢了
TIM4_CodeInit(399,36);

TIM4->CCMR1 |= 0x4141;        /*CH1 通道,无预分频器,采样率N=6   CH2同CH1*/
这里为什么要这样设置?
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-19 09:40:10 | 显示全部楼层
科科1987 发表于 2016-2-19 09:29
TIM4->CCMR1 |= 0x4141;        /*CH1 通道,无预分频器,采样率N=6   CH2同CH1*/
这里为什么要这样设置 ...

框住的就是,通道1、2 都是 的N是6,所以是0x4040

先谢谢楼主及时回答!谢谢了
QQ截图20160219093834.png
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-2-19 10:44:39 | 显示全部楼层
SCREA 发表于 2016-2-19 09:40
框住的就是,通道1、2 都是 的N是6,所以是0x4040

先谢谢楼主及时回答!谢谢了

400线的编码器,如果AB相向上向下都计数,每转计数400*4=1600
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-19 10:59:57 | 显示全部楼层
本帖最后由 SCREA 于 2016-2-19 11:35 编辑
科科1987 发表于 2016-2-19 10:44
400线的编码器,如果AB相向上向下都计数,每转计数400*4=1600

你遇到过 这样没 ,  就是  转的时候 CNT 不是0就是ARR 或这ARR-1 ,ARR-2
这是怎么回事啊

-------------------
我的硬件接的 应该正确啊,确实 外部上拉了啊
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-19 11:07:17 | 显示全部楼层
本帖最后由 SCREA 于 2016-2-19 11:35 编辑
科科1987 发表于 2016-2-19 10:44
400线的编码器,如果AB相向上向下都计数,每转计数400*4=1600

你遇到过 这样没 ,  就是  转的时候 CNT 不是0就是ARR 或这ARR-1 ,ARR-2
这是怎么回事啊


-------------------
我的硬件接的 应该正确啊,确实 外部上拉了啊

回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-2-19 14:14:13 | 显示全部楼层
SCREA 发表于 2016-2-19 11:07
你遇到过 这样没 ,  就是  转的时候 CNT 不是0就是ARR 或这ARR-1 ,ARR-2
这是怎么回事啊

没有遇到你这种情况,你转动一个很小的角度,计数器数值看有什么变化
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-19 17:36:26 | 显示全部楼层
本帖最后由 SCREA 于 2016-2-19 17:38 编辑
科科1987 发表于 2016-2-19 14:14
没有遇到你这种情况,你转动一个很小的角度,计数器数值看有什么变化

我想问下楼主,寄存器设置对吗???她们的程序 这个预分频为何  TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // No prescaling


我的主频72Mhz, 改成36Mhz不对吗?
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-2-20 08:39:57 | 显示全部楼层
SCREA 发表于 2016-2-19 17:36
我想问下楼主,寄存器设置对吗???她们的程序 这个预分频为何  TIM_TimeBaseStructure.TIM_Prescaler = ...

寄存器配置没看到什么错的地方,你再仔细看看。主频改为36M也应该可以。
你可以这样试试:按照我的程序测试一下,如果可以再一步一步改成你现在的,看看问题出在哪里
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2016-2-21 07:50:53 | 显示全部楼层
本帖最后由 SCREA 于 2016-2-21 21:27 编辑
科科1987 发表于 2016-2-20 08:39
寄存器配置没看到什么错的地方,你再仔细看看。主频改为36M也应该可以。
你可以这样试试:按照我的程序 ...

怪我,没仔细看是否上拉成功
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-6-10
在线时间
1 小时
发表于 2016-6-10 20:53:37 | 显示全部楼层
@科科1987
编码器计数,轮子一周正转正常,反转比正转一周多出了三四百个计数:
然后我用51产生一定数量的方波,发现随着频率的升高,编码器计数趋向正常了。
这可能是什么原因
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-6-11 14:47:44 | 显示全部楼层
STONEK 发表于 2016-6-10 20:53
@科科1987
编码器计数,轮子一周正转正常,反转比正转一周多出了三四百个计数:
然后我用51产生一定数量 ...

计数的时候统计溢出次数了吗?
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

0

主题

8

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-4-11
在线时间
8 小时
发表于 2016-10-22 18:59:28 | 显示全部楼层
各位高手,谁有编码器现成的AB倍频 程序 麻烦给传授一下,可以私下交流。邮箱:tzsm_fzy@163.com
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-10-24 07:31:07 | 显示全部楼层
yyfnfqp 发表于 2016-10-22 18:59
各位高手,谁有编码器现成的AB倍频 程序 麻烦给传授一下,可以私下交流。邮箱:

配置成在TI1和TI2上计数,例如200线的编码器,每转计数800次。
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

1

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-16
在线时间
1 小时
发表于 2016-10-31 21:03:00 | 显示全部楼层
如果用编码器模式同时测两个电机的速度,用到两个定时器,该如何设置定时器的中断优先级呢,望大神解答
回复 支持 反对

使用道具 举报

  离线 

6

主题

267

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2349
金钱
2349
注册时间
2016-7-17
在线时间
347 小时
发表于 2016-11-1 08:33:45 | 显示全部楼层
看见直接操作寄存器就觉得舒服。
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2016-11-1 09:24:25 | 显示全部楼层
stephen_young 发表于 2016-10-31 21:03
如果用编码器模式同时测两个电机的速度,用到两个定时器,该如何设置定时器的中断优先级呢,望大神解答

编码器接口模式相当于使用了一个带有方向选择的外部时钟,一般使用定时器计算溢出中断来统计溢出次数,然后再单位时间内统计计数个数来测速,如果ARR配置合适的话,编码器转的很快的时候才会发生溢出中断,也就是说中断发生并不频繁,中断里执行一个overcnt++就行,很短,这2个溢出中断优先级配置成相同也行。
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

21

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2017-3-6
在线时间
32 小时
发表于 2017-7-1 11:52:42 | 显示全部楼层
我用你的程序怎么测出来的脉冲一直为0?
回复 支持 反对

使用道具 举报

  离线 

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2017-3-2
在线时间
15 小时
发表于 2017-7-3 12:15:46 | 显示全部楼层
科科1987 发表于 2013-6-10 19:50
回复【19楼】敌害:

                                                                        回复【18楼】科科1987:
---------------------------------
使用CH3和&nbsp;C ...

好像并不可以啊,有具体的修改方法么
回复 支持 反对

使用道具 举报

  离线 

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2017-3-2
在线时间
15 小时
发表于 2017-7-3 12:51:33 | 显示全部楼层
murongyiruo 发表于 2013-4-27 10:49
回复【16楼】科科1987:
---------------------------------
void&nbsp;Encoder_Init(void)
{
        /*&nbsp;TIM4 ...

我也是这么改的同样不行,不知道楼主有没有解决
回复 支持 反对

使用道具 举报

  离线 

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2014-7-9
在线时间
15 小时
发表于 2017-7-3 13:35:27 | 显示全部楼层
顶下
回复 支持 反对

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-3
在线时间
0 小时
发表于 2017-7-3 17:55:27 来自手机 | 显示全部楼层
这里怎么使用?
来自: 微社区
回复 支持 反对

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-3
在线时间
0 小时
发表于 2017-7-3 17:56:05 来自手机 | 显示全部楼层
我想请教问题
来自: 微社区
回复 支持 反对

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-3
在线时间
0 小时
发表于 2017-7-3 17:57:09 来自手机 | 显示全部楼层
我要用TFT显示器,买哪家的好?
来自: 微社区
回复 支持 反对

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-3
在线时间
0 小时
发表于 2017-7-3 17:57:42 来自手机 | 显示全部楼层
用什么开发工具好呢?
来自: 微社区
回复 支持 反对

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-3
在线时间
0 小时
发表于 2017-7-3 17:58:17 来自手机 | 显示全部楼层
哪位高手请指点一下我。
来自: 微社区
回复 支持 反对

使用道具 举报

  离线 

3

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-1-16
在线时间
13 小时
发表于 2017-7-4 09:54:17 | 显示全部楼层
棒棒哒
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-12
在线时间
0 小时
发表于 2017-7-12 20:54:56 | 显示全部楼层
最近在学光电编码器,一点头绪都没,看看楼主的,希望有帮助。
回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2017-7-15 10:51:16 | 显示全部楼层
我超爱学习 发表于 2017-7-12 20:54
最近在学光电编码器,一点头绪都没,看看楼主的,希望有帮助。

加油
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-7-20
在线时间
18 小时
发表于 2017-8-11 21:27:54 | 显示全部楼层
SCREA 发表于 2016-2-21 07:50
怪我,没仔细看是否上拉成功

我也遇到和你一样的问题,请问是如何解决的
回复 支持 反对

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-7-20
在线时间
18 小时
发表于 2017-8-11 21:42:03 | 显示全部楼层
请问楼主,用你的程序,读CNT的值就是0或者ARR,请问这是什么问题,是硬件要接上拉电阻吗,第一次用不是很懂
回复 支持 反对

使用道具 举报

  离线 

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2013-10-18
在线时间
44 小时
发表于 2017-8-14 12:01:25 | 显示全部楼层
DragonZ 发表于 2017-8-11 21:27
我也遇到和你一样的问题,请问是如何解决的

端口上拉就解决了
回复 支持 反对

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2017-5-10
在线时间
2 小时
发表于 2017-12-27 16:25:56 | 显示全部楼层
楼主,你能帮我看看这个编码器的程序吗?计数出来不太对,能帮我解决一下吗

测试速度左右电机.rar

5.41 MB, 下载次数: 30

回复 支持 反对

使用道具 举报

  离线 

38

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1379
金钱
1379
注册时间
2011-11-27
在线时间
115 小时
 楼主| 发表于 2018-2-27 13:26:03 | 显示全部楼层
无限思念 发表于 2017-12-27 16:25
楼主,你能帮我看看这个编码器的程序吗?计数出来不太对,能帮我解决一下吗

寄存器操作需要对仔细研究参考手册,建议使用stm32cubeMX生成编码器配置代码。
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

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

GMT+8, 2018-7-23 19:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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