打印

ST的定时器竟然不支持上升沿和下降沿同时捕捉

[复制链接]
7024|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcu2051|  楼主 | 2008-11-7 09:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
逮着ST的定时器研究了几天,竟然发现ST的定时器不支持单通道的上升沿和下降沿同时捕捉,要同时捕捉还要占用2个通道,更可恶的是还要占用2个IO引脚!超级极郁闷!正交编码计数器都支持了,这点小东西不支持,各位有没有不占2个IO的更好的办法呀?
沙发
barboon| | 2008-11-7 10:26 | 只看该作者

不一定要2个IO

配置一下TIMx_CCMRx的CCxS位
可以实现把ICx映射到别的引脚上
具体可以参考用户手册(Rev6)的寄存器相关说明和图73

使用特权

评论回复
板凳
mcu2051|  楼主 | 2008-11-7 10:43 | 只看该作者

讨论

配置TIMx_CCMRx的CCxS位是可以映射到其他引脚上,例如IC1可以映射到TI1或TI2上,好像不能同时映射到TI1和TI2

使用特权

评论回复
地板
香水城| | 2008-11-7 11:12 | 只看该作者

芯片内有通道,不需两个I/O

请看下图的通道标记。

使用特权

评论回复
5
mcu2051|  楼主 | 2008-11-7 11:53 | 只看该作者

回复

不好意思,发帖时说错了,应该把“同时”去掉,我的问题是“ST的定时器是否支持单通道的上升沿和下降沿捕捉”,想用一个IO实现上升沿和下降沿捕捉。请问香水城:IC1能同时连接TI1FP1和TI2FP1吗?我在TIMx_CCMRx的寄存器中没找到怎么设置CCxS位?

使用特权

评论回复
6
mcu2051|  楼主 | 2008-11-7 12:49 | 只看该作者

回复5楼

5楼所说的PWM输入模式我看了,它实质上是在上升沿(或下降沿)复位计数器的计数值,在下降沿(或上升沿)进行捕捉,并非真正的两次捕捉。

使用特权

评论回复
7
香水城| | 2008-11-7 21:39 | 只看该作者

请看RM0008 275页中的表95

6楼贴了这个图,但不知21IC今天为什么所有图都丢了。

使用特权

评论回复
8
蒸钱会| | 2008-11-7 23:09 | 只看该作者

别人俩比较器管一管脚,而STM反其道行之

难怪它一个计数周期里产不出对称的两相PWM脉冲,弄 6 step 3相PWM倒是专家

使用特权

评论回复
9
lixun00| | 2008-11-15 20:56 | 只看该作者

TIxFPy,(x>2),在哪,怎么应用?

对照TI1FP2和TI1FP1的PWM输入捕捉例子,移植到其它的就是没反应

使用特权

评论回复
10
香水城| | 2008-11-15 22:30 | 只看该作者

请看这张图中的红线或蓝线部分,这是STM32手册中TIMx的框图

使用特权

评论回复
11
lixun00| | 2008-11-16 20:07 | 只看该作者

对啊,TI3FP3,TI3FP4,TI2FP1,TI2FP2,TI4FP3,TI4FP4,没找到啊

使用特权

评论回复
12
香水城| | 2008-11-16 21:12 | 只看该作者

TIMx_CCMR2寄存器

这是RM0008第322页的内容,请对照13楼的图看,其它的与此相似:

使用特权

评论回复
13
lixun00| | 2008-11-17 08:04 | 只看该作者

我的意识是在提供的库里没有看见这个定义,只有1的定义

使用特权

评论回复
14
香水城| | 2008-11-17 08:41 | 只看该作者

请楼上看看TIM_ICInit()函数的参数和说明

手册里都有的内容你为什么总是说没有?

使用特权

评论回复
15
lixun00| | 2008-11-17 17:39 | 只看该作者

呵呵,我全文搜索没发现.

/* TIM Internal Trigger Selection ------------------------------------------*/
#define TIM_TS_ITR0                        ((u16)0x0000)
#define TIM_TS_ITR1                        ((u16)0x0010)
#define TIM_TS_ITR2                        ((u16)0x0020)
#define TIM_TS_ITR3                        ((u16)0x0030)
#define TIM_TS_TI1F_ED                     ((u16)0x0040)
#define TIM_TS_TI1FP1                      ((u16)0x0050)
#define TIM_TS_TI2FP2                      ((u16)0x0060)
#define TIM_TS_ETRF                        ((u16)0x0070)

使用特权

评论回复
16
香水城| | 2008-11-17 17:48 | 只看该作者

估计固件库中漏掉了TI3FP3、TI4FP4的设置描述

另一个帖子中有人问了同样的问题:https://bbs.21ic.com/club/bbs/list.asp?boardid=49&page=1&t=3152595

已经通知写这个库的人把这部分内容补上。

使用特权

评论回复
17
lixun00| | 2008-11-17 17:55 | 只看该作者

是啊,因为时间紧,很多东西没办法细看的,只能参考库例了

TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;

  TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);

  /* Select the TIM2 Input Trigger: TI2FP2 */
  TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);

这个当时改其它的,就发现没有定义了

使用特权

评论回复
18
lixun00| | 2008-11-17 17:59 | 只看该作者

当时以为st不会范这样明显的错误,就没祥究

使用特权

评论回复
19
daicheng0| | 2009-1-4 11:37 | 只看该作者

关注了

正好学习一下!

使用特权

评论回复
20
香水城| | 2009-1-4 12:08 | 只看该作者

请注意:PWM输入模式只能通过TI1FP1和TI2FP2实现

请看,最新版STM32参考手册中图122下面的说明:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

29

帖子

0

粉丝