OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4189|回复: 6

正交编码器模式下配置了两个GPIO口PA6、PA7和编码器的A、B相返回信号是怎么对应的啊,看配置代码好像没有说是怎么对应的。

[复制链接]

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-9-18
在线时间
7 小时
发表于 2015-10-14 17:17:42 | 显示全部楼层 |阅读模式
5金钱

void CoderTimeInit(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
 TIM_ICInitTypeDef TIM_ICInitStructure;          //定义结构体变量
 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //时钟使能
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;   //接收编码器脉冲A波B波的引脚
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA,&GPIO_InitStructure);                    //GPIO设置
 
 TIM_DeInit(TIM3);                                         //将TIM3设置为默认缺省值
 TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                    //设置预分频器分频系数
 TIM_TimeBaseStructure.TIM_Period = 65535-1;                   //设置自动重载计数周期值
 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;         //设置时钟分频因子
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    //设置计数方式
 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);               //初始化定时器TIM3参数
 
 TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,
                            TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);   //配置定时器TIM3的编码器接口
 TIM_ICStructInit(&TIM_ICInitStructure);         //  把TIM_ICInitStruct中的每一个参数按缺省值(默认值)填入                             
 TIM_ICInitStructure.TIM_ICFilter = 6;            //比较滤波器,实质是设置了TIMx->CCMRx寄存器的IC1F[3:0]位
 TIM_ICInit(TIM3,&TIM_ICInitStructure);          //根据TIM_ICInitStruct中指定的参数初始化外设TIM4
 TIM_Cmd(TIM3,ENABLE);

程序里没有说PA6一定与A波对应,我把接线反过来接就程序运行就不对了,这是为什么啊?新手,对这一块不太了解。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

527

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1424
金钱
1424
注册时间
2011-11-27
在线时间
122 小时
发表于 2015-10-15 08:10:14 | 显示全部楼层
如果PA6接A相是递增计数,接反就是递减计数。
永远保持一颗学习的心态。
回复

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-9-18
在线时间
7 小时
 楼主| 发表于 2015-10-15 21:33:35 | 显示全部楼层
回复【2楼】科科1987:
---------------------------------
我看手册里面说有TI1FP1,TI2FP2信号是不是就是对应的编码器的A,B信号呀。还有就是不清楚程序里配置编码器接口时有没有规定6对应的是TI1FP1,7对应的是TI2FP2,还是说没有这样的规定,看电机的正反转时的计数方向来确定。
回复

使用道具 举报

38

主题

527

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1424
金钱
1424
注册时间
2011-11-27
在线时间
122 小时
发表于 2015-10-16 09:29:01 | 显示全部楼层

PA6,7与A,B相之间没有对应关系,只是计数方向不同而已;
但是在编码器模式下CH1肯定对应TI1FP1,CH2对应TI2FP2
永远保持一颗学习的心态。
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-10-21
在线时间
12 小时
发表于 2015-10-21 20:49:37 | 显示全部楼层
我想问下TIM3的CH3CH4通道能用来检测编码器么
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-7-18
在线时间
15 小时
发表于 2015-11-18 11:58:43 | 显示全部楼层
回复【5楼】superboy_lin:
---------------------------------
应该不可以,只有CH1与CH2有偏码模式
学到老,活到老
回复

使用道具 举报

19

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
382
金钱
382
注册时间
2014-1-7
在线时间
42 小时
发表于 2017-12-24 12:42:34 | 显示全部楼层
搞定了吗?我也遇到这个问题了,定时器2就可以了,定时器3就不行
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 16:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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