34 #if defined(LESENSE_COUNT) && (LESENSE_COUNT > 0)
40 #if !defined(UINT32_MAX)
41 #define UINT32_MAX ((uint32_t)(0xFFFFFFFF))
210 uint32_t pcPresc = 0UL;
211 uint32_t clkDiv = 1UL;
212 uint32_t pcTop = 63UL;
213 uint32_t calcScanFreq;
226 EFM_ASSERT(refFreq < ((uint32_t)UINT32_MAX / 128UL));
229 EFM_ASSERT((scanFreq > 0U) && (scanFreq <= refFreq));
234 while ((refFreq / ((uint32_t)scanFreq * clkDiv) > (pcTop + 1UL))
238 clkDiv = (uint32_t)1UL << pcPresc;
242 pcTop = ((uint32_t)refFreq / ((uint32_t)scanFreq * clkDiv)) - 1UL;
257 calcScanFreq = ((uint32_t)refFreq / ((uint32_t)(1UL + pcTop) * clkDiv));
300 tmp |= (uint32_t)scanMode;
337 EFM_ASSERT(startDelay < 4U);
441 for (i = 0U; i < 16U; ++i)
472 uint32_t
const chIdx)
478 EFM_ASSERT(chIdx < 16U);
479 EFM_ASSERT(confCh->
exTime < 64U);
495 && (chIdx != 15U))));
505 tmp = (
LESENSE->IDLECONF & ~((uint32_t)0x3UL << (chIdx * 2UL)));
587 for (i = 0U; i < 8U; ++i)
599 tmp = (
LESENSE->ALTEXCONF & ~((uint32_t)0x3UL << (i * 2UL)));
600 tmp |= ((uint32_t)confAltEx->
AltEx[i].
idleConf << (i * 2UL));
612 for (i = 0U; i < 16U; ++i)
655 bool const enaScanCh,
729 uint8_t
const exTime,
730 uint8_t
const sampleDelay,
731 uint8_t
const measDelay)
734 EFM_ASSERT(exTime < 64U);
735 EFM_ASSERT(sampleDelay < 128U);
736 EFM_ASSERT(measDelay < 128U);
781 uint16_t
const acmpThres,
782 uint16_t
const cntThres)
788 EFM_ASSERT(acmpThres < 4096U);
790 EFM_ASSERT(chIdx < 16);
798 LESENSE->CH[chIdx].INTERACT = tmp;
831 for (i = 0U; i < 16U; ++i)
855 uint32_t
const decSt)
858 EFM_ASSERT(decSt < 16U);
907 EFM_ASSERT(decSt < 16U);
1096 for (i = 0U; i < 16U; ++i)
1104 for (i = 0U; i < 16U; ++i)
#define _LESENSE_CH_EVAL_STRSAMPLE_SHIFT
Clock management unit (CMU) API.
#define LESENSE_CMD_DECODE
LESENSE_PRSSel_TypeDef prsChSel3
LESENSE_TimeCtrlDesc_TypeDef timeCtrl
void LESENSE_ChannelTimingSet(uint8_t const chIdx, uint8_t const exTime, uint8_t const sampleDelay, uint8_t const measDelay)
Set LESENSE channel timing parameters.
LESENSE_ControlACMP_TypeDef acmp1Mode
#define _LESENSE_ST_TCONFA_RESETVALUE
#define _LESENSE_CH_INTERACT_ALTEX_SHIFT
#define _LESENSE_CTRL_BUFOW_SHIFT
void LESENSE_DecoderStart(void)
Start LESENSE decoder.
void LESENSE_ChannelAllConfig(LESENSE_ChAll_TypeDef const *confChAll)
Configure all (16) LESENSE sensor channels.
Emlib peripheral API "assert" implementation.
LESENSE_ControlDACData_TypeDef dacCh0Data
void LESENSE_ChannelThresSet(uint8_t const chIdx, uint16_t const acmpThres, uint16_t const cntThres)
Set LESENSE channel threshold parameters.
#define _LESENSE_ST_TCONFB_NEXTSTATE_SHIFT
LESENSE_DecStCond_TypeDef confA
RAM and peripheral bit-field set and clear API.
LESENSE_DecCtrlDesc_TypeDef decCtrl
LESENSE_ControlDACData_TypeDef dacCh1Data
void LESENSE_AltExConfig(LESENSE_ConfAltEx_TypeDef const *confAltEx)
Configure the LESENSE alternate excitation modes.
LESENSE_ChPinIdleMode_TypeDef chPinIdleMode
#define _LESENSE_CH_INTERACT_ACMPTHRES_MASK
uint32_t LESENSE_ScanFreqSet(uint32_t refFreq, uint32_t const scanFreq)
Set scan frequency for periodic scanning.
void LESENSE_Reset(void)
Reset the LESENSE module.
#define _LESENSE_CHEN_RESETVALUE
#define LESENSE_CMD_CLEARBUF
void LESENSE_ResultBufferClear(void)
Clear result buffer.
void LESENSE_ChannelEnable(uint8_t const chIdx, bool const enaScanCh, bool const enaPin)
Enable/disable LESENSE scan channel and the pin assigned to it.
#define _LESENSE_CTRL_DEBUGRUN_SHIFT
LESENSE_ChDesc_TypeDef Ch[16]
#define _LESENSE_ST_TCONFA_NEXTSTATE_SHIFT
#define _LESENSE_TIMCTRL_LFPRESC_MASK
LESENSE_AltExDesc_TypeDef AltEx[16]
LESENSE_PRSSel_TypeDef prsChSel0
#define _LESENSE_ST_TCONFA_SETIF_SHIFT
#define _LESENSE_CH_INTERACT_EXCLK_SHIFT
#define _LESENSE_CH_EVAL_COMPTHRES_MASK
void LESENSE_ChannelConfig(LESENSE_ChDesc_TypeDef const *confCh, uint32_t const chIdx)
Configure a single LESENSE sensor channel.
LESENSE_ControlDACOut_TypeDef dacCh0OutMode
#define _LESENSE_TIMCTRL_PCPRESC_SHIFT
#define _LESENSE_CTRL_PRSSEL_SHIFT
void LESENSE_DecoderStateSet(uint32_t decSt)
Set LESENSE decoder state.
#define _LESENSE_CTRL_ALTEXMAP_SHIFT
#define _LESENSE_DECCTRL_PRSSEL2_SHIFT
#define LESENSE_SYNCBUSY_CMD
#define _LESENSE_PERCTRL_ACMP1MODE_SHIFT
LESENSE_PRSSel_TypeDef prsSel
#define _LESENSE_ALTEXCONF_RESETVALUE
LESENSE_ChClk_TypeDef exClk
#define _LESENSE_CH_TIMING_SAMPLEDLY_SHIFT
#define _LESENSE_CTRL_DUALSAMPLE_SHIFT
#define _LESENSE_ST_TCONFB_COMP_SHIFT
#define _LESENSE_IFC_MASK
#define _LESENSE_IEN_RESETVALUE
#define _LESENSE_ST_TCONFA_MASK_SHIFT
#define _LESENSE_DECCTRL_ERRCHK_SHIFT
#define LESENSE_CMD_START
#define _LESENSE_DECCTRL_HYSTPRS1_SHIFT
#define _LESENSE_PERCTRL_DACCH1DATA_SHIFT
LESENSE_DMAWakeUp_TypeDef wakeupOnDMA
#define _LESENSE_CTRL_SCANMODE_MASK
LESENSE_ControlDACConv_TypeDef dacCh1ConvMode
#define _LESENSE_ST_TCONFA_CHAIN_SHIFT
#define _LESENSE_TIMCTRL_AUXPRESC_MASK
#define _LESENSE_DECCTRL_INTMAP_SHIFT
#define _LESENSE_TIMCTRL_PCTOP_MASK
#define _LESENSE_CH_INTERACT_RESETVALUE
LESENSE_DecStDesc_TypeDef St[16]
LESENSE_ChCompMode_TypeDef compMode
void LESENSE_ClkDivSet(LESENSE_ChClk_TypeDef const clk, LESENSE_ClkPresc_TypeDef const clkDiv)
Set clock division for LESENSE timers.
#define _LESENSE_CH_INTERACT_ACMPTHRES_SHIFT
#define _LESENSE_TIMCTRL_PCTOP_SHIFT
#define _LESENSE_IDLECONF_RESETVALUE
LESENSE_PRSSel_TypeDef prsChSel2
#define _LESENSE_ST_TCONFB_MASK_SHIFT
LESENSE_DACRef_TypeDef dacRef
#define _LESENSE_PERCTRL_DACCH1OUT_SHIFT
#define _LESENSE_DECCTRL_HYSTIRQ_SHIFT
#define _LESENSE_TIMCTRL_LFPRESC_SHIFT
#define _LESENSE_CH_TIMING_MEASUREDLY_SHIFT
#define _LESENSE_DECCTRL_PRSSEL3_SHIFT
LESENSE_PerCtrlDesc_TypeDef perCtrl
#define _LESENSE_TIMCTRL_STARTDLY_MASK
LESENSE_ScanConfSel_TypeDef scanConfSel
uint32_t LESENSE_DecoderStateGet(void)
Get the current state of the LESENSE decoder.
#define _LESENSE_CTRL_ACMP0INV_SHIFT
#define _LESENSE_DECCTRL_HYSTPRS0_SHIFT
void LESENSE_Init(LESENSE_Init_TypeDef const *init, bool const reqReset)
Initialize the LESENSE module.
LESENSE_ControlACMP_TypeDef acmp0Mode
#define _LESENSE_PERCTRL_ACMP0MODE_SHIFT
#define _LESENSE_PERCTRL_DACCH1CONV_SHIFT
#define _LESENSE_DECCTRL_PRSSEL1_SHIFT
LESENSE_ControlDACConv_TypeDef dacCh0ConvMode
LESENSE_ControlDACOut_TypeDef dacCh1OutMode
#define _LESENSE_CH_EVAL_SCANRESINV_SHIFT
#define _LESENSE_CH_EVAL_DECODE_SHIFT
LESENSE_DecStCond_TypeDef confB
LESENSE_ChClk_TypeDef sampleClk
LESENSE_CoreCtrlDesc_TypeDef coreCtrl
LESENSE_ScanMode_TypeDef scanStart
#define _LESENSE_CH_TIMING_RESETVALUE
#define _LESENSE_TIMCTRL_AUXPRESC_SHIFT
#define _LESENSE_PERCTRL_DACCH0DATA_SHIFT
LESENSE_AltExMap_TypeDef altExMap
#define _LESENSE_CTRL_ACMP1INV_SHIFT
#define _LESENSE_DECCTRL_PRSSEL0_SHIFT
#define _LESENSE_PERCTRL_DACCH0CONV_SHIFT
void LESENSE_DecoderStateAllConfig(LESENSE_DecStAll_TypeDef const *confDecStAll)
Configure all LESENSE decoder states.
#define _LESENSE_CH_EVAL_COMPTHRES_SHIFT
#define _LESENSE_PERCTRL_DACCH0OUT_SHIFT
#define _LESENSE_BIASCTRL_RESETVALUE
#define _LESENSE_CH_EVAL_RESETVALUE
LESENSE_DecInput_TypeDef decInput
#define _LESENSE_CTRL_RESETVALUE
#define _LESENSE_CH_INTERACT_SAMPLECLK_SHIFT
#define _LESENSE_TIMCTRL_STARTDLY_SHIFT
Low Energy Sensor (LESENSE) peripheral API.
LESENSE_WarmupMode_TypeDef warmupMode
LESENSE_StTransAct_TypeDef prsAct
LESENSE_BiasMode_TypeDef biasMode
LESENSE_AltExPinIdle_TypeDef idleConf
#define _LESENSE_PERCTRL_DACPRESC_SHIFT
void LESENSE_ChannelEnableMask(uint16_t chMask, uint16_t pinMask)
Enable/disable LESENSE scan channel and the pin assigned to it.
__STATIC_INLINE void BUS_RegBitWrite(volatile uint32_t *addr, unsigned int bit, unsigned int val)
Perform a single-bit write operation on a peripheral register.
void LESENSE_ScanStart(void)
Start scanning of sensors.
#define _LESENSE_DECCTRL_RESETVALUE
#define _LESENSE_ST_TCONFA_COMP_SHIFT
void LESENSE_DecoderStateConfig(LESENSE_DecStDesc_TypeDef const *confDecSt, uint32_t const decSt)
Configure a single LESENSE decoder state.
void LESENSE_ScanStop(void)
Stop scanning of sensors.
#define _LESENSE_TIMCTRL_PCPRESC_MASK
uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
Get clock frequency for a clock point.
#define _LESENSE_ROUTE_RESETVALUE
#define _LESENSE_PERCTRL_RESETVALUE
#define LESENSE_DECCTRL_DISABLE
#define _LESENSE_ST_TCONFB_SETIF_SHIFT
#define _LESENSE_DECCTRL_PRSCNT_SHIFT
#define _LESENSE_CTRL_STRSCANRES_SHIFT
#define _LESENSE_DECCTRL_HYSTPRS2_SHIFT
void LESENSE_ScanModeSet(LESENSE_ScanMode_TypeDef const scanMode, bool const start)
Set scan mode of the LESENSE channels.
LESENSE_ChIntMode_TypeDef intMode
LESENSE_ChPinExMode_TypeDef chPinExMode
LESENSE_BufTrigLevel_TypeDef bufTrigLevel
LESENSE_PRSSel_TypeDef prsChSel1
#define _LESENSE_ST_TCONFB_RESETVALUE
void LESENSE_StartDelaySet(uint8_t const startDelay)
Set start delay of sensor interaction on each channel.
LESENSE_ChSampleMode_TypeDef sampleMode
#define _LESENSE_CH_TIMING_EXTIME_SHIFT
#define _LESENSE_DECSTATE_DECSTATE_MASK