数字传感器的通信接口一般有PWM、I2C、SPI等。而PWM方式输出的传感器具有接口简单、抗噪能力强、适合远距离传输。这种接口的传感器比较典型的一个是TE Connectivity(泰科TE)的温度传感器HTU20P,这种传感器以输出PWM的占空比变化进行传感器信号强度的表达。本文就以中科芯32位MCU CKS32F103x8为例介绍如何使用输入捕获的功能进行HTU20P PWM输出占空比的精确测量,进而确定温度值。
tr是传感器PWM输出的周期,tpw是高电平的时间也就是所测信号的强弱。要想知道具体的温度值就要对这两个量进行测量。而PWM输入模式是CKS32F103x8的输入捕获中的一个特例,该功能可以用于精确地测量PWM的周期,电平持续时间等,进而得到PWM的频率、占空比等。
实现这一功能需要同时使用TIMx_IC1和TIMx_IC2,但是只在其中一个引脚上接入信号即可,在内部配置为映射到另外一个通道上。一次测量完成之后,IC1的值为周期值,IC2的值为脉宽值。捕获时复位技术器的极性可以配置,我们采用了上升沿,在测量HTU20P时需要配置为下降沿。
软件配置流程如下:
1、选择通道
TIM_ICInitType.TIM_Channel=TIM_Channel_1;
2、配置捕获边沿
TIM_ICInitType.TIM_ICPolarity=TIM_ICPolarity_Rising;
3、设为PWM输入模式
TIM_PWMIConfig(TIM3,&TIM_ICInitType);
4、配置触发源
TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);
5、设置主从模式
TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);//当捕获到触发源时复位计数器
TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable);//使能
6、使能中断,一个周期测量结束会产生中断
TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);
7、中断中的操作
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_CC1) == SET)
{
level_t=TIM_GetCapture2(TIM3);//获得CCR2的值,高电平
cycle_t=TIM_GetCapture1(TIM3);//获得CCR1的值,周期
TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);
}
}
可以看出,无论传感器的输出如何变化,所测得的周期值都是很稳定的,并且计算出的占空比测量值与理论值几乎无差别。
本文来源于世强电子元件
电话
0755-27883824
地址:深圳市宝安区西乡街道银田创意园B8栋502
传真:0755-61204158
邮箱 : 13510937553@163.com
点
击
隐
藏