搜索
bottom↓
回复: 11

关于编码器接口的疑问 假如编码器 每转2000个脉冲 ,stm32计数器增加 4000个计数?

[复制链接]

出0入0汤圆

发表于 2010-7-18 13:04:41 | 显示全部楼层 |阅读模式
//TIM_EncoderMode_TI2   Counter counts on TI2FP2 edge depending on TI1FP1 level.
        TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI2,         TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);

编码器 是这样子的


(原文件名:11.jpg)

stm32数据手册

(原文件名:22.jpg)

若选用TIM_EncoderMode_TI2,则Counter counts on TI2FP2 edge depending on TI1FP1 level. 即T1高的时候 T2上升沿计数 ,T1低的时候。T2下降沿计数、

也就是 说  每个周期  编码器计数2次。


这样理解正确吗?????????

我现在 编码器 每转2000个脉冲 ,stm32计数器增加 4000个计数

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-7-18 14:34:32 | 显示全部楼层
是这样的,但是为什么不用TIM_EncoderMode_TI1+TIM_EncoderMode_TI2模式呢2000变8000~

出0入0汤圆

 楼主| 发表于 2010-7-18 17:17:46 | 显示全部楼层
回复【1楼】real_sugar  
是这样的,但是为什么不用tim_encodermode_ti1+tim_encodermode_ti2模式呢2000变8000~
-----------------------------------------------------------------------

对 ,当使用 TIM_EncoderMode_TI12 模式的时候  计数器 一圈增加8000

出0入0汤圆

发表于 2010-7-19 21:20:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-4-13 20:56:28 | 显示全部楼层
楼上你能不能不要mark
看见你就烦

出130入129汤圆

发表于 2012-4-13 21:10:06 来自手机 | 显示全部楼层
x4模式抗抖动好

出0入0汤圆

发表于 2012-4-14 15:35:52 | 显示全部楼层
楼上的你好!学习需要一个过程。不然我也不用make.
附上之前在论坛找到的编码器应用代码,供需要的同学参考。我已验证过计数模式是X4
void ENC_Init(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_ICInitTypeDef TIM_ICInitStructure;
  
/* Encoder unit connected to TIM3, 4X mode */   
  GPIO_InitTypeDef GPIO_InitStructure;
  
  /* TIM4 clock source enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  /* Enable GPIOB, clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  
  GPIO_StructInit(&GPIO_InitStructure);
  /* Configure PB.6,7 as encoder input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Enable the TIM4 Update Interrupt */
  /*
  NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMx_PRE_EMPTION_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMx_SUB_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
        */
        
  /* Timer configuration in Encoder mode */
  TIM_DeInit(TIM3);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;  // No prescaling
  TIM_TimeBaseStructure.TIM_Period = (4*512)-1;  
  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 = ICx_FILTER;
  TIM_ICInit(TIM3, &TIM_ICInitStructure);
  
        // Clear all pending interrupts
  TIM_ClearFlag(TIM3, TIM_FLAG_Update);
  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  //Reset counter
  TIM3->CNT = COUNTER_RESET;          
  

  TIM_Cmd(TIM3, ENABLE);  
}

出0入0汤圆

发表于 2012-4-27 15:02:50 | 显示全部楼层
感谢楼上

出0入0汤圆

发表于 2012-6-2 16:26:38 | 显示全部楼层
好东东,谢了

出0入0汤圆

发表于 2012-6-4 09:08:51 | 显示全部楼层
最近也做这个,比较困惑

出0入0汤圆

发表于 2013-8-1 00:17:53 | 显示全部楼层
好像库函数手册中只说到TIM1的计数器功能

出0入0汤圆

发表于 2020-12-18 13:14:19 | 显示全部楼层
作个计号,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 03:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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