blob: 581c3a22ad8590f06752d7fefb6f63661660d49e [file] [log] [blame]
/* --COPYRIGHT--,BSD
* Copyright (c) 2014, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* --/COPYRIGHT--*/
//*****************************************************************************
//
// esi.h - Driver for the ESI Module.
//
//*****************************************************************************
#ifndef __MSP430WARE_ESI_H__
#define __MSP430WARE_ESI_H__
#include "inc/hw_memmap.h"
#ifdef __MSP430_HAS_ESI__
//*****************************************************************************
//
// If building with a C++ compiler, make all of the definitions in this header
// have a C binding.
//
//*****************************************************************************
#ifdef __cplusplus
extern "C"
{
#endif
uint16_t ESI_getCounter0(void);
uint16_t ESI_getCounter1(void);
uint16_t ESI_getCounter2(void);
uint16_t ESI_getOscCounter(void);
//*****************************************************************************
//
//The following are values that can be passed to excitationCircuitSelect
//parameter in ESI_AFE_InitParams
//
//*****************************************************************************
#define ESI_EXCITATION_CIRCUIT_DISABLED 0x0
#define ESI_EXCITATION_CIRCUIT_ENABLED ESITEN
//*****************************************************************************
//
//The following are values that can be passed to sampleAndHoldSelect
//parameter in ESI_AFE_InitParams
//
//*****************************************************************************
#define ESI_SAMPLE_HOLD_DISABLED 0x0
#define ESI_SAMPLE_HOLD_ENABLED ESISH
//*****************************************************************************
//
//The following are values that can be passed to midVoltageGeneratorSelect
//parameter in ESI_AFE_InitParams
//
//*****************************************************************************
#define ESI_MID_VOLTAGE_GENERATOR_DISABLED 0x0
#define ESI_MID_VOLTAGE_GENERATOR_ENABLED ESIVCC2
//*****************************************************************************
//
//The following are values that can be passed to sampleAndHoldVSSConnect
//parameter in ESI_AFE_InitParams
//
//*****************************************************************************
#define ESI_SAMPLE_HOLD_VSS_TO_ESIVSS 0x0
#define ESI_SAMPLE_HOLD_VSS_BY_TSM ESIVSS
//*****************************************************************************
//
//The following are values that can be passed to
//inputSelectAFE1 parameter in ESI_AFE1_InitParams
//
//*****************************************************************************
#define ESI_AFE1_INPUT_SELECT_CHx 0
#define ESI_AFE1_INPUT_SELECT_CIx 1
#define ESI_AFE1_INPUT_SELECT_CI3 2
#define ESI_AFE1_INPUT_SELECT_CI 3
//*****************************************************************************
//
//The following are values that can be passed to
//inputSelectAFE2 parameter in ESI_AFE2_InitParams
//
//*****************************************************************************
#define ESI_AFE2_INPUT_SELECT_CHx 0
#define ESI_AFE2_INPUT_SELECT_CIx ESICA2X
//*****************************************************************************
//
//The following are values that can be passed to
//inverterSelectOutputAFE1 parameter in ESI_AFE1_InitParams
//
//*****************************************************************************
#define ESI_INVERTER_FOR_AFE1_DISABLE 0x0
#define ESI_INVERTER_FOR_AFE1_ENABLE ESICA1INV
//*****************************************************************************
//
//The following are values that can be passed to
//inverterSelectOutputAFE2 parameter in ESI_AFE2_InitParams
//
//*****************************************************************************
#define ESI_INVERTER_FOR_AFE2_DISABLE 0x0
#define ESI_INVERTER_FOR_AFE2_ENABLE ESICA2INV
//*****************************************************************************
//
//The following are values that can be passed to
//tsmControlOfComparatorAFE2 parameter in ESI_AFE2_InitParams
//
//*****************************************************************************
#define ESI_TSM_COMPARATOR_CONTROL_AFE2_DISABLE 0x0
#define ESI_TSM_COMPARATOR_CONTROL_AFE2_ENABLE ESICA2EN
//*****************************************************************************
//
//The following are values that can be passed to
//tsmControlDacAFE2 parameter in ESI_AFE2_InitParams
//
//*****************************************************************************
#define ESI_TSM_DAC_CONTROL_AFE2_DISABLE 0x0
#define ESI_TSM_DAC_CONTROL_AFE2_ENABLE ESIDAC2EN
typedef struct ESI_AFE1_InitParams
{
uint16_t excitationCircuitSelect;
uint16_t sampleAndHoldSelect;
uint16_t midVoltageGeneratorSelect;
uint16_t sampleAndHoldVSSConnect;
uint16_t inputSelectAFE1;
uint16_t inverterSelectOutputAFE1;
} ESI_AFE1_InitParams;
extern const ESI_AFE1_InitParams ESI_AFE1_INITPARAMS_DEFAULT;
void ESI_AFE1_init(ESI_AFE1_InitParams *params);
typedef struct ESI_AFE2_InitParams
{
uint16_t inputSelectAFE2;
uint16_t inverterSelectOutputAFE2;
uint16_t tsmControlComparatorAFE2;
uint16_t tsmControlDacAFE2;
} ESI_AFE2_InitParams;
extern const ESI_AFE2_InitParams ESI_AFE2_INITPARAMS_DEFAULT;
void ESI_AFE2_init(ESI_AFE2_InitParams *params);
//*****************************************************************************
//
//The following are values that can be passed to
//channelSelect parameter in ESI_getLatchedComparatorOutput
//
//*****************************************************************************
#define ESI_AFE1_CHANNEL0_SELECT ESIOUT0
#define ESI_AFE1_CHANNEL1_SELECT ESIOUT1
#define ESI_AFE1_CHANNEL2_SELECT ESIOUT2
#define ESI_AFE1_CHANNEL3_SELECT ESIOUT3
#define ESI_AFE2_CHANNEL0_SELECT ESIOUT4
#define ESI_AFE2_CHANNEL1_SELECT ESIOUT5
#define ESI_AFE2_CHANNEL2_SELECT ESIOUT6
#define ESI_AFE2_CHANNEL3_SELECT ESIOUT7
#define ESI_AFE1_TEST_CHANNEL0_SELECT ESITCHOUT0
#define ESI_AFE1_TEST_CHANNEL1_SELECT ESITCHOUT1
//*****************************************************************************
//
//The following are values that are returned by ESI_getLatchedComparatorOutput
//
//*****************************************************************************
#define ESI_AFE_OUTPUT_HIGH 0x1
#define ESI_AFE_OUTPUT_LOW 0x0
uint16_t ESI_getLatchedComparatorOutput(uint16_t channelSelect);
//*****************************************************************************
//
//The following are values that can be passed to
//smclkDivider parameter in ESI_TSM_InitParams
//
//*****************************************************************************
#define ESI_TSM_SMCLK_DIV_1 0x0
#define ESI_TSM_SMCLK_DIV_2 ESIDIV10
#define ESI_TSM_SMCLK_DIV_4 ESIDIV11
#define ESI_TSM_SMCLK_DIV_8 ESIDIV10 + ESIDIV11
//*****************************************************************************
//
//The following are values that can be passed to
//aclkDivider parameter in ESI_TSM_InitParams
//
//*****************************************************************************
#define ESI_TSM_ACLK_DIV_1 0x0
#define ESI_TSM_ACLK_DIV_2 ESIDIV20
#define ESI_TSM_ACLK_DIV_4 ESIDIV21
#define ESI_TSM_ACLK_DIV_8 ESIDIV20 + ESIDIV21
//*****************************************************************************
//
//The following are values that can be passed to
//startTriggerAclkDivider parameter in ESI_TSM_InitParams
//
//*****************************************************************************
#define ESI_TSM_START_TRIGGER_DIV_2 0x0
#define ESI_TSM_START_TRIGGER_DIV_6 ESIDIV3A0
#define ESI_TSM_START_TRIGGER_DIV_10 ESIDIV3A1
#define ESI_TSM_START_TRIGGER_DIV_14 ESIDIV3A0 + ESIDIV3A1
#define ESI_TSM_START_TRIGGER_DIV_18 ESIDIV3A2
#define ESI_TSM_START_TRIGGER_DIV_22 ESIDIV3A2 + ESIDIV3A0
#define ESI_TSM_START_TRIGGER_DIV_26 ESIDIV3A2 + ESIDIV3A1
#define ESI_TSM_START_TRIGGER_DIV_30 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0
#define ESI_TSM_START_TRIGGER_DIV_42 ESIDIV3A0 + ESIDIV3A1 + ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_50 ESIDIV3A1 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_54 ESIDIV3A2 + ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_66 ESIDIV3A2 + ESIDIV3A0 + ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_70 ESIDIV3A1 + ESIDIV3A0 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_78 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_90 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_98 ESIDIV3A0 + ESIDIV3A1 + ESIDIV3B0 + \
ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_110 ESIDIV3A2 + ESIDIV3A0 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_126 ESIDIV3A2 + ESIDIV3B0 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_130 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_150 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_154 ESIDIV3A2 + ESIDIV3A0 + ESIDIV3B0 + \
ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_162 ESIDIV3A2 + ESIDIV3B2
#define ESI_TSM_START_TRIGGER_DIV_182 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3B0 + \
ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_198 ESIDIV3A2 + ESIDIV3A0 + ESIDIV3B2
#define ESI_TSM_START_TRIGGER_DIV_210 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B0 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_234 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3B2
#define ESI_TSM_START_TRIGGER_DIV_242 ESIDIV3A2 + ESIDIV3A0 + ESIDIV3B2 + \
ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_270 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B2
#define ESI_TSM_START_TRIGGER_DIV_286 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3B2 + \
ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_330 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B2 + ESIDIV3B0
#define ESI_TSM_START_TRIGGER_DIV_338 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3B2 + \
ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_390 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B2 + ESIDIV3B1
#define ESI_TSM_START_TRIGGER_DIV_450 ESIDIV3A2 + ESIDIV3A1 + ESIDIV3A0 + \
ESIDIV3B2 + ESIDIV3B1 + ESIDIV3B0
//*****************************************************************************
//
//The following are values that can be passed to
//repeatMode parameter in ESI_TSM_InitParams
//
//*****************************************************************************
#define ESI_TSM_REPEAT_NEW_TRIGGER 0x0
#define ESI_TSM_REPEAT_END_OF_PREVIOUS_SEQ ESITSMRP
//*****************************************************************************
//
//The following are values that can be passed to
//startTriggerSelection parameter in ESI_TSM_InitParams
//
//*****************************************************************************
#define ESI_TSM_STOP_SEQUENCE 0x0
#define ESI_TSM_START_TRIGGER_ACLK ESITSMTRG0
#define ESI_TSM_START_TRIGGER_SOFTWARE ESITSMTRG1
#define ESI_TSM_START_TRIGGER_ACLK_OR_SOFTWARE ESITSMTRG1 + ESITSMTRG0
//*****************************************************************************
//
//The following are values that can be passed to
//tsmFunctionalitySelection parameter in ESI_TSM_InitParams
//
//*****************************************************************************
#define ESI_TSM_HIGH_FREQ_CLK_FUNCTION_ON 0x0
#define ESI_TSM_AUTOZERO_CYCLE_FUNCTION_ON ESICLKAZSEL
typedef struct ESI_TSM_InitParams
{
uint16_t smclkDivider;
uint16_t aclkDivider;
uint16_t startTriggerAclkDivider;
uint16_t repeatMode;
uint16_t startTriggerSelection;
uint16_t tsmFunctionSelection;
} ESI_TSM_InitParams;
extern const ESI_TSM_InitParams ESI_TSM_INITPARAMS_DEFAULT;
void ESI_TSM_init(ESI_TSM_InitParams *params);
void ESI_TSM_clearTable(void);
void ESI_TSM_copyTable(uint16_t* tsmTable,
uint16_t size);
void ESI_TSM_softwareTrigger(void);
uint8_t ESI_TSM_getTSMStateDuration(uint8_t stateRegNum);
void ESI_TSM_setTSMStateDuration(uint8_t stateRegNum,
uint8_t duration);
//*****************************************************************************
//
//The following are values that can be passed to
//Q6Select parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_Q6_DISABLE 0x0
#define ESI_PSM_Q6_ENABLE ESIQ6EN
//*****************************************************************************
//
//The following are values that can be passed to
//Q7TriggerSelect parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_Q7_TRIGGER_DISABLE 0x0
#define ESI_PSM_Q7_TRIGGER_ENABLE ESIQ7TRG
//*****************************************************************************
//
//The following are values that can be passed to
//count0Select parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_CNT0_DISABLE 0x0
#define ESI_PSM_CNT0_ENABLE ESICNT0EN
//*****************************************************************************
//
//The following are values that can be passed to
//count0Reset parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_CNT0_NO_RESET 0x0
#define ESI_PSM_CNT0_RESET ESICNT0RST
//*****************************************************************************
//
//The following are values that can be passed to
//count1Select parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_CNT1_DISABLE 0x0
#define ESI_PSM_CNT1_ENABLE ESICNT1EN
//*****************************************************************************
//
//The following are values that can be passed to
//count1Reset parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_CNT1_NO_RESET 0x0
#define ESI_PSM_CNT1_RESET ESICNT1RST
//*****************************************************************************
//
//The following are values that can be passed to
//count2Select parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_CNT2_DISABLE 0x0
#define ESI_PSM_CNT2_ENABLE ESICNT2EN
//*****************************************************************************
//
//The following are values that can be passed to
//count2Reset parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_CNT2_NO_RESET 0x0
#define ESI_PSM_CNT2_RESET ESICNT2RST
//*****************************************************************************
//
//The following are values that can be passed to
//V2Select parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_S3_SELECT 0x0
#define ESI_PSM_Q0_SELECT ESIV2SEL
//*****************************************************************************
//
//The following are values that can be passed to
//TEST4Select parameter in ESI_PSM_InitParams
//
//*****************************************************************************
#define ESI_PSM_TEST4_IS_Q2 0x0
#define ESI_PSM_TEST4_IS_Q1 ESITEST4SEL0
#define ESI_PSM_TEST4_IS_TSM_CLK ESITEST4SEL1
#define ESI_PSM_TEST4_IS_AFE1_COMPARATOR ESITEST4SEL0 + ESITEST4SEL1
typedef struct ESI_PSM_InitParams
{
uint16_t Q6Select;
uint16_t Q7TriggerSelect;
uint16_t count0Select;
uint16_t count0Reset;
uint16_t count1Select;
uint16_t count1Reset;
uint16_t count2Select;
uint16_t count2Reset;
uint16_t V2Select;
uint16_t TEST4Select;
} ESI_PSM_InitParams;
extern const ESI_PSM_InitParams ESI_PSM_INITPARAMS_DEFAULT;
void ESI_PSM_init(ESI_PSM_InitParams *params);
void ESI_PSM_clearTable(void);
void ESI_PSM_copyTable(uint8_t * psmTable,
uint8_t size);
//*****************************************************************************
//
//The following are values that can be passed to
//counterToReset parameter in ESI_PSM_counterReset
//
//*****************************************************************************
#define ESI_PSM_CNT0_RST ESICNT0RST
#define ESI_PSM_CNT1_RST ESICNT1RST
#define ESI_PSM_CNT2_RST ESICNT2RST
void ESI_PSM_resetCounter(uint16_t counterToReset);
//*****************************************************************************
//
//The following are values that can be passed to
//testCycleInsertion parameter in ESI_InitParams
//
//*****************************************************************************
#define ESI_TEST_CYCLE_INSERTION_DISABLE 0x0
#define ESI_TEST_CYCLE_INSERTION_ENABLE ESITESTD
//*****************************************************************************
//
//The following are values that can be passed to
//timerAInputSelection parameter in ESI_InitParams
//
//*****************************************************************************
#define ESI_TIMERA_INPUT_TSM_COMPOUT 0x0
#define ESI_TIMERA_INPUT_TSM_PPUSRC ESICS
//*****************************************************************************
//
//The following are values that can be passed to
//testChannel0Select parameter in ESI_InitParams
//
//*****************************************************************************
#define ESI_TEST_CHANNEL0_SOURCE_IS_CH0_CI0 0x0
#define ESI_TEST_CHANNEL0_SOURCE_IS_CH1_CI1 ESITCH00
#define ESI_TEST_CHANNEL0_SOURCE_IS_CH2_CI2 ESITCH01
#define ESI_TEST_CHANNEL0_SOURCE_IS_CH3_CI3 ESITCH00 + ESITCH01
//*****************************************************************************
//
//The following are values that can be passed to
//testChannel1Select parameter in ESI_InitParams
//
//*****************************************************************************
#define ESI_TEST_CHANNEL1_SOURCE_IS_CH0_CI0 0x0
#define ESI_TEST_CHANNEL1_SOURCE_IS_CH1_CI1 ESITCH10
#define ESI_TEST_CHANNEL1_SOURCE_IS_CH2_CI2 ESITCH11
#define ESI_TEST_CHANNEL1_SOURCE_IS_CH3_CI3 ESITCH10 + ESITCH11
//*****************************************************************************
//
//The following are values that can be passed to
//internalOscSelect parameter in ESI_InitParams
//
//*****************************************************************************
#define ESI_INTERNAL_OSC_DISABLE 0x0
#define ESI_INTERNAL_OSC_ENABLE ESIHFSEL
//*****************************************************************************
//
//The following are values that can be passed to
//sourceNum parameter in ESI_psmSourceSelect
//
//*****************************************************************************
#define PSM_S1_SOURCE 1
#define PSM_S2_SOURCE 2
#define PSM_S3_SOURCE 3
//*****************************************************************************
//
//The following are values that can be passed to
//sourceSelect parameter in ESI_psmSourceSelect
//
//*****************************************************************************
#define ESI_PSM_SOURCE_IS_ESIOUT0 0
#define ESI_PSM_SOURCE_IS_ESIOUT1 1
#define ESI_PSM_SOURCE_IS_ESIOUT2 2
#define ESI_PSM_SOURCE_IS_ESIOUT3 3
#define ESI_PSM_SOURCE_IS_ESIOUT4 4
#define ESI_PSM_SOURCE_IS_ESIOUT5 5
#define ESI_PSM_SOURCE_IS_ESIOUT6 6
#define ESI_PSM_SOURCE_IS_ESIOUT7 7
void ESI_timerAInputSelect(uint16_t select);
void ESI_psmSourceSelect(uint16_t sourceNum,
uint16_t sourceSelect);
void ESI_testChannel0SourceSelect(uint16_t sourceSelect);
void ESI_testChannel1SourceSelect(uint16_t sourceSelect);
void ESI_enable(void);
void ESI_disable(void);
void ESI_enableInternalOscillator();
void ESI_disableInternalOscillator();
void ESI_startInternalOscCal(void);
void ESI_stopInternalOscCal(void);
//*****************************************************************************
//
//The following are values that can be passed to
//oversample parameter in ESI_measureESIOSCOversample
//
//*****************************************************************************
#define ESI_ESIOSC_NO_OVERSAMPLE 0
#define ESI_ESIOSC_OVERSAMPLE_2 2
#define ESI_ESIOSC_OVERSAMPLE_4 4
#define ESI_ESIOSC_OVERSAMPLE_8 8
uint16_t ESI_measureESIOSC(uint8_t oversample);
uint8_t ESI_getESICLKFQ(void);
//*****************************************************************************
//
//The following are values that can be passed to
//incOrDec parameter in ESI_adjustInternalOscFreq
//
//*****************************************************************************
#define ESI_INTERNAL_OSC_FREQ_DECREASE 0x0
#define ESI_INTERNAL_OSC_FREQ_INCREASE 0x1
void ESI_adjustInternalOscFreq(uint16_t incOrDec);
void ESI_setNominalInternalOscFreq(void);
void ESI_calibrateInternalOscFreq(uint16_t targetAclkCounts);
void ESI_setPSMCounter1IncreaseThreshold(uint16_t threshold);
void ESI_setPSMCounter1DecreaseThreshold(uint16_t threshold);
//*****************************************************************************
//
//The following are values that can be passed to
//resultNum parameter in ESI_getConversionResult
//
//*****************************************************************************
#define ESI_CONVERSION_RESULT_1 ESIADMEM1
#define ESI_CONVERSION_RESULT_2 ESIADMEM2
#define ESI_CONVERSION_RESULT_3 ESIADMEM3
#define ESI_CONVERSION_RESULT_4 ESIADMEM4
uint16_t ESI_getConversionResult(uint16_t resultNum);
//*****************************************************************************
//
//The following are values that can be passed to
//dacRegNum parameter in ESI_setAFE1DACValue and ESI_getAFE1DACValue
//
//*****************************************************************************
#define ESI_DAC1_REG0 0
#define ESI_DAC1_REG1 1
#define ESI_DAC1_REG2 2
#define ESI_DAC1_REG3 3
#define ESI_DAC1_REG4 4
#define ESI_DAC1_REG5 5
#define ESI_DAC1_REG6 6
#define ESI_DAC1_REG7 7
void ESI_setAFE1DACValue(uint16_t dacValue,
uint8_t dacRegNum);
uint16_t ESI_getAFE1DACValue(uint8_t dacRegNum);
//*****************************************************************************
//
//The following are values that can be passed to
//dacRegNum parameter in ESI_setAFE2DACValue and ESI_getAFE2DACValue
//
//*****************************************************************************
#define ESI_DAC2_REG0 0
#define ESI_DAC2_REG1 1
#define ESI_DAC2_REG2 2
#define ESI_DAC2_REG3 3
#define ESI_DAC2_REG4 4
#define ESI_DAC2_REG5 5
#define ESI_DAC2_REG6 6
#define ESI_DAC2_REG7 7
void ESI_setAFE2DACValue(uint16_t dacValue,
uint8_t dacRegNum);
uint16_t ESI_getAFE2DACValue(uint8_t dacRegNum);
//*****************************************************************************
//
//The following are values that can be passed to
//stateRegNum parameter in ESI_setTSMstateReg
//
//*****************************************************************************
#define ESI_TSM_STATE_REG_0 0
#define ESI_TSM_STATE_REG_1 1
#define ESI_TSM_STATE_REG_2 2
#define ESI_TSM_STATE_REG_3 3
#define ESI_TSM_STATE_REG_4 4
#define ESI_TSM_STATE_REG_5 5
#define ESI_TSM_STATE_REG_6 6
#define ESI_TSM_STATE_REG_7 7
#define ESI_TSM_STATE_REG_8 8
#define ESI_TSM_STATE_REG_9 9
#define ESI_TSM_STATE_REG_10 10
#define ESI_TSM_STATE_REG_11 11
#define ESI_TSM_STATE_REG_12 12
#define ESI_TSM_STATE_REG_13 13
#define ESI_TSM_STATE_REG_14 14
#define ESI_TSM_STATE_REG_15 15
#define ESI_TSM_STATE_REG_16 16
#define ESI_TSM_STATE_REG_17 17
#define ESI_TSM_STATE_REG_18 18
#define ESI_TSM_STATE_REG_19 19
#define ESI_TSM_STATE_REG_20 20
#define ESI_TSM_STATE_REG_21 21
#define ESI_TSM_STATE_REG_22 22
#define ESI_TSM_STATE_REG_23 23
#define ESI_TSM_STATE_REG_24 24
#define ESI_TSM_STATE_REG_25 25
#define ESI_TSM_STATE_REG_26 26
#define ESI_TSM_STATE_REG_27 27
#define ESI_TSM_STATE_REG_28 28
#define ESI_TSM_STATE_REG_29 29
#define ESI_TSM_STATE_REG_30 30
#define ESI_TSM_STATE_REG_31 31
//*****************************************************************************
//
//The following are values that can be passed to
//inputChannelSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_CHANNEL_SELECT_CH0 0
#define ESI_TSM_STATE_CHANNEL_SELECT_CH1 ESICH0
#define ESI_TSM_STATE_CHANNEL_SELECT_CH2 ESICH1
#define ESI_TSM_STATE_CHANNEL_SELECT_CH3 (ESICH1 | ESICH0)
//*****************************************************************************
//
//The following are values that can be passed to
//LCDampingSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_LC_DAMPING_DISABLE 0x0
#define ESI_TSM_STATE_LC_DAMPING_ENABLE ESILCEN
//*****************************************************************************
//
//The following are values that can be passed to
//excitationSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_EXCITATION_DISABLE 0x0
#define ESI_TSM_STATE_EXCITATION_ENABLE ESIEX
//*****************************************************************************
//
//The following are values that can be passed to
//comparatorSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_COMPARATOR_DISABLE 0x0
#define ESI_TSM_STATE_COMPARATOR_ENABLE ESICA
//*****************************************************************************
//
//The following are values that can be passed to
//highFreqClkOn_or_compAutoZeroCycle parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_HIGH_FREQ_CLK_ON 0x0
#define ESI_TSM_STATE_COMP_AUTOZERO_CYCLE ESICLKON
//*****************************************************************************
//
//The following are values that can be passed to
//outputLatchSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_OUTPUT_LATCH_DISABLE 0x0
#define ESI_TSM_STATE_OUTPUT_LATCH_ENABLE ESIRSON
//*****************************************************************************
//
//The following are values that can be passed to
//testCycleSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_TEST_CYCLE_DISABLE 0x0
#define ESI_TSM_STATE_TEST_CYCLE_ENABLE ESITESTS1
//*****************************************************************************
//
//The following are values that can be passed to
//dacSelect parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_DAC_DISABLE 0x0
#define ESI_TSM_STATE_DAC_ENABLE ESIDAC
//*****************************************************************************
//
//The following are values that can be passed to
//tsmStop parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_CONTINUE 0x0
#define ESI_TSM_STATE_STOP ESISTOP
//*****************************************************************************
//
//The following are values that can be passed to
//tsmClkSrc parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_HIGH_FREQ_CLK 0x0
#define ESI_TSM_STATE_ACLK ESICLK
//*****************************************************************************
//
//Values between these min and max can be pased to
//duration parameter in ESI_TSM_StateParams
//
//*****************************************************************************
#define ESI_TSM_STATE_DURATION_MIN 0x00
#define ESI_TSM_STATE_DURATION_MAX 0x1F
typedef struct ESI_TSM_StateParams
{
uint16_t inputChannelSelect;
uint16_t LCDampingSelect;
uint16_t excitationSelect;
uint16_t comparatorSelect;
uint16_t highFreqClkOn_or_compAutoZeroCycle;
uint16_t outputLatchSelect;
uint16_t testCycleSelect;
uint16_t dacSelect;
uint16_t tsmStop;
uint16_t tsmClkSrc;
uint16_t duration;
} ESI_TSM_StateParams;
void ESI_setTSMstateReg(ESI_TSM_StateParams *params,
uint8_t stateRegNum);
uint16_t ESIgetInterruptVectorRegister(void);
//*****************************************************************************
//
//The following values can be be used to form the interrupt mask for
//ESI_enableInterrupt and ESI_disableInterrupt
//
//*****************************************************************************
#define ESI_INTERRUPT_AFE1_ESIOUTX \
ESIIE0
#define ESI_INTERRUPT_ESISTOP ESIIE1
#define ESI_INTERRUPT_ESISTART ESIIE2
#define ESI_INTERRUPT_ESICNT1 ESIIE3
#define ESI_INTERRUPT_ESICNT2 ESIIE4
#define ESI_INTERRUPT_Q6_BIT_SET ESIIE5
#define ESI_INTERRUPT_Q7_BIT_SET ESIIE6
#define ESI_INTERRUPT_ESICNT0_COUNT_INTERVAL ESIIE7
#define ESI_INTERRUPT_AFE2_ESIOUTX \
ESIIE8
void ESI_enableInterrupt(uint16_t interruptMask);
void ESI_disableInterrupt(uint16_t interruptMask);
//*****************************************************************************
//
//Return values for ESI_getInterruptStatus
//
//*****************************************************************************
#define ESI_INTERRUPT_FLAG_AFE1_ESIOUTX ESIIFG0
#define ESI_INTERRUPT_FLAG_ESISTOP ESIIFG1
#define ESI_INTERRUPT_FLAG_ESISTART ESIIFG2
#define ESI_INTERRUPT_FLAG_ESICNT1 ESIIFG3
#define ESI_INTERRUPT_FLAG_ESICNT2 ESIIFG4
#define ESI_INTERRUPT_FLAG_Q6_BIT_SET ESIIFG5
#define ESI_INTERRUPT_FLAG_Q7_BIT_SET ESIIFG6
#define ESI_INTERRUPT_FLAG_ESICNT0_COUNT_INTERVAL ESIIFG7
#define ESI_INTERRUPT_FLAG_AFE2_ESIOUTX ESIIFG8
uint16_t ESI_getInterruptStatus(uint16_t interruptMask);
void ESI_clearInterrupt(uint16_t interruptMask);
//*****************************************************************************
//
//Values for ifg0Src in ESI_setIFG0Source
//
//*****************************************************************************
#define ESI_IFG0_SET_WHEN_ESIOUT0_SET ESIIFGSET1_0
#define ESI_IFG0_SET_WHEN_ESIOUT0_RESET ESIIFGSET1_1
#define ESI_IFG0_SET_WHEN_ESIOUT1_SET ESIIFGSET1_2
#define ESI_IFG0_SET_WHEN_ESIOUT1_RESET ESIIFGSET1_3
#define ESI_IFG0_SET_WHEN_ESIOUT2_SET ESIIFGSET1_4
#define ESI_IFG0_SET_WHEN_ESIOUT2_RESET ESIIFGSET1_5
#define ESI_IFG0_SET_WHEN_ESIOUT3_SET ESIIFGSET1_6
#define ESI_IFG0_SET_WHEN_ESIOUT3_RESET ESIIFGSET1_7
void ESI_setIFG0Source(uint16_t ifg0Src);
//*****************************************************************************
//
//Values for ifg8Src in ESI_setIFG8Source
//
//*****************************************************************************
#define ESI_IFG8_SET_WHEN_ESIOUT4_SET ESIIFGSET2_0
#define ESI_IFG8_SET_WHEN_ESIOUT4_RESET ESIIFGSET2_1
#define ESI_IFG8_SET_WHEN_ESIOUT5_SET ESIIFGSET2_2
#define ESI_IFG8_SET_WHEN_ESIOUT5_RESET ESIIFGSET2_3
#define ESI_IFG8_SET_WHEN_ESIOUT6_SET ESIIFGSET2_4
#define ESI_IFG8_SET_WHEN_ESIOUT6_RESET ESIIFGSET2_5
#define ESI_IFG8_SET_WHEN_ESIOUT7_SET ESIIFGSET2_6
#define ESI_IFG8_SET_WHEN_ESIOUT7_RESET ESIIFGSET2_7
void ESI_setIFG8Source(uint16_t ifg8Src);
//*****************************************************************************
//
//Values for ifg7Src in ESI_setIFG7Source
//
//*****************************************************************************
#define ESI_IFG7_SOURCE_EVERY_COUNT_OF_CNT0 ESIIS0_0
#define ESI_IFG7_SOURCE_CNT0_MOD4 ESIIS0_1
#define ESI_IFG7_SOURCE_CNT0_MOD256 ESIIS0_2
#define ESI_IFG7_SOURCE_CNT0_ROLLOVER ESIIS0_3
void ESI_setIFG7Source(uint16_t ifg7Src);
//*****************************************************************************
//
//Values for ifg4Src in ESI_setIFG4Source
//
//*****************************************************************************
#define ESI_IFG4_SOURCE_EVERY_COUNT_OF_CNT2 ESIIS2_0
#define ESI_IFG4_SOURCE_CNT2_MOD4 ESIIS2_1
#define ESI_IFG4_SOURCE_CNT2_MOD256 ESIIS2_2
#define ESI_IFG4_SOURCE_CNT2_ROLLOVER ESIIS2_3
void ESI_setIFG4Source(uint16_t ifg4Src);
void ESI_setPSMCounter1UpperThreshold(uint16_t threshold);
void ESI_setPSMCounter1LowerThreshold(uint16_t threshold);
//*****************************************************************************
//
// Set correct DAC values for LC sensors
//
//*****************************************************************************
void ESI_LC_DAC_calibration(uint8_t selected_channel);
//*****************************************************************************
//
// Mark the end of the C bindings section for C++ compilers.
//
//*****************************************************************************
#ifdef __cplusplus
}
#endif
#endif
#endif