STM32编码器接口 以及应用编程

发布者:SparklingStar22最新更新时间:2024-08-01 来源: elecfans关键字:STM32  编码器接口  应用编程 手机看文章 扫描二维码
随时随地手机看文章

Ⅰ 关于编码器

编码器的种类有很多,什么增量式编码器、绝对值编码器,有轴或者无轴编码器,电压输出、推拉输出、集电极开路输出等等。但不管什么类型的编码器,其目的都类似,得到转动的角度,角速度、位移等。


本文讲述常见的增量式编码器,增量式编码器也可以叫正交编码器,也就是说可以通过其A、B的相位知道编码器是正转,还是反转,还可以根据编码器参数得出旋转了多少角度等。


常见的增量式编码器A、B、Z三根线代表什么意思呢?使用过编码器的人不难理解,这里简单给初学者讲述一下:

A、B两线提供相位相差90度的脉冲信号,用其来计算旋转的角度;Z线为过零点线,也就是说每转一转,经过某一点都会输出一个脉冲信号,主要用于“过零校正”,三线的信号大致如下图(左边):

有些编码器出来的线有一个对应的“非”信号线(如上图右边),其实主要用于抗干扰的。

更多关于编码器的描述,请网上搜索相关的知识进行了解,本文不再讲述。

Ⅱ STM32编码器接口模式

在STM32芯片中,都有这么一个定时器,叫通用定时器“General-purpose timers”,定时器里面存在这么一个模式,叫编码器接口模式“Encoder interface mode”。当然,具体是哪一个TIM,可参看芯片对应的数据手册,可以一目了然。

STM32提供的编码器接口模式主要针对的就是“正交编码器”,它可以利用定时器的“计数”功能,得出编码器计了多少个脉冲;同时,它可以根据编码器AB的相位得出编码器是正转,还是反转。

(图片来自STM32参考手册)

1.计算脉冲个数

有点类似TIM的捕获功能,捕获A相、B相的脉冲信号;只是编码器模式是捕获A(TI1)、B(TI2)相的边沿信号(如上图),相当于一个周期内,计4个脉冲信号的值。

2.计数器的增减(方向)

STM32的计数器会根据方向(+ 或者 -)来进行计数,TI1和TI2相位相差90,4个阶段的边沿,对应TI1和TI2不同电平信号,从这个不同的信号,硬件自身可以判断出其方向。在编码器模式下,有个寄存器(TIMx_CR1)中有一个方向位(DIR),会随着编码器旋转方向的改变而改变,我们可以通过读取该位来判断编码器的正转,还是反转。

3.TIM时基

STM32编码器接口模式,其实是通过利用AB相位TIM时基提供时钟信号,使其计数。

Ⅲ 应用编程

相信看了上面的一些描述,大家应该对编码器有所理解了。其实,在STM32中,可以通过配置编码器模式对应的函数,就能实现获取编码器传感器上面的信息了。

使用STM32提供的标准外设库,或者使用STM32CubeMX工具很容易将TIM配置成编码器模式。

1.标准外设库配置编码器

TIM_EncoderInterfaceConfig,它就是编码器接口的配置函数。简单的只需要配置该函数,使能TIM,即可实现采集编码器上面的信息。(当然,需要复杂的操作,还需要做其他相应的配置)

void ENCODER_Configuration(void){ TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); TIM_Cmd(TIM3, ENABLE);}

2.STM32CubeMX配置

STM32CubeMX是一套快速开发的工具,让很多不了解STM32底层的朋友可以快速的在STM32上编写应用程序。

本文说的配置编码器接口,在某些TIM上存在一个“Combined Channel”配置,可以理解为“连接通道”,也算是TIM的一种复用模式。选择里面的“Encoder Mode”即可。

Ⅳ 实例代码

本文提供的代码为一个使用标准外设库编写的简单Demo工程,其中里面附带一个工程(用于模拟编码器AB相波形的工程),如下如:

该工程主要配置TIM的编码器模式,通过定时读取编码器的方向(DIR),和计数(CNT),并通过串口打印出来。


关键字:STM32  编码器接口  应用编程 引用地址:STM32编码器接口 以及应用编程

上一篇:STM32_ TIM输出PWM波形
下一篇:STM32中的SysTick时钟源来自哪里?

推荐阅读最新更新时间:2026-03-20 21:35

STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置
cube基本配置,外设开启编码器,串口2 -------------------------------------------------------------------------------------------------------------------------- 错误:error: #20: identifier TIM_ICPOLARITY_BOTHEDGE is undefined 意思是,高级、通用定时器不能用BothEdge,只有基本定时器才能用BothEdge F4系列 /* 编码器初始化及使能编码器模式 */ ENCODER_TIMx_Init(); HA
[单片机]
<font color='red'>STM32</font> HAL库学习系列第5篇 定时器TIM---<font color='red'>编码器</font><font color='red'>接口</font>模式配置
STM32学习笔记之正交编码器接口
最近做一个项目,主控芯片用STM32RBT6,要用到光栅尺,本来带一个控制器的,通过控制器的232可以读取光栅尺的数据,但这个控制器太大,设备中放不下,于是,考虑自己做一个,网上看到很多有用CPLD的方案,后来无意间发现stm32的定时器可以配置成编码器,甚喜 高兴之余,突然发现stm32的定时器是16位的,我的光栅尺的计数会超过65535,于是在21ic论坛上和几位高手请教,最终确定的方案 工作过程是配置TIM3为正交编码器模式,并定一个10ms的中断,每10ms读取一次计数值,10ms的前提是在10ms内计数器不溢出(这个思想要感谢21ic的 lxyppc ) 以下是部分代码:(这些代码修改于ST官方的例程,但我的工程用的
[单片机]
STM32 IAP 应用编程几个要点
我们常看到ISP、ICP、IAP等缩写词组,它们的主要作用就是对程序代码进行更新(编程)。 下面将介绍关于编程的基础知识,以及结合STM32官方提供的Demo讲述一下关于编程的内容。 1关于ISP、ICP、IAP 1.ISP ISP:In System Programing,在系统编程。 比如:使用STC-ISP对STC芯片编程,利用Flash loader对STM32编程等。 支持ISP的芯片一般在芯片内部固化了一段(用ISP升级的)boot程序。 2.ICP In Circuit Programing,在电路编程。 ICSP:In-Circuit Serial Programming,在电路串行编程。如:对EEPROM编程
[单片机]
<font color='red'>STM32</font> IAP <font color='red'>应用</font><font color='red'>编程</font>几个要点
瑞萨电子通过RZ / T1解决方案支持HIPERFACE DSL®数字编码器接口
瑞萨电子株式会社(TSE:6723)今日宣布推出基于RZ / T1系列微处理器(MPU)的一款新的解决方案包,该方案支持AC伺服器的HIPERFACE DSL®数字编码器接口,可大幅降低客户BOM成本,加快产品上市时间。 RZ / T1系列MPU采用Arm® Cortex®-R4处理器,带双精度浮点运算单元(FPU),工作频率高达600 MHz,集成了实时处理、紧致内存、高速模拟器件,支持双伺服电机。针对分布式运动的网络连接能满足高精度AC伺服驱动应用的要求。 目前,RZ / T1已经支持其他很多领先的编码器接口,如EnDat 2.2、BiSS®-C、Tamagawa和A-formatTM等。 这次,RZ/T1全新发布支持
[嵌入式]
基于DSP的绝对式光电编码器串行接口设计
摘要: 为了实现SSI接口的绝对式光电编码器在电机伺服控制系统中对电机位置的检测,采用了DSP芯片TMS320F2812的通用I/O口模拟SSI接口与绝对式编码器之间的通信,编写了模拟SSI接口通信时序程序并做了绝对式编码器位置检测实验,获得了绝对式编码器全范围的输出值,单圈数值为0~25536,经4 096圈可输出范围0~268 435 456数值。得到了绝对式编码器在电机伺服控制系统中可实现位置精确采集和精确控制以及利用通用I/O口,实现SSI接口通信,其具有设计简单、成本低、易维护、位置检测精确以及可替代专用解码芯片的特点。 关键词: 绝对编码器;DSP;串行通信SSI;TMS320F2812 0 引言 在电机伺
[嵌入式]
基于DSP的绝对式光电<font color='red'>编码器</font>串行<font color='red'>接口</font>设计
机械测量中旋转编码器与单片机的通用接口
  在准备”Freescale”杯全国大学生智能车比赛中我们开始的时候是采用红外传感器来测量速度,但是它受环境的干扰很大,且响应频率很小,还达不到1K Hz,为了提高速度测量精度和响应频率,减小环境的干扰,决定采用了旋转编码器,我们成功地开发了单片机与旋转编码器的最简硬件接口。   旋转编码器及其工作原理   旋转编码器是用来测量角度的装置。它分为单路输出和双路输出两种。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。   它将测量到的角度量转换为数字脉冲信号输出,用来检测被检对象的角位移、角速度、角加速度、线位移、线速度和线加速
[单片机]
机械测量中旋转<font color='red'>编码器</font>与单片机的通用<font color='red'>接口</font>
基于FPGA的绝对式编码器通信接口设计
  0 引言   光电码盘是一种基本的位置、速度检测反馈单元,非常广泛地应用于变频器、直流伺服、交流伺服等系统的闭环控制中。为了减小体积,绝对式编码器一般采用串行通信方式输出绝对编码,针对伺服电机控制等高端场合,为了满足快速的电流环、速度环、位置环的控制需要,编码输出的速度又应该非常快,这些不利因素都对绝对式编码的接收增加了难度。   绝对式编码器厂家大多为其编码器配套了接收芯片,实现串行编码到并行编码的转换,便于控制器的读取操作。但是此类芯片通常价格比较昂贵,大约占绝对式编码器价格的四分之一。目前国内外高端交流伺服系统中普遍采用FPGA+DSP结构。DSP用来实现矢量变换和其它算法流程;FPGA用以实现译码、A、B、 Z信号
[嵌入式]
基于FPGA的绝对式<font color='red'>编码器</font>通信<font color='red'>接口</font>设计
差分可编程振荡器,频点50MHz,LVDS输出,应用于音视频处理器
音视频处理器是一种专用芯片或集成电路,用于处理音频和视频信号的输入、输出和处理。它通常被用于各种音视频设备和系统中,如电视机、音响系统、数字影音播放器、监控摄像头、视频会议设备等。 音视频处理器中的晶振扮演着重要角色。一方面,音视频处理器需要严格的时钟同步,以确保音视频信号的稳定处理和同步输出。晶振提供的基准时钟信号用于同步各个部件和模块的工作,确保它们以正确的时间间隔进行数据处理和传输。 另一方面,音视频处理器通常需要对输入信号进行采样和转换,例如将模拟音频信号转换为数字音频信号,或者对视频信号进行数字化处理。晶振可用于控制数据采样的时序,确保输入信号能够准确地被转换和处理。 此外,晶振的频率和工作模式对音视频处理器的功
[嵌入式]
差分可<font color='red'>编程</font>振荡器,频点50MHz,LVDS输出,<font color='red'>应用</font>于音视频处理器
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved