...theworld'smostenergyfriendlymicrocontrollers低能耗传感器接口–阻性感测AN0036–应用笔记简介本应用笔记阐述模拟外设的基本原理,并说明如何在EM2模式使用低能耗传感器接口(LESENSE)来扫描多个阻性传感器,使电流消耗低于2µA。本应用笔记包括:•这篇PDF文档•源代码文件(zip)•样例C代码•多个IDE项目...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-805121引言1.1LESENSE低能耗传感器接口(LESENSE)是使用其他片上外设来测量一组可配置的传感器的一个外设。LESENSE使用模拟比较器(ACMP)来测量传感器信号,需要使用DAC来产生精准的参考电压或施加传感器激励。图1.1(p.2)给出了LESENSE外设的概览。LESENSE包含一个定序器、计数和比较模块以及一个用于保存配置和结果的RAM块。定序器处理与其他外设的交互和传感器测量的定时。计数和比较模块用于对来自ACMP输出的脉冲进行计数,并将计数值与一个可配置的阈值进行比较。为了自动分析传感器结果,LESENSE解码器提供了定义一个有限状态机的能力(最多可有16个状态),并且可定义根据状态变迁要执行的可配置的动作。这就允许解码器实现宽范围的解码机制,例如正交解码。还有一个RAM块可用于存储配置和测量结果。这就允许LESENSE具有一个相对大的结果缓冲区,使芯片在采集传感器数据期间保持在一个低能耗模式。除了EM1和EM0模式外,LESENSE还可以工作在EM2模式,并可在发生可配置的事件时唤醒CPU。图1.1.LESENSE概览LESENSE支持多种传感器类型:感性(LC)、容性和一般的模拟传感器。本应用笔记将着重介绍如何配置LESENSE,并以光敏三极管为例说明如何读取模拟传感器。...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-805131.2模拟传感器与产生离散(不连续)值来表示信息的数字传感器不同,模拟传感器被广泛用于测量连续信息的所有类型的应用中。一些模拟传感器类型包括:•湿度•温度•光•压力•应变片•电位器测量模拟传感器的常规做法是:施加一个电源电压(根据传感器特性),读取一个与被测物理量有数学关系的输出电压/电流。通常需要将模拟传感器与信号调理电路配合使用,后者对传感器的电气输出进行变换,使其能被读取设备使用(例如微控制器)。...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-805142阻性感测2.1原理阻性传感器是模拟传感器的最基本类型。这类传感器会表现出电阻的变化,当被放置在像分压器或惠斯登电桥这样的电路中时,能产生与被测物理量对等的电压信号。最常用的阻性传感器包括电位器、光传感器(光敏电阻)和温度传感器(热敏电阻)。2.2EFM32的阻性感测功能在EFM32中,阻性传感器测量可以使用一个或两个引脚完成。2.2.1单引脚阻性传感器测量在EFM32中,用LESENSE测量阻性传感器时可以只使用一个LESENSE引脚。这意味着该引脚既用于传感器激励,也用于传感器测量。由于该引脚需要扮演这种双重角色,必须放置一个与传感器并联的电容,该电容用于在该引脚从激励阶段进入测量阶段时保持电压电平(图2.1(p.4))。图2.1.单引脚阻性传感器测量EFM32ACMPn_CHxS使用这种电路结构时,电容在测量阶段会通过传感器放电,因此放电曲线取决于传感器的电阻。必须根据被测传感器的阈值对LESENSE测量阈值进行校准。图2.2(p.5)给出了一个传感器在活动状态(左侧)和非活动状态的假想放电曲线(右侧)。...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80515图2.2.传感器放电ActiveSensorInactiveSensorVVVddVThSampleVddVThSampleExcitationMeasureTTExcitationMeasureLESENSE控制ACMP正通道的多路复用器,也可以选择控制负输入的多路复用器和用于阈值校准的Vdd缩小比例(Vth)。放电曲线的测量由ACMP完成,ACMP在放电曲线高于阈值时输出高电平,在放电曲线下降到低于阈值时输出低电平。LESENSE在测量阶段采样ACMP的输出,该输出指示传感器处于活动状态还是非活动状态。2.2.2双引脚阻性传感器测量也可以使用两个引脚来测量阻性传感器,在这种配置中,使用两个交替的激励引脚(LES_ALTEXn)来激励传感器。传感器在测量阶段也被激励,并且建立了一个电阻分压器(图2.3(p.5)),该分压器给出取决于传感器电阻的稳定电压电平。为了确保在LESENSE采样传感器时传感器仍被激励,激励阶段等于或长于测量阶段是很重要的。图2.3.双引脚阻性传感器测量与2.2.1节(p.4)类似,ACMP用于测量传感器的状态,其输出在测量阶段结束时被LESENSE采样,以确定传感器处于活动状态还是非活动状态。...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-805163LESENSELESENSE是一个可灵活配置的外设,允许与多种不同的传感器交互。LESENSE能通过控制通道引脚或DAC为传感器提供电压激励,并可控制ACMP多路复用器进行传感器测量。可以使用同一引脚或使用不同引脚进行传感器激励和测量,这就导致使用LESENSE时可采取不同的传感器配置。每个ACMP引脚是一个LESENSE通道,ACMP引脚的数量就是LESENSE通道的最大数量。通过控制ACMP多路复用器,LESENSE可以扫描不同的通道,并将结果保存到存储器中或发送到一个解码器作为可配置状态机的输入(3.6节(p.9))。LESENSE与传感器的交互分为两个主要阶段:激励阶段和测量阶段。这两个阶段一个使用低频时钟,另一个使用高频时钟作为时基,时基周期的长度可按时钟周期数调节。高频(HF)时钟由AUXHFRCO驱动,低频(LF)时钟由LFACLK分支驱动。除此以外,还可以选择引入一个延迟,使激励阶段和测量阶段都被延迟,并且可以引入一个只对测量阶段起延迟作用的测量延迟。不同阶段和相关联的延迟之间的关系如图3.1(p.6)所示。图3.1.时序图INITDACrefreshstartStartdelaySTARTMeasuredelaySampledelaySAMPLELFACLKLESENSEEXCITEAUXHFRCOIdlephaseExcitephaseMeasurephaseIdlephaseAUXHFRCO由LESENSE控制,仅在需要时被使能。为了缩短激励或测量阶段,建议使用AUXHFRCO时钟作为时基。Emlib有一组配置LESENSE(efm32_lesense)的函数。使用这些函数可以更容易地配置LESENSE。本章将介绍如何使用这些函数来配置LESENSE与传感器交互。3.1LESENSE初始化可以使用函数voidLESENSE_Init(LESENSE_Init_TypeDefconst*init)来初始化LESENSE。该函数在一次操作周期中初始化LESENSE一次,并配置内核、定时、外设和解码器参数。3.1.1内核配置结构类型LESENSE_CoreCtrlDesc_TypeDef为内核控制定义以下参数:•扫描启动模式—控制如何触发扫描启动•用于扫描启动的PRS源,如果PRS被选择用于触发一次扫描...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80517•扫描配置寄存器的使用(例如:直接、反相、切换或译码器映射)•将ACMP0输出反相•将ACMP1输出反相•同时扫描两个ACMP•每次扫描后将SCANRES保存到RAM中•总是写结果缓冲区,即使缓冲区已满•中断和DMA的触发条件•DMA从EM2唤醒的触发条件•偏置模式•在调试模式保持LESENSE运行3.1.2时序配置结构类型LESENSE_TimeCtrlDesc_TypeDef为时序控制定义以下参数:•用于延迟传感器交互的LFACLK周期数(启动延迟)3.1.3外设配置结构类型LESENSE_PerCtrlDesc_TypeDef为外设控制定义以下参数:•DAC通道0数据控制•配置DAC通道0的LESENSE转换控制•配置DAC通道0的LESENSE输出控制•DAC通道1数据控制•配置DAC通道1的LESENSE转换控制•配置DAC通道1的LESENSE输出控制•LESENSE-DAC接口的预分频系数•要使用的DAC参考电压•LESENSE对ACMP0的控制•LESENSE对ACMP1的控制•在空闲模式下LESENSE对ACMP的控制和DAC启动准备3.1.4解码器配置结构类型LESENSE_DecCtrlDesc_TypeDef为外设控制定义以下参数:•LESENSE解码器的输入•解码器的初始状态•检查当前状态以及DEFCONF中定义的状态•在发生离开状态x的变迁时,置位CHx的中断标志•使能解码器中的滯回功能,以抑制PRS通道0的变化•使能解码器中的滯回功能,以抑制PRS通道1的变化•使能解码器中的滯回功能,以抑制PRS通道2的变化•使能解码器中的滯回功能,以抑制中断请求•使能解码器PRS通道0和1的计数模式,以产生可被一个PCNT用于控制向上或向下计数的输出•LESENSE解码器的位0之PRS通道输入•LESENSE解码器的位1之PRS通道输入•LESENSE解码器的位2之PRS通道输入...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80518•LESENSE解码器的位3之PRS通道输入3.2时钟预分频函数LESENSE_ClkDivSet(LESENSE_ChClk_TypeDefconstclk,LESENSE_ClkPresc_TypeDefconstclkDiv)为LESENSE的高频和低频时钟设置预分频值。最大的预分频值分别为8和128,所产生的结果频率由公式3.1(p.8)给出。预分频公式PRESC_CLKfreq=CLKfreq/2^PRESCvalue(3.1)对于AUXHFRCO,PRESCvalue位域是AUXPRESC;而对于LFACLK,PRESCvalue位域是LFPRESC。这两个位域都位于LESENSE_TIMCTRL寄存器中。3.3设置扫描频率函数LESENSE_ScanFreqSet(uint32_trefFreq,uint32_tconstscanFreq)允许设置LESENSE的扫描频率。该频率的计算基于公式3.2(p.8),由于整数除法的原因,并不一定会产生所要求的频率。预分频公式Fscan=LFACLKLESENSE/((1+PCTOP)x2PCPRESC(3.2)3.4通道配置LESENSE通道可以使用函数LESENSE_ChannelConfig(LESENSE_ChDesc_TypeDefconst*confCh,uint32_tconstchIdx)来配置,该函数只能配置一个通道;也可以使用函数LESENSE_ChannelAllConfig(LESENSE_ChAll_TypeDefconst*confChAll)来配置,该函数配置所有通道。结构LESENSE_ChDesc_TypeDef定义通道配置的以下参数:•使能通道扫描•使能通道引脚•在配置完所有传感器参数后使能通道中断•配置扫描序列之激励阶段的GPIO模式•配置空闲阶段的通道引脚设置•使用第二激励引脚•使能通道结果移位至解码器寄存器•对存储在扫描结果寄存器(SCANRES)中的结果位取反•使能结果在RAM中的存储•选择激励定时的时钟•选择采样延迟定时的时钟•配置激励时间•配置采样延迟时间•配置测量延迟时间•配置A