14664|28

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm32输出一个脉冲数和频频率都可调的最少用几个Timer? [复制链接]

                                 目前正在做一个东西,用stm32给电机发脉冲,电机要求可定位,可调速,有编码器反馈,完成这东西最少要用几个定时器呢?
此帖出自stm32/stm8论坛

最新回复

                                 我现在是用计数的方式,类似版主的做法,我现在还有一个问题没有解决,比如输出的脉冲个数这个过程,必须得有一个加减速的过程,用中断的话,在入高频CPU都没法干别的事了 ... 按照26楼的方法,加减速的过程就是改变TIM1的计时时间的过程,改变计时时间可以在中断中实现,如果怕中断过于频繁,如果计时时间改变的步幅和时间点可以事先确定,则可以先计算好每步需要设置的参数,然后通过设置DMA,由DMA在指定的时刻装填预制的参数。  详情 回复 发表于 2010-7-4 10:55
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 你最好具体点,要求什么样的波形。没做个电机,我不知道要求可定位、可调速的电机需要什么的波形。
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
电机是个小的伺服机,需要高速转时输入为300K的方波,在高速转时需要平滑起动和停止;
定位在低速定位,转时要发30K的方波,30K方波的输出个数要求可设置,之后要与编码器的反馈作比较
此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 算了一下得用4个才够。。。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
电机是个小的伺服机,需要高速转时输入为300K的方波,在高速转时需要平滑起动和停止;
定位在低速定位,转时要发30K的方波,30K方波的输出个数要求可设置,之后要与编码器的反馈作比较 ...
如果是这样,应该最多3个TIM。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 我现在对TIM的同步还是不太理解, 版主可否说个大体的框架,手册上说触发事件(计数器启动、停止、初始化或者同内部/外部触发计数)可以产生中断,但是在中断允许寄存器没有发现这些东西是可以控制的,比如,说编码器的0位信号、位移传感器、接近开关信号,如果用这些信号来启动、复位、停止、初始化定时器或是生产中断的话,应该用什么模式呢?
此帖出自stm32/stm8论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 版主,有没有关于类似的应用案例,我今天得好好看一下手册
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 TIM1输出脉冲,TIM2对TIM1进行计数,但是TIM2的启动、停止、复位外部控制,这个怎么实现呢?
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
关于定时器的同步问题,首先要先看STM32参考手册上的相关说明,然后再看看STM32固件库中的例子,在最新的STM32固件库中有4个有关同步定时器的例子:

STM32_FWLib_TIM_Example.gif (138.01 KB)

STM32_FWLib_TIM_Example.gif

此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 白天上不方便
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
我要对输出脉冲个数控制的话,如果用TIM1输出脉冲,用TIM2计TIM1输出脉冲的个数,需要把TIM1的输出管脚边到CH1连到TIM2的管脚CH1上吗?

在中断里计数上不了频率,用RCR的话,个数满足不了
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

12
 
123.JPG

我看了一下版主提的那几个例子,但是有几点不明白的地方:
举一个例子:我以TIM1以比较输出方式输出30K的脉冲,用TIM2来计数输出的脉冲个数,到达5000个脉冲(假设)后,关闭TIM1。首先配置TIM1为主模式,输出触发源CH1REF,而后配置TIM2为从模式,输入的TS位以TIM1的ITR0, TIM2的模式位就有点不明白了,不知道应该那个模式
1、TS触发源给到TIM2后是是作CEN启、停用还是作TIM2的时钟输入呢?
2、TIM2应该什么模式,从模式寄存器的SMS位为111时手册上写的是外部时钟模式1,而书上写的外部时钟模式2?设置为从模式时时钟是谁给的?PCLK?
3、TIM2计到5000后,不经中断可以关TIM1么?
4、以上说的按照给定的脉冲个数输出,还有300K输出脉冲频率平滑启动和停止,这种方法是不是最佳的?有没有更好的方法呢?

第一次用stm32,希望能得到版主和各位网友的指点,谢谢
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

13
 
今天先试了stm32的编码器接口,编码器是一家德国出的,一转是5000个细分点,A、B、Z相接口,即sin、cos、zero接口的。用zero的下降沿触发外部中断,然后,起动TIM5的编码器接口,开始计数。计数值为5000*4-1,这样可以做到低速下的绝对位置反馈

我感觉用zero信号触发中断再开TIM5的编码计数器,是不是有点多余了,怎么设置能不能直接用它来启动TIM5呢,不过有一个问题:zero信号是一转有一个脉冲的哦,用它来直接起动TIM5,编码器每转一转,来一个CEN会不会出乱呢?
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 stm32的TIM很强大,但是手册写得有点散乱
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 同意楼上的观点
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 这手册有时挺难看明白
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

17
 
一个定时器即可。请参考:

<转>张明峰的Bloghttp://www.myhcs08.com/blog/info/article_detail.aspx?id=248
实现多路任意延时的一种方法2007-11-27
一个单片机系统的设计经常会用到多种不同目的和用图的定时,例如系统需要输出一个指示“心跳正常”的秒闪信号,间隔0.5s;按键检测时临时需要约20ms的消抖;蜂鸣器需要发声延时;用户菜单选择时可能需要对应的发光管或LCD点阵(字段)闪烁;通讯时需要设定应答超时判别,等等。是不是要抱怨一个单片机上的若干个定时器不够用了?其实,用一个定时器资源就可以搞定所有的这一切定时要求。
1)首先,选定一个你喜欢的定时器,按所需应用的定时精度要求设定其定时中断频率。一般人机界面的定时精度为ms级就足够了,所以可以设定定时中断时间间隔为1ms,5ms或10ms;例如我的选择:
//==============================================================
// TPM2 overflow interrupt service routine
// Interrupt at every 1ms
//==============================================================
void interrupt 14 TPM2_Overflow_ISR(void)
{
TPM2SC_TOF = 0; //reset interrupt flag
msTimeoutCount++; //1ms increment
}
变量msTimeoutCount是一个16位word型的静态变量,在中断服务程序中简单地对它递增,无需考虑溢出。如果你的中断时间间隔为Nms,则在中断中对其递增的方法为“msTimeoutCount += N”。它在程序模块的前面被声明,为了提高中断服务程序的效率,其被定位在直接寻址区:
。。。。。。。。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

18
 
一个定时器即可。请参考:

张明峰的Bloghttp://www.myhcs08.com/blog/info/article_detail.aspx?id=248
实现多路任意延时的一种方法2007-11-27
一个单片机系统的设计经常会用到多种不同目的和用图的定时,例如系统 ...
你的做法我能理解,但是以什么样的算法从0Hz到300kHz,实现一个平滑的起停过程,要求加速时间和减速时间可设置,可固定于任意频率,任意的脉冲数。中断方式可能会影响系统的时实性,系统中还有很多传感器呢,且在这个系统中一共是3个电机,如果在3个电机同时加减速呢。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

19
 
300kHz???

什么电机能跑到300kHz?
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                 伺服电机,输入频率与转速比有关系,
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表