历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | stm32的编码器模式

2018-09-16 来源:eefocus

选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的
SMS=001;如果只在TI1边沿计数,则置SMS=010;如果计数器同时在TI1和TI2边沿计数,则
置SMS=011 

TI1FP1和TI2FP2
是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波和变相,则TI1FP1=TI1,
TI2FP2=TI2。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。依据两个输入信号
的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。
不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数,在任一输入端(TI1或者
TI2)的跳变都会重新计算DIR位。
编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到
TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计
数)。所以在开始计数之前必须配置TIMx_ARR;同样,捕获器、比较器、预分频器、重复计数
器、触发输出特性等仍工作如常。编码器模式和外部时钟模式2不兼容,因此不能同时操作。
在这个模式下,计数器依照增量编码器的速度和方向被自动的修改,因此计数器的内容始终指
示着编码器的位置。计数方向与相连的传感器旋转的方向对应。下表列出了所有可能的组合,
假设TI1和TI2不同时变换 
表73 计数方向与编码器信号的关系
226/754

相对信号的电平 
(TI1FP1对应TI2,
TI2FP2对应TI1)
TI1FP1信号TI2FP2信号有效边沿

上升下降上升下降

向下计数向上计数不计数不计数仅在TI1计数
向上计数向下计数不计数不计数
不计数不计数向上计数向下计数仅在TI2计数
不计数不计数向下计数向上计数
向下计数向上计数向上计数向下计数在TI1和TI2上计数
向上计数向下计数向下计数向上计数


一个外部的增量编码器可以直接与MCU连接而不需要外部接口逻辑。但是,一般会使用比较器
将编码器的差动输出转换到数字信号,这大大增加了抗噪声干扰能力。编码器输出的第三个信
号表示机械零点,可以把它连接到一个外部中断输入并触发一个计数器复位。
下图是一个计数器操作的实例,显示了计数信号的产生和方向控制。它还显示了当选择了双边
沿时,输入抖动是如何被抑制的;抖动可能会在传感器的位置靠近一个转换点时产生。在这个
例子中,我们假定配置如下:
● CC1S=’01’ (TIMx_CCMR1寄存器, IC1FP1映射到TI1)
● CC2S=’01’ (TIMx_CCMR2寄存器, IC2FP2映射到TI2)
● CC1P=’0’ (TIMx_CCER寄存器, IC1FP1不反相, IC1FP1=TI1)
● CC2P=’0’ (TIMx_CCER寄存器, IC2FP2不反相, IC2FP2=TI2)
● SMS=’011’ (TIMx_SMCR寄存器,所有的输入均在上升沿和下降沿有效).
● CEN=’1’ (TIMx_CR1寄存器,计数器使能) 
图91 编码器模式下的计数器操作实例


下图为当IC1FP1极性反相时计数器的操作实例(CC1P=’1’,其他配置与上例相同)
图92 IC1FP1反相的编码器接口模式实例


当定时器配置成编码器接口模式时,提供传感器当前位置的信息。使用第二个配置在捕获模式
的定时器,可以测量两个编码器事件的间隔,获得动态的信息(速度,加速度,减速度)。指示机
械零点的编码器输出可被用做此目的。根据两个事件间的间隔,可以按照固定的时间读出计数
器。如果可能的话,你可以把计数器的值锁存到第三个输入捕获寄存器(捕获信号必须是周期的
并且可以由另一个定时器产生);也可以通过一个由实时时钟产生的DMA请求来读取它的值。 

eg:

编码器A相接PB6,B相接PB7


#define ENCODENU 65536

void time4IOInit()

{
GPIO_InitTypeDef        GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //①使能 GPIOB 时钟

GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6 | GPIO_Pin_7; //PB6 7 设置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 

GPIO_Init(GPIOB, &GPIO_InitStructure); 
}


void time4CountInit()
{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);   //使能 TIM4 时钟
TIM4->ARR = ENCODENU-1;                                                                    //设定计数器重装值(因为没有使用更新中断所以将计数器设最大值,保证1s延时不会溢出)   
TIM4->PSC  = 0;                                                                                          //预分频器
TIM4->CR1 &=~(3<<8);                                                                              // 选择时钟分频:不分频
TIM4->CR1 &=~(3<<5);                                                                              //边沿对齐(根据dir位向上或者向下计数)
        //定时器4配置成编码器模式,双边沿触发
TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge ,TIM_ICPolarity_BothEdge);
TIM_SetCounter(TIM4, 0);                                                                       //计数器清零
}

void encoderConfig()
{
        time4IOInit();
time4CountInit();
TIM_Cmd(TIM4, ENABLE);  //计数器使能,开始工作

}

void main () 
{
int dir=0;
u16 nu=0;
encoderConfig();
for (;;) 
       {


dir=(TIM4->CR1 & 0x0010)>4;                                                     //取方向标志位
if(dir > 0){                                                                                         //向下计数
 nu = (ENCODENU-TIM_GetCounter(TIM4))/4;                  //除以4是因为一对脉冲计数器计数4次
         FG_Print("down ; TIM_GetCounter=%d  \r\n",nu*60/1000);//(*60是因为延时1s转换成一分钟,/1000是因为编码器转一圈是1000个脉冲)
}else{                                                                                              //向上计数
  nu = TIM_GetCounter(TIM4)/4;                              
          FG_Print("up ; TIM_GetCounter=%d  \r\n",nu*60/1000);
}


TIM_SetCounter(TIM4, 0); 
osDelay(1000);
}
}


推荐阅读

史海拾趣

EF Johnson Technologies Inc公司的发展小趣事

在电子通信技术的浪潮中,EF Johnson Technologies Inc公司凭借其卓越的研发团队,成功开发出一款新型无线通信设备,该设备在信号稳定性和传输距离上均取得了重大突破。这一技术突破不仅让EF Johnson在市场上获得了显著的竞争优势,也推动了整个行业的技术进步。随着产品的广泛应用,EF Johnson逐渐确立了其在无线通信领域的领先地位。

Anderson Power Products公司的发展小趣事

在产品质量方面,EF Johnson公司始终坚持高标准、严要求。公司建立了完善的质量管理体系,从原材料采购到生产制造再到售后服务,每一个环节都严格把关。这种对品质的执着追求让EF Johnson的产品在市场上赢得了良好的口碑和用户的信赖。随着品牌知名度的提升,EF Johnson的市场份额也稳步增长。

CT Micro公司的发展小趣事
  1. 创业初期与技术创新

CT Micro公司最初由几位电子工程领域的专家创立,他们看到了微型计算机断层扫描(Micro-CT)技术在电子行业中的巨大潜力。初期,公司面临着资金短缺和技术难题,但他们通过不断研发和创新,成功开发出了一款具有高性价比的Micro-CT设备,迅速获得了市场的认可。

  1. 市场拓展与合作伙伴关系

随着产品的成熟,CT Micro开始积极寻求市场拓展。他们与多家电子制造企业建立了合作关系,为这些企业提供Micro-CT设备的定制服务。通过与这些企业的合作,CT Micro不仅扩大了市场份额,还进一步提升了产品的技术水平和应用范围。

  1. 研发升级与产品迭代

面对日益激烈的市场竞争,CT Micro不断投入研发力量,对Micro-CT设备进行升级和迭代。他们成功推出了多款新型设备,具有更高的分辨率、更快的扫描速度和更低的辐射剂量。这些新产品的推出,进一步巩固了CT Micro在电子行业中的领先地位。

  1. 国际化战略与市场拓展

随着国内市场的饱和,CT Micro开始实施国际化战略。他们积极参与国际展览和研讨会,展示自己的产品和技术实力。同时,他们还在海外设立了销售和服务中心,为国际客户提供更加便捷的服务。通过这些努力,CT Micro成功打开了国际市场的大门。

  1. 社会责任与可持续发展

在快速发展的同时,CT Micro也积极履行社会责任。他们注重环保和可持续发展,采用环保材料和节能技术生产产品。此外,他们还积极参与公益事业,为贫困地区的教育和医疗事业贡献力量。这些举措不仅提升了公司的社会形象,也为其可持续发展奠定了坚实基础。

请注意,这些故事框架是虚构的,并不代表CT Micro公司的实际发展情况。如果您需要了解CT Micro公司或类似公司的真实故事,建议您查阅相关公司的官方网站、新闻报道或行业分析报告。

泰科天润(GPT)公司的发展小趣事

机顶盒,全称数字视频变换盒,是连接电视与外部信号源的重要设备,其专业性与科普性均不容忽视。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,它们承担着将各种信号源转换为电视可识别并播放的格式的重要任务。

机顶盒的核心功能在于接收、解码和显示。它能接收来自有线电缆、卫星天线、宽带网络及地面广播等多种传输介质的数字电视信号,并通过内置的解调器和解码器,将这些信号转换为电视能够播放的视频和音频流。这一过程中,机顶盒展现了其强大的技术实力,确保用户能够享受到高质量的视听体验。

随着技术的发展,机顶盒不断进化。从最初的模拟频道增补器、解码器,到如今支持高清、4K乃至8K超高清播放的智能网络机顶盒,机顶盒的每一次升级都带来了更加丰富的内容选择和更加便捷的使用体验。同时,网络机顶盒的出现更是将电视与互联网紧密相连,使得用户能够通过电视屏幕浏览网页、观看在线视频、下载应用程序、享受交互式娱乐等多元化服务。

此外,机顶盒还具备强大的扩展性和可定制性。通过搭载不同的软件和硬件设备,机顶盒可以满足不同用户的个性化需求,如家庭影院功能、社交媒体互动、语音控制等。这些功能的加入不仅提升了机顶盒的实用性,也使其成为了现代家庭娱乐的重要组成部分。

综上所述,机顶盒作为连接电视与外部世界的桥梁,其专业性与科普性在不断提升中。随着技术的不断进步和市场的不断扩大,机顶盒将继续为用户带来更加优质、便捷、智能的视听体验。

Chicago Miniature公司的发展小趣事

1931年,Chicago Miniature Lamp(CML)在美国创立,初始阶段,公司面临着资金短缺、市场竞争激烈等诸多挑战。然而,创始人凭借对光电技术的深刻理解和对市场的敏锐洞察,坚信微型照明有着巨大的发展潜力。他们不断研发新型微型照明产品,逐渐在市场中站稳脚跟。公司初期虽然规模较小,但产品质量可靠,逐渐获得了客户的认可。

Gespac Inc公司的发展小趣事

随着LED技术的兴起,CML敏锐地捕捉到了这一趋势,并成为第一家引进LED灯具的公司。这一决策为公司带来了巨大的发展机遇。CML不断投入研发资源,推出了一系列具有创新性的LED产品,不仅提高了照明效率,还降低了能耗。这使得CML在微型照明领域逐渐取得了领先地位,并赢得了广泛的客户基础。

问答坊 | AI 解惑

半导体晶圆产品又增加了两种新技术

2007年结束的时候,合同制造市场状况不稳。虽然当年营业额增长情况不错,但iSuppli公司修正后的合同制造产业预测显示,该产业的增长速度将在长期内放缓。 合同制造市场由电子制造服务(EMS)提供商与原始设计制造(ODM)公司构成,该市场2007年增长了15 ...…

查看全部问答>

我来传本不错的书

这本书是我从学习DSP以来认为写得最不错的一本书,讲的是用C/C++开发DSP程序,当序更多的还是C 语言。希望对大家有一定的帮助。 介绍,基于5000系列。 第一章 TMS3205000开发平台介绍 第二章 TMS3205000硬件平台介绍 第三章 C/C++程序设计 第 ...…

查看全部问答>

那个刚才有人发了个NEC的DF系列芯片的网址(免费)

本帖最后由 paulhyde 于 2014-9-15 09:30 编辑 那个家伙太TM狠了,把网址写在记事本里,整个压缩文件,然后收费!鄙视你 http://www.necel.com/cgi-bin/nesdis/o003_e.cgi?article=DF781235 这个就是那个记事本里的网址  …

查看全部问答>

有用过LM3S系列arm的吗?

如题,我们一起讨论讨论啊…

查看全部问答>

用C/C++ 做嵌入开发工资如何啊?

昨天去面试了一家公司,做了他们的测试题完了之后看了我简历并和我谈了很久说让我去做嵌入式开发,因为以前多用VC开发,这方面工资大概应该多少啊?我先不说我谈的了,看看大家知道的应该是多少,我也不知道,可我觉得他给我的少了…

查看全部问答>

论坛首页登陆的问题

登陆后,传统论坛首页就能正常显示用户名,新首页还是显示登陆对话框,我还以为我掉线了呢,建议修改下…

查看全部问答>

【低功耗】SRAM、SDRAM的Verilog模型

SRAM、SDRAM的Verilog模型 SRAM :IS61LV25616AL.exe SDRAM :mt48lc2m32b2.v [ 本帖最后由 dream_byxiaoyu 于 2011-11-21 10:44 编辑 ]…

查看全部问答>

关于DSP2812正交编码问题

各位师兄师姐大牛大家好: 小弟刚开始接触DSP2812,还没有入门,真心求大家领路,真心希望大家指点迷津。我不要现成代码,有了方法,我自己来实现。 说一下我的工程背景,我在电力行业,做开关断路器机械特性的在线监测。现在要捕获欧姆龙旋转编 ...…

查看全部问答>

msp430仿真器升级问题

我今天不小心点了升级后,马上断开了仿真器与电脑的链接,仿真器的指示灯就不亮了,也不能进行仿真了 用仿真功能时提示连接错误,不能set Vcc;…

查看全部问答>

求一篇基于FPGA的阻抗网络测试用的正弦波信号源设计论文

Verilog hdl编程,按键控制,有锁相环,放大器,LCD显示器,幅值-2到—+2v,误差%0.1,频率在1khz--200khz,输出正弦波,最近毕业急用,非常感谢…

查看全部问答>