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

[复制链接]
7988|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

请看下图的通道标记。
 楼主| mcu2051 发表于 2008-11-7 11:53 | 显示全部楼层

回复

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

回复5楼

5楼所说的PWM输入模式我看了,它实质上是在上升沿(或下降沿)复位计数器的计数值,在下降沿(或上升沿)进行捕捉,并非真正的两次捕捉。
香水城 发表于 2008-11-7 21:39 | 显示全部楼层

请看RM0008 275页中的表95

6楼贴了这个图,但不知21IC今天为什么所有图都丢了。
蒸钱会 发表于 2008-11-7 23:09 | 显示全部楼层

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

难怪它一个计数周期里产不出对称的两相PWM脉冲,弄 6 step 3相PWM倒是专家
lixun00 发表于 2008-11-15 20:56 | 显示全部楼层

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

对照TI1FP2和TI1FP1的PWM输入捕捉例子,移植到其它的就是没反应
香水城 发表于 2008-11-15 22:30 | 显示全部楼层

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

lixun00 发表于 2008-11-16 20:07 | 显示全部楼层

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

香水城 发表于 2008-11-16 21:12 | 显示全部楼层

TIMx_CCMR2寄存器

这是RM0008第322页的内容,请对照13楼的图看,其它的与此相似:
lixun00 发表于 2008-11-17 08:04 | 显示全部楼层

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

香水城 发表于 2008-11-17 08:41 | 显示全部楼层

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

手册里都有的内容你为什么总是说没有?
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)
香水城 发表于 2008-11-17 17:48 | 显示全部楼层

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

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

已经通知写这个库的人把这部分内容补上。
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);

这个当时改其它的,就发现没有定义了
lixun00 发表于 2008-11-17 17:59 | 显示全部楼层

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

daicheng0 发表于 2009-1-4 11:37 | 显示全部楼层

关注了

正好学习一下!
香水城 发表于 2009-1-4 12:08 | 显示全部楼层

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

请看,最新版STM32参考手册中图122下面的说明:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部