em_lesense.h File Reference

Low Energy Sensor (LESENSE) peripheral API. More...

#include "em_device.h"
#include <stdint.h>
#include <stdbool.h>
Include dependency graph for em_lesense.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  LESENSE_CoreCtrlDesc_TypeDef
struct  LESENSE_TimeCtrlDesc_TypeDef
struct  LESENSE_PerCtrlDesc_TypeDef
struct  LESENSE_DecCtrlDesc_TypeDef
struct  LESENSE_Init_TypeDef
struct  LESENSE_ChDesc_TypeDef
struct  LESENSE_ChAll_TypeDef
struct  LESENSE_AltExDesc_TypeDef
struct  LESENSE_ConfAltEx_TypeDef
struct  LESENSE_DecStCond_TypeDef
struct  LESENSE_DecStDesc_TypeDef
struct  LESENSE_DecStAll_TypeDef

Defines

#define LESENSE_CORECTRL_DESC_DEFAULT
#define LESENSE_TIMECTRL_DESC_DEFAULT
#define LESENSE_PERCTRL_DESC_DEFAULT
#define LESENSE_DECCTRL_DESC_DEFAULT
#define LESENSE_INIT_DEFAULT
#define LESENSE_CH_CONF_DEFAULT
#define LESENSE_SCAN_CONF_DEFAULT
#define LESENSE_ALTEX_CH_CONF_DEFAULT
#define LESENSE_ALTEX_CONF_DEFAULT
#define LESENSE_ST_CONF_DEFAULT
#define LESENSE_DECODER_CONF_DEFAULT

Enumerations

enum  LESENSE_ClkPresc_TypeDef {
  lesenseClkDiv_1 = 0,
  lesenseClkDiv_2 = 1,
  lesenseClkDiv_4 = 2,
  lesenseClkDiv_8 = 3,
  lesenseClkDiv_16 = 4,
  lesenseClkDiv_32 = 5,
  lesenseClkDiv_64 = 6,
  lesenseClkDiv_128 = 7
}
enum  LESENSE_ScanMode_TypeDef {
  lesenseScanStartPeriodic = LESENSE_CTRL_SCANMODE_PERIODIC,
  lesenseScanStartOneShot = LESENSE_CTRL_SCANMODE_ONESHOT,
  lesenseScanStartPRS = LESENSE_CTRL_SCANMODE_PRS
}
enum  LESENSE_PRSSel_TypeDef {
  lesensePRSCh0 = 0,
  lesensePRSCh1 = 1,
  lesensePRSCh2 = 2,
  lesensePRSCh3 = 3
}
enum  LESENSE_AltExMap_TypeDef {
  lesenseAltExMapALTEX = _LESENSE_CTRL_ALTEXMAP_ALTEX,
  lesenseAltExMapACMP = _LESENSE_CTRL_ALTEXMAP_ACMP
}
enum  LESENSE_BufTrigLevel_TypeDef {
  lesenseBufTrigHalf = LESENSE_CTRL_BUFIDL_HALFFULL,
  lesenseBufTrigFull = LESENSE_CTRL_BUFIDL_FULL
}
enum  LESENSE_DMAWakeUp_TypeDef {
  lesenseDMAWakeUpDisable = LESENSE_CTRL_DMAWU_DISABLE,
  lesenseDMAWakeUpBufValid = LESENSE_CTRL_DMAWU_BUFDATAV,
  lesenseDMAWakeUpBufLevel = LESENSE_CTRL_DMAWU_BUFLEVEL
}
enum  LESENSE_BiasMode_TypeDef {
  lesenseBiasModeDutyCycle = LESENSE_BIASCTRL_BIASMODE_DUTYCYCLE,
  lesenseBiasModeHighAcc = LESENSE_BIASCTRL_BIASMODE_HIGHACC,
  lesenseBiasModeDontTouch = LESENSE_BIASCTRL_BIASMODE_DONTTOUCH
}
enum  LESENSE_ScanConfSel_TypeDef {
  lesenseScanConfDirMap = LESENSE_CTRL_SCANCONF_DIRMAP,
  lesenseScanConfInvMap = LESENSE_CTRL_SCANCONF_INVMAP,
  lesenseScanConfToggle = LESENSE_CTRL_SCANCONF_TOGGLE,
  lesenseScanConfDecDef = LESENSE_CTRL_SCANCONF_DECDEF
}
enum  LESENSE_ControlDACData_TypeDef {
  lesenseDACIfData = _LESENSE_PERCTRL_DACCH0DATA_DACDATA,
  lesenseACMPThres = _LESENSE_PERCTRL_DACCH0DATA_ACMPTHRES
}
enum  LESENSE_ControlDACConv_TypeDef {
  lesenseDACConvModeDisable = _LESENSE_PERCTRL_DACCH0CONV_DISABLE,
  lesenseDACConvModeContinuous = _LESENSE_PERCTRL_DACCH0CONV_CONTINUOUS,
  lesenseDACConvModeSampleHold = _LESENSE_PERCTRL_DACCH0CONV_SAMPLEHOLD,
  lesenseDACConvModeSampleOff = _LESENSE_PERCTRL_DACCH0CONV_SAMPLEOFF
}
enum  LESENSE_ControlDACOut_TypeDef {
  lesenseDACOutModeDisable = _LESENSE_PERCTRL_DACCH0OUT_DISABLE,
  lesenseDACOutModePin = _LESENSE_PERCTRL_DACCH0OUT_PIN,
  lesenseDACOutModeADCACMP = _LESENSE_PERCTRL_DACCH0OUT_ADCACMP,
  lesenseDACOutModePinADCACMP = _LESENSE_PERCTRL_DACCH0OUT_PINADCACMP
}
enum  LESENSE_DACRef_TypeDef {
  lesenseDACRefVdd = LESENSE_PERCTRL_DACREF_VDD,
  lesenseDACRefBandGap = LESENSE_PERCTRL_DACREF_BANDGAP
}
enum  LESENSE_ControlACMP_TypeDef {
  lesenseACMPModeDisable = _LESENSE_PERCTRL_ACMP0MODE_DISABLE,
  lesenseACMPModeMux = _LESENSE_PERCTRL_ACMP0MODE_MUX,
  lesenseACMPModeMuxThres = _LESENSE_PERCTRL_ACMP0MODE_MUXTHRES
}
enum  LESENSE_WarmupMode_TypeDef {
  lesenseWarmupModeNormal = LESENSE_PERCTRL_WARMUPMODE_NORMAL,
  lesenseWarmupModeACMP = LESENSE_PERCTRL_WARMUPMODE_KEEPACMPWARM,
  lesenseWarmupModeDAC = LESENSE_PERCTRL_WARMUPMODE_KEEPDACWARM,
  lesenseWarmupModeKeepWarm = LESENSE_PERCTRL_WARMUPMODE_KEEPACMPDACWARM
}
enum  LESENSE_DecInput_TypeDef {
  lesenseDecInputSensorSt = LESENSE_DECCTRL_INPUT_SENSORSTATE,
  lesenseDecInputPRS = LESENSE_DECCTRL_INPUT_PRS
}
enum  LESENSE_ChSampleMode_TypeDef {
  lesenseSampleModeCounter = LESENSE_CH_INTERACT_SAMPLE_COUNTER,
  lesenseSampleModeACMP = LESENSE_CH_INTERACT_SAMPLE_ACMP
}
enum  LESENSE_ChIntMode_TypeDef {
  lesenseSetIntNone = LESENSE_CH_INTERACT_SETIF_NONE,
  lesenseSetIntLevel = LESENSE_CH_INTERACT_SETIF_LEVEL,
  lesenseSetIntPosEdge = LESENSE_CH_INTERACT_SETIF_POSEDGE,
  lesenseSetIntNegEdge = LESENSE_CH_INTERACT_SETIF_NEGEDGE
}
enum  LESENSE_ChPinExMode_TypeDef {
  lesenseChPinExDis = LESENSE_CH_INTERACT_EXMODE_DISABLE,
  lesenseChPinExHigh = LESENSE_CH_INTERACT_EXMODE_HIGH,
  lesenseChPinExLow = LESENSE_CH_INTERACT_EXMODE_LOW,
  lesenseChPinExDACOut = LESENSE_CH_INTERACT_EXMODE_DACOUT
}
enum  LESENSE_ChPinIdleMode_TypeDef {
  lesenseChPinIdleDis = _LESENSE_IDLECONF_CH0_DISABLE,
  lesenseChPinIdleHigh = _LESENSE_IDLECONF_CH0_HIGH,
  lesenseChPinIdleLow = _LESENSE_IDLECONF_CH0_LOW,
  lesenseChPinIdleDACCh0 = _LESENSE_IDLECONF_CH0_DACCH0,
  lesenseChPinIdleDACCh1 = _LESENSE_IDLECONF_CH12_DACCH1
}
enum  LESENSE_ChClk_TypeDef {
  lesenseClkLF = _LESENSE_CH_INTERACT_EXCLK_LFACLK,
  lesenseClkHF = _LESENSE_CH_INTERACT_EXCLK_AUXHFRCO
}
enum  LESENSE_ChCompMode_TypeDef {
  lesenseCompModeLess = LESENSE_CH_EVAL_COMP_LESS,
  lesenseCompModeGreaterOrEq = LESENSE_CH_EVAL_COMP_GE
}
enum  LESENSE_AltExPinIdle_TypeDef {
  lesenseAltExPinIdleDis = _LESENSE_ALTEXCONF_IDLECONF0_DISABLE,
  lesenseAltExPinIdleHigh = _LESENSE_ALTEXCONF_IDLECONF0_HIGH,
  lesenseAltExPinIdleLow = _LESENSE_ALTEXCONF_IDLECONF0_LOW
}
enum  LESENSE_StTransAct_TypeDef {
  lesenseTransActNone = LESENSE_ST_TCONFA_PRSACT_NONE,
  lesenseTransActPRS0 = LESENSE_ST_TCONFA_PRSACT_PRS0,
  lesenseTransActPRS1 = LESENSE_ST_TCONFA_PRSACT_PRS1,
  lesenseTransActPRS01 = LESENSE_ST_TCONFA_PRSACT_PRS01,
  lesenseTransActPRS2 = LESENSE_ST_TCONFA_PRSACT_PRS2,
  lesenseTransActPRS02 = LESENSE_ST_TCONFA_PRSACT_PRS02,
  lesenseTransActPRS12 = LESENSE_ST_TCONFA_PRSACT_PRS12,
  lesenseTransActPRS012 = LESENSE_ST_TCONFA_PRSACT_PRS012,
  lesenseTransActUp = LESENSE_ST_TCONFA_PRSACT_UP,
  lesenseTransActDown = LESENSE_ST_TCONFA_PRSACT_DOWN,
  lesenseTransActUpAndPRS2 = LESENSE_ST_TCONFA_PRSACT_UPANDPRS2,
  lesenseTransActDownAndPRS2 = LESENSE_ST_TCONFA_PRSACT_DOWNANDPRS2
}

Functions

void LESENSE_Init (LESENSE_Init_TypeDef const *init, bool const reqReset)
 Initialize the LESENSE module.
void LESENSE_Reset (void)
 Reset the LESENSE module.
uint32_t LESENSE_ScanFreqSet (uint32_t refFreq, uint32_t const scanFreq)
 Set scan frequency for periodic scanning.
void LESENSE_ScanModeSet (LESENSE_ScanMode_TypeDef const scanMode, bool const start)
 Set scan mode of the LESENSE channels.
void LESENSE_StartDelaySet (uint8_t const startDelay)
 Set start delay of sensor interaction on each channel.
void LESENSE_ClkDivSet (LESENSE_ChClk_TypeDef const clk, LESENSE_ClkPresc_TypeDef const clkDiv)
 Set clock division for LESENSE timers.
void LESENSE_ChannelAllConfig (LESENSE_ChAll_TypeDef const *confChAll)
 Configure all (16) LESENSE sensor channels.
void LESENSE_ChannelConfig (LESENSE_ChDesc_TypeDef const *confCh, uint32_t const chIdx)
 Configure a single LESENSE sensor channel.
void LESENSE_ChannelEnable (uint8_t const chIdx, bool const enaScanCh, bool const enaPin)
 Enable/disable LESENSE scan channel and the pin assigned to it.
void LESENSE_ChannelEnableMask (uint16_t chMask, uint16_t pinMask)
 Enable/disable LESENSE scan channel and the pin assigned to it.
void LESENSE_ChannelTimingSet (uint8_t const chIdx, uint8_t const exTime, uint8_t const sampleDelay, uint8_t const measDelay)
 Set LESENSE channel timing parameters.
void LESENSE_ChannelThresSet (uint8_t const chIdx, uint16_t const acmpThres, uint16_t const cntThres)
 Set LESENSE channel threshold parameters.
void LESENSE_AltExConfig (LESENSE_ConfAltEx_TypeDef const *confAltEx)
 Configure the LESENSE alternate excitation modes.
void LESENSE_DecoderStateAllConfig (LESENSE_DecStAll_TypeDef const *confDecStAll)
 Configure all LESENSE decoder states.
void LESENSE_DecoderStateConfig (LESENSE_DecStDesc_TypeDef const *confDecSt, uint32_t const decSt)
 Configure a single LESENSE decoder state.
void LESENSE_DecoderStateSet (uint32_t decSt)
 Set LESENSE decoder state.
uint32_t LESENSE_DecoderStateGet (void)
 Get the current state of the LESENSE decoder.
void LESENSE_ScanStart (void)
 Start scanning of sensors.
void LESENSE_ScanStop (void)
 Stop scanning of sensors.
void LESENSE_DecoderStart (void)
 Start LESENSE decoder.
void LESENSE_ResultBufferClear (void)
 Clear result buffer.
__STATIC_INLINE void LESENSE_DecoderStop (void)
 Stop LESENSE decoder.
__STATIC_INLINE uint32_t LESENSE_StatusGet (void)
 Get the current status of LESENSE.
__STATIC_INLINE void LESENSE_StatusWait (uint32_t flag)
 Wait until the status of LESENSE is equal to what requested.
__STATIC_INLINE uint32_t LESENSE_ChannelActiveGet (void)
 Get the currently active channel index.
__STATIC_INLINE uint32_t LESENSE_ScanResultGet (void)
 Get the latest scan comparison result (1 bit / channel).
__STATIC_INLINE uint32_t LESENSE_ScanResultDataGet (void)
 Get the oldest unread data from the result buffer.
__STATIC_INLINE uint32_t LESENSE_ScanResultDataBufferGet (uint32_t idx)
 Get data from the result data buffer.
__STATIC_INLINE uint32_t LESENSE_SensorStateGet (void)
 Get the current state of the LESENSE sensor.
__STATIC_INLINE void LESENSE_RAMPowerDown (void)
 Shut off power to the LESENSE RAM, disables LESENSE.
__STATIC_INLINE void LESENSE_IntClear (uint32_t flags)
 Clear one or more pending LESENSE interrupts.
__STATIC_INLINE void LESENSE_IntEnable (uint32_t flags)
 Enable one or more LESENSE interrupts.
__STATIC_INLINE void LESENSE_IntDisable (uint32_t flags)
 Disable one or more LESENSE interrupts.
__STATIC_INLINE void LESENSE_IntSet (uint32_t flags)
 Set one or more pending LESENSE interrupts from SW.
__STATIC_INLINE uint32_t LESENSE_IntGet (void)
 Get pending LESENSE interrupt flags.
__STATIC_INLINE uint32_t LESENSE_IntGetEnabled (void)
 Get enabled and pending LESENSE interrupt flags.

Detailed Description

Low Energy Sensor (LESENSE) peripheral API.

Version:
3.20.13

License

(C) Copyright 2014 Silicon Labs, http://www.silabs.com

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.

DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no obligation to support this Software. Silicon Labs is providing the Software "AS IS", with no express or implied warranties of any kind, including, but not limited to, any implied warranties of merchantability or fitness for any particular purpose or warranties against infringement of any proprietary rights of a third party.

Silicon Labs will not be liable for any consequential, incidental, or special damages, or any other relief, or for any claim by any third party, arising from your use of this Software.

Definition in file em_lesense.h.