15884|37

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教版主---PWM输入模式中SelecttheTIM2InputTrigger [复制链接]

例子程序中是使用TIM2_CH2作为input port的,使用的是TI2FP2。
我现在同时要使用TIM2_CH4作为input port。 

那我ch4的触发输入还是用TI2FP2,我就在TIM_PWMIConfig()里面再增加了CH4通道的配置,用的是TI3,TI4,因为TI1,TI2例程里面用在了CH2上。

然后我不停的读 CCR2 和 CCR4 的值。CCR2因为就是例子工程,所以是没问题的。但是CCR4当我在TIM_PWMIConfig了CH4的时候,有计数,但是当我不去config CH4的时候,依然还是会计数, 这是什么问题?

我的改法有问题?
此帖出自stm32/stm8论坛

最新回复

图在哪里啊  详情 回复 发表于 2012-6-3 13:29
点赞 关注
 

回复
举报

77

帖子

0

TA的资源

宇宙尘埃

沙发
 

请问当你配置了CH4之后,操作是否正确?

如果操作正确,就说明你的修改正确。

至于没有配置CH4的问题,要看你是否禁止了CH4的功能,如果没有禁止,CH4当然还在工作;你这次没有配置,但上次配置了之后,你不明确地禁止它,在系统没有掉电复位的情况下,它依然可以是处于工作状态的。
此帖出自stm32/stm8论坛
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

我配置了ch4后,读出的ch4的pwm输入频率值不对

我就在原例程上加了这些:
TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
  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);

其中TIM_PWMIConfig函数里面增加了:
if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3)
  {
    /* TI3 Configuration */
    TI3_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);

    /* TI4 Configuration */
    TI4_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else
  { 
    /* TI4 Configuration */
    TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);

    /* TI3 Configuration */
    TI3_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 

我这么改的想法是:

我现在不明白到底TI2FP2是可以用于整个TIM的所有有PWM输入连接的信号,还是只能用于CH2?  
如果TI2FP2只能用于CH2输入,那样的话CH4就好像没有TI2FP4这种了,手册上也是没有。 如果真的TI2FP2只能用于CH2输入,那硬件上岂不有输入通道限制了? 一个TIM,最多输入两路PWM,那输入管脚只能TIMX_CH1,TIMX_CH2?  这点手册上没有讲明白,是我的一大困惑
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 

请看看这个帖子中我的贴图,你就明白怎么做了

https://bbs.eeworld.com.cn/club/bbs/list.asp?boardid=49&page=1&t=3145250

其实这张图就在STM32技术参考手册(RM0008)中有关TIMx章节的开始部分。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 

再请看这张图中的红线或蓝线部分

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 

恩,谢谢香主的提示图,基本上我明白了。

我如果输入信号接在TIMx_CH4上,那我必须要使用TI3FP3,TI4FP4了。所以说,如果连接输入PWM信号的话,还是有一定规则的,必须CH1,CH2  ;  CH3,CH4配对使用。

TIMx_CCMR2我没用,所以没有反应,这是我的问题了。

但是在library文件stm32f10x_tim.h中,只有:
#define TIM_TS_TI1FP1                      ((u16)0x0050)
#define TIM_TS_TI2FP2                      ((u16)0x0060)

未看到TI3FP3,TI4FP4,TIMx_SMCR寄存器中:
bit[6:4] = 101 TI1FP1, 110 TI2FP2
但是无TI3FP3,TI4FP4的设置描述。











此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 

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

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 

但是我在user manual 中也没看到啊?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 

是关联的。

TIFP1 ---T3FP3

我也是测试 硬件看出来的。 有CPU在,测试一下就知道了。
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(中级)

11
 

netjob,你的意思是

TI1FP1,TI2FP2是一对,TI3FP3,TI4FP4是一对。 这个应该没有疑问了。


另外,原先例子库里面:
#define TIM_TS_TI1FP1                      ((u16)0x0050)
#define TIM_TS_TI2FP2                      ((u16)0x0060)

那如果是关联的,TIM_TS_TI3FP3应该是这样的喽
#define TIM_TS_TI3FP3                      ((u16)0x0070)
#define TIM_TS_TI4FP4                      ((u16)0x0080)?

此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

12
 

是关联的

设 通道1、2为 TI1FP2  就等于 把通道3、4 设为 TI3FP4 !

我测试硬件就是这样的结果。
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

13
 

ST公司没说清楚,因此是STM32的一个 BUG !

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

14
 

那如果我这样的话

如果我CH2,CH3分别连了一个PWM输入,那我只要设置TI2FP2(根据例子),TI1FP1即可?
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 

我刚才在PWM Input输入例程下这么改的

我现在单独连一个pwm信号到ch3,
TIM_ICInitStructure.TIM_Channel = TIM_Channel_3;
  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);

TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1);

IC3Value = TIM_GetCapture3(TIM2);

但是IC3Value读出来的频率不对,我PWMIConfig里面增加了channel_3的对应代码
if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3)
  {
    /* TI3 Configuration */
    TI3_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);

    /* TI4 Configuration */
    TI4_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else
  { 
    /* TI4 Configuration */
    TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);

    /* TI3 Configuration */
    TI3_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value */
    TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

16
 

13楼能说清楚些吗?

                                 你认为这是芯片的Bug?还是库函数的Bug?还是手册的Bug?
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

17
 

香主能告知一下吗?谢谢

版主,TI1,TI2是一对,TI3,TI4是一对,这是毫无争议的。
并且手册上 TIMx_SMCR上只有TI1FP1,TI2FP2的选择说明。
在例子库中也只定义了:
#define TIM_TS_TI1FP1                      ((u16)0x0050)
#define TIM_TS_TI2FP2                      ((u16)0x0060)

那我现在在ch3上还有一路信号需要检测,那我肯定是用TI3和TI4来检测了,因为TI3是硬件连接的,所以IC3到TI3上,IC4也映射到TI3上。 那我TI3FP3的定义如何定义呢?手册和例子库中都没有写到这点。
按照10楼的说法,意思是TI1FP1定义了,也等于定义了TI3FP3,但是我试下来有问题。我使能了CH3上的各个寄存器,然后输入触发选择了TI1FP1,最终从CCR3上读数并计算频率,是错误的。(后来改用CCR1来读,那更是错误的。)  

请版主解答一下,谢谢
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

18
 

无人解答?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

19
 

我在8楼已经说过固件库中漏掉了TI3FP3、TI4FP4的设置描述

                                 我正在等待固件库的作者把这部分补上,如果你着急的话,可以自己分析一下库函数并自己修改一下。
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

20
 

我测试怎么就是好的!LZ是如何知道不对?

看捕获的数据。也没发现什么问题啊!

我都晕了!

同一通道 触发输入。 这点肯定可以做到的。这没问题!

LZ的问题是:
TI3FP3、TI4FP4
TI3FP4、TI4FP3

就是从模式控制寄存器SMCR , 选择有效的触发输入信号?--TS

但是奇怪。既然通道已经可以映射。 
比如CCR3,CCR4都映射到 TI3  .而且一个是上升触发,一个是下降触发。

那么这个 【有效的触发输入信号】到底有何用?
我试过,这个值改为其他,照样OK!

我用TIM  测试过它的   计数方式,输入捕获,都OK.

这个PWM捕获,我测试也看不出什么问题!
所以:
LZ是如何知道不对?
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表