历史上的今天
今天是:2025年02月13日(星期四)
2019年02月13日 | STM32正交编码器编程
2019-02-13 来源:eefocus
如图,STM32的每个TIMER都有正交编码器输入接口,TI1,TI2经过输入滤波,边沿检测产生TI1FP1,TI2FP2接到编码器模块,通过配置编码器的工作模式,即可以对编码器进行正向/反向计数。

如下图,编码器使用了A,B两相信号,但是我只需要对TI1信号进行计数(第一行),我也是刚发现了这个错误,原来对两个信号都计数,导致码盘转一周得到不止100个脉冲(100线的光电码盘)。通过STM32的编码器模块比较两想的电平信号就可以很容易地计算出编码器的运行情况了。

代码如下:
void Decoder_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_StructInit(&GPIO_InitStructure);
/* Configure PA.06,07 as encoder input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_DeInit(TIM3);
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 2000;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising,
TIM_ICPolarity_Rising);
TIM_ICStructInit(&TIM_ICInitStructure);
TIM_ICInitStructure.TIM_ICFilter = 6;
TIM_ICInit(TIM3, &TIM_ICInitStructure);
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
//Reset counter
TIM3->CNT = 1000;
TIM_Cmd(TIM3, ENABLE);
}
史海拾趣
|
WSAData wsaData; //初始化Socket动态链接库 if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) { return ; ...… 查看全部问答> |
|
上面图片是我定制时选择的模块,但定制完成后,发现缺少Pimstore.h和Pimstore.lib这两个文件,这两个文件是poom api中的,是不是定制的时候还需要选择别的模块呢?谢谢… 查看全部问答> |
|
就像被鼠标点击了的效果一样。 我的ListView的创建过程: g_hwndlist = CreateWindow(WC_LISTVIEW,TEXT(\"\"), &nbs ...… 查看全部问答> |
|
重量级文档--基于AT91RM9200 OHCI的USB主机 基于AT91RM9200 OHCI的USB主机 1 第一部分 概述... 4 1.1 前言... 4 1.2 &n ...… 查看全部问答> |
|
由3.3V的单片机控制一个由电阻网络组成的电路:3个IO控制用电阻网络的形式输出3.3、2.0、1.34、0.7、0V。2个IO控制用电阻网络的形式输出3.3、1.65、1、0.4V。目的要输出电压准确,至少保留两位小数。大概的接近电压的话,本人以实现了,但准确有困 ...… 查看全部问答> |
|
文档中也有关FT的说明, FT=Five -Volt tolerant .In order to sustain a voltage higher than Vdd+0.3 V the internal pull up / pull down resistors must be disable. 正是因为must be disable 让我比较困惑 ...… 查看全部问答> |
|
各位朋友,我原本是专科的应用电子专业毕业生,两年后打算从返电子行业,那么如果要应聘助理工程师或者技术员岗位,需要做哪些准备?哪些地方需要特别注重呢? 之前我也看到过招聘网站对该岗位的招聘要求, ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 LED变色是怎么实现的呢?晚上霓虹灯闪耀的高楼大厦外墙,看到那些LED在一直不停滴变色,我想知道变色的原理是什么?难到LED本身会变色?初学者,请教大家。 … 查看全部问答> |




