• 使用定时器获取转速信息(PWM频率)


    一、原理

    通过计算两个上升沿之间的时间间隔,计算输入转速信号的频率,计算得到转速。

    二、开发环境

    开发平台:S32 Design Studio for ARM Version 2018.R1(S32DS)
    单片机型号:S32K116
    转速信号频率:最小值2KHz+

    三、配置

    1.引脚界面的配置

    这里我使用的是PTD15引脚
    引脚界面

    2.初始化界面的配置

    前提当然要添加FTM_IC模块
    初始化界面

    3.配置界面的配置

    有的通道不支持测量的选项,具体哪些引脚我也没细看,不过配置的时候会提示不支持,如果是自己硬撸代码,需要格外注意一下,不过我想,都能硬撸代码了,应该也看不到我这篇博文了
    配置界面

    四、关键代码

    1.初始化

    	static ftm_state_t ftm1StateStruct;
    	FTM_DRV_Init(INST_FLEXTIMER_IC1, &flexTimer_ic1_InitConfig, &ftm1StateStruct);
    	FTM_DRV_InitInputCapture(INST_FLEXTIMER_IC1, &flexTimer_ic1_InputCaptureConfig);
    
    • 1
    • 2
    • 3

    2.计算频率

    	uint32_t inputCaptureMeas = 0;
    	uint8_t channel = flexTimer_ic1_InputCaptureChannelConfig->hwChannelId;
    	uint32_t frequency = FTM_DRV_GetFrequency(INST_FLEXTIMER_IC1);
    	
    	while (1)
    	{
    		/* Get values */
    		inputCaptureMeas = FTM_DRV_GetInputCaptureMeasurement(INST_FLEXTIMER_IC1, channel);
    		/* Calculate the signal frequency using recorded data*/
    		inputCaptureMeas = frequency / (inputCaptureMeas);
    
    		OSIF_TimeDelay(1000);
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    五、注意事项

    1.引脚的选择

    要选择引脚描述如FTMx_CHx的引脚。最初我那硬件工程师选了FTM0_FLT2。看了下手册这是故障检测引脚,预想的我那输入频率只有几HZ,就用了中断自己计数,量了一下输入频率后,中断已经不适用了。

    2.可检测的最小输入频率

    为什么会有最小输入频率。首先说一下计算频率的原理。第一步是获取到两个上升沿的计数值,第二步是通过计数频率(也就是配置界面的Counter clock frequency)除以计数值,得到输入信号的频率。
    两个上升沿的计数值怎么来,在两个上升沿的过程中,计数器会持续进行计数,计数频率越高,同一时间内计数值累加的越快。通过函数FTM_DRV_GetInputCaptureMeasurement可以获取到计数值。当超过最大计数值65535过后,计数值会翻转从0开始。
    那么对应就会有一个异常情况,计数翻转过后,用计数频率除以计数值,就会得到一个很大的值。
    为了避免这样的情况发生,我这里列了一张表格供参考
    最小输入频率

  • 相关阅读:
    SpringBoot数据库管理 - 用flyway对数据库管理和迁移
    计算机网络----计算机网络的基础
    嵌入式开发,简历上写什么项目?
    最好的PDF压缩:ImageGear PDF 25.2.NET
    vite配置别名,并处理报错:找不到模块“xxx”或其相应的类型声明
    数据结构与算法(C语言版)P5---栈
    如何绘制西游记思维导图?详细制作步骤看这里
    常见的软件测试面试题,千万别答错了
    互换性与测量技术基础总复习题(答案)
    springboot基于JAVA的电影推荐系统的开发与实现毕业设计源码112306
  • 原文地址:https://blog.csdn.net/liluochengren/article/details/126418334