完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32 的Encoder 使用
增量式编码器在实际应用中还是很常见。 stm32的定时器带的也有编码器模式。 所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。 AB相根据旋转的方向不同,输出的波形如下图所示: 从图上可以看出来,cw方向A相会超前B相90度左右,相反CCW方向,B相会超前A相90度左右。不过方向判断stm32自己是可以完成的。下面是使用stm32cubeMx配置的过程。 环境 软件:stm32cubemx mdk 芯片型号:stm32F407IGH6 使用的是定时器2 步骤 1 首先打开timer2的encoder模式: 2 下面才是重点,配置具体定时器的参数: 选择的encoderMode是 **TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。**也就是第一个参数,分频值设为3,实际上是3+1=4分频。 还有个地方需要解释一下,我刚开始的时候就是把这里的设置没搞清楚,看Polarity参数设置的是Rising Edge。这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB相的上升沿,下降沿还是同样会计数的。 Input Filter滤波值是从1-15,看情况设定,是用来滤除一些杂波的。 3 生成代码 这样基本就配置好了,生成mdk工程。 然后就是添加应用代码了。 在初始化中添加打开定时器的encoder模式: HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL); 然后定期调用下面这一句函数就可以获取到encoder编码器的计数值: enc1 = (uint32_t)(__HAL_TIM_GET_COUNTER(&htim2)); //获取定时器的值 开始瞅瞅测出的速度吧~ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:31 , Processed in 0.857221 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号