【求助】STM32的tim4经过remap后接5v正交编码信号计数有问题

xw0326   2008-5-18 14:37 楼主
代码
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO , ENABLE);
                            
    GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13;
//    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //floating也不对
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU  ;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

         TIM_SetAutoreload(TIM4, 0xffff);
    TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);

    TIM_Cmd(TIM4, ENABLE);
                            tim4_counter = TIM_GetCounter(TIM4);

PD12和13被remap成tim4的正交编码输入,PD12和13是5V兼容的端口,现象是计数会自动变化,编码器不供电则不会变化。当IO设置成FLOATING模式,则不接编码器都会自己变化。注:PD12和PD13除了接编码器未和其他管脚连接。

这个编码器模式我一直未正常使用过,用过的大侠指导一下,我郁闷的不行了。。。

回复评论 (6)

你的编码器输入接上拉了吗?编码器不是开漏输出就是差分输

                                 差分输出的最好是用专用差分解码片子(485的接收),开漏输出的必需加上拉
点赞  2008-5-19 08:48

感谢楼上的回答

                                 我这个编码器除供电外,只有ABZ三根线,应该是开漏输出的。我将IO模式设为输入上拉,编码器计数仍旧不对,会自动跳变。编码器经测试是完全正常的。只是问题还是不知道出在哪里。
点赞  2008-5-19 20:15

用内部上拉基本不好使的(因为它太弱),直接在外部加5.1K以内

                                  
点赞  2008-5-20 08:25

                                  
点赞  2008-5-20 09:59

谢lianshumou的回复

                                 我再试试
点赞  2008-5-21 18:50

顶个老贴上来

                                  
点赞  2009-4-3 00:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复