EFM32 Wonder Gecko Software Documentation  efm32wg-doc-5.1.2
OPAMP

Detailed Description

Operational Amplifier (OPAMP) peripheral API.

This module contains functions to:

All OPAMP functions assume that the DAC clock is running. If the DAC is not used, the clock can be turned off when the opamp's are configured.

If the available gain values dont suit the application at hand, the resistor ladders can be disabled and external gain programming resistors used.

A number of predefined opamp setup macros are available for configuration of the most common opamp topologies (see figures below).

Note
The terms POSPAD and NEGPAD in the figures are used to indicate that these pads should be connected to a suitable signal ground.


Unity gain voltage follower.
Use predefined macros OPA_INIT_UNITY_GAIN and OPA_INIT_UNITY_GAIN_OPA2.

                    |\
         ___________|+\
                    |  \_______
                 ___|_ /    |
                |   | /     |
                |   |/      |
                |___________|


Non-inverting amplifier.
Use predefined macros OPA_INIT_NON_INVERTING and OPA_INIT_NON_INVERTING_OPA2.

                    |\
         ___________|+\
                    |  \_______
                 ___|_ /    |
                |   | /     |
                |   |/      |
                |_____R2____|
                |
                R1
                |
              NEGPAD 


Inverting amplifier.
Use predefined macros OPA_INIT_INVERTING and OPA_INIT_INVERTING_OPA2.

                 _____R2____
                |           |
                |   |\      |
         ____R1_|___|_\     |
                    |  \____|___
                 ___|  /
                |   |+/
                |   |/
                |
              POSPAD 


Cascaded non-inverting amplifiers.
Use predefined macros OPA_INIT_CASCADED_NON_INVERTING_OPA0, OPA_INIT_CASCADED_NON_INVERTING_OPA1 and OPA_INIT_CASCADED_NON_INVERTING_OPA2.

                    |\                       |\                       |\
         ___________|+\ OPA0      ___________|+\ OPA1      ___________|+\ OPA2
                    |  \_________|           |  \_________|           |  \_______
                 ___|_ /    |             ___|_ /    |             ___|_ /    |
                |   | /     |            |   | /     |            |   | /     |
                |   |/      |            |   |/      |            |   |/      |
                |_____R2____|            |_____R2____|            |_____R2____|
                |                        |                        |
                R1                       R1                       R1
                |                        |                        |
              NEGPAD                   NEGPAD                   NEGPAD 


Cascaded inverting amplifiers.
Use predefined macros OPA_INIT_CASCADED_INVERTING_OPA0, OPA_INIT_CASCADED_INVERTING_OPA1 and OPA_INIT_CASCADED_INVERTING_OPA2.

                 _____R2____              _____R2____              _____R2____
                |           |            |           |            |           |
                |   |\      |            |   |\      |            |   |\      |
         ____R1_|___|_\     |     ____R1_|___|_\     |     ____R1_|___|_\     |
                    |  \____|____|           |  \____|___|            |  \____|__
                 ___|  /                  ___|  /                  ___|  /
                |   |+/ OPA0             |   |+/ OPA1             |   |+/ OPA2
                |   |/                   |   |/                   |   |/
                |                        |                        |
              POSPAD                   POSPAD                   POSPAD 


Differential driver with two opamp's.
Use predefined macros OPA_INIT_DIFF_DRIVER_OPA0 and OPA_INIT_DIFF_DRIVER_OPA1.

                                  __________________________
                                 |                          +
                                 |        _____R2____
                    |\           |       |           |
         ___________|+\ OPA0     |       |   |\ OPA1 |
                    |  \_________|____R1_|___|_\     |      _
                 ___|_ /         |           |  \____|______
                |   | /          |        ___|  /
                |   |/           |       |   |+/
                |________________|       |   |/
                                         |
                                       POSPAD 


Differential receiver with three opamp's.
Use predefined macros OPA_INIT_DIFF_RECEIVER_OPA0, OPA_INIT_DIFF_RECEIVER_OPA1 and OPA_INIT_DIFF_RECEIVER_OPA2.

                    |\
          __________|+\ OPA1
         _          |  \_________
                 ___|_ /    |    |        _____R2____
                |   | /     |    |       |           |
                |   |/      |    |       |   |\      |
                |___________|    |____R1_|___|_\     |
                                             |  \____|___
                    |\            ____R1_ ___|  /
         +__________|+\ OPA0     |       |   |+/ OPA2
                    |  \_________|       |   |/
                 ___|_ /    |            R2
                |   | /     |            |
                |   |/      |          NEGPAD OPA0
                |___________|

Data Structures

struct  OPAMP_Init_TypeDef
 

Macros

#define OPA_INIT_CASCADED_INVERTING_OPA0
 
#define OPA_INIT_CASCADED_INVERTING_OPA1
 
#define OPA_INIT_CASCADED_INVERTING_OPA2
 
#define OPA_INIT_CASCADED_NON_INVERTING_OPA0
 
#define OPA_INIT_CASCADED_NON_INVERTING_OPA1
 
#define OPA_INIT_CASCADED_NON_INVERTING_OPA2
 
#define OPA_INIT_DIFF_DRIVER_OPA0
 
#define OPA_INIT_DIFF_DRIVER_OPA1
 
#define OPA_INIT_DIFF_RECEIVER_OPA0
 
#define OPA_INIT_DIFF_RECEIVER_OPA1
 
#define OPA_INIT_DIFF_RECEIVER_OPA2
 
#define OPA_INIT_INVERTING
 
#define OPA_INIT_INVERTING_OPA2
 
#define OPA_INIT_NON_INVERTING
 
#define OPA_INIT_NON_INVERTING_OPA2
 
#define OPA_INIT_UNITY_GAIN
 
#define OPA_INIT_UNITY_GAIN_OPA2
 

Enumerations

enum  OPAMP_NegSel_TypeDef {
  opaNegSelDisable = DAC_OPA0MUX_NEGSEL_DISABLE,
  opaNegSelUnityGain = DAC_OPA0MUX_NEGSEL_UG,
  opaNegSelResTap = DAC_OPA0MUX_NEGSEL_OPATAP,
  opaNegSelNegPad = DAC_OPA0MUX_NEGSEL_NEGPAD
}
 
enum  OPAMP_OutMode_TypeDef {
  opaOutModeDisable = DAC_OPA0MUX_OUTMODE_DISABLE,
  opaOutModeMain = DAC_OPA0MUX_OUTMODE_MAIN,
  opaOutModeAlt = DAC_OPA0MUX_OUTMODE_ALT,
  opaOutModeAll = DAC_OPA0MUX_OUTMODE_ALL
}
 
enum  OPAMP_PosSel_TypeDef {
  opaPosSelDisable = DAC_OPA0MUX_POSSEL_DISABLE,
  opaPosSelDac = DAC_OPA0MUX_POSSEL_DAC,
  opaPosSelPosPad = DAC_OPA0MUX_POSSEL_POSPAD,
  opaPosSelOpaIn = DAC_OPA0MUX_POSSEL_OPA0INP,
  opaPosSelResTapOpa0 = DAC_OPA0MUX_POSSEL_OPATAP
}
 
enum  OPAMP_ResInMux_TypeDef {
  opaResInMuxDisable = DAC_OPA0MUX_RESINMUX_DISABLE,
  opaResInMuxOpaIn = DAC_OPA0MUX_RESINMUX_OPA0INP,
  opaResInMuxNegPad = DAC_OPA0MUX_RESINMUX_NEGPAD,
  opaResInMuxPosPad = DAC_OPA0MUX_RESINMUX_POSPAD,
  opaResInMuxVss = DAC_OPA0MUX_RESINMUX_VSS
}
 
enum  OPAMP_ResSel_TypeDef {
  opaResSelDefault = DAC_OPA0MUX_RESSEL_DEFAULT,
  opaResSelR2eq0_33R1 = DAC_OPA0MUX_RESSEL_RES0,
  opaResSelR2eqR1 = DAC_OPA0MUX_RESSEL_RES1,
  opaResSelR1eq1_67R1 = DAC_OPA0MUX_RESSEL_RES2,
  opaResSelR2eq2R1 = DAC_OPA0MUX_RESSEL_RES3,
  opaResSelR2eq3R1 = DAC_OPA0MUX_RESSEL_RES4,
  opaResSelR2eq4_33R1 = DAC_OPA0MUX_RESSEL_RES5,
  opaResSelR2eq7R1 = DAC_OPA0MUX_RESSEL_RES6,
  opaResSelR2eq15R1 = DAC_OPA0MUX_RESSEL_RES7
}
 
enum  OPAMP_TypeDef {
  OPA0 = 0,
  OPA1 = 1,
  OPA2 = 2
}
 

Functions

void OPAMP_Disable (DAC_TypeDef *dac, OPAMP_TypeDef opa)
 Disable an Operational Amplifier. More...
 
void OPAMP_Enable (DAC_TypeDef *dac, OPAMP_TypeDef opa, const OPAMP_Init_TypeDef *init)
 Configure and enable an Operational Amplifier. More...
 

Macro Definition Documentation

#define OPA_INIT_CASCADED_INVERTING_OPA0
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA1). */ \
true, /* Neg pad enabled, used as signal input. */ \
true, /* Pos pad enabled, used as signal ground. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0 in cascaded inverting amplifier mode.

Definition at line 723 of file em_opamp.h.

#define OPA_INIT_CASCADED_INVERTING_OPA1
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxOpaIn, /* Resistor ladder input from OPA0. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA2). */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal ground. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA1 in cascaded inverting amplifier mode.

Definition at line 745 of file em_opamp.h.

#define OPA_INIT_CASCADED_INVERTING_OPA2
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxOpaIn, /* Resistor ladder input from OPA1. */ \
DAC_OPA0MUX_OUTPEN_OUT0, /* Alternate output 0 enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal ground. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define DAC_OPA0MUX_OUTPEN_OUT0
Definition: efm32wg_dac.h:556
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA2 in cascaded inverting amplifier mode.

Definition at line 767 of file em_opamp.h.

#define OPA_INIT_CASCADED_NON_INVERTING_OPA0
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelR2eq0_33R1, /* R2 = 1/3 R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA1). */ \
true, /* Neg pad enabled, used as signal ground. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0 in cascaded non-inverting amplifier mode.

Definition at line 657 of file em_opamp.h.

#define OPA_INIT_CASCADED_NON_INVERTING_OPA1
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelOpaIn, /* Pos input from OPA0 output. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelR2eq0_33R1, /* R2 = 1/3 R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA2). */ \
true, /* Neg pad enabled, used as signal ground. */ \
false, /* Pos pad disabled. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA1 in cascaded non-inverting amplifier mode.

Definition at line 679 of file em_opamp.h.

#define OPA_INIT_CASCADED_NON_INVERTING_OPA2
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelOpaIn, /* Pos input from OPA1 output. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eq0_33R1, /* R2 = 1/3 R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
DAC_OPA0MUX_OUTPEN_OUT0, /* Alternate output 0 enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
true, /* Neg pad enabled, used as signal ground. */ \
false, /* Pos pad disabled. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define DAC_OPA0MUX_OUTPEN_OUT0
Definition: efm32wg_dac.h:556
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA2 in cascaded non-inverting amplifier mode.

Definition at line 701 of file em_opamp.h.

#define OPA_INIT_DIFF_DRIVER_OPA0
Value:
{ \
opaNegSelUnityGain, /* Unity gain. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelDefault, /* Resistor ladder is not used. */ \
opaResInMuxDisable, /* Resistor ladder disabled. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA1). */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0 in two-opamp differential driver mode.

Definition at line 789 of file em_opamp.h.

#define OPA_INIT_DIFF_DRIVER_OPA1
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxOpaIn, /* Resistor ladder input from OPA0. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal ground. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA1 in two-opamp differential driver mode.

Definition at line 811 of file em_opamp.h.

#define OPA_INIT_DIFF_RECEIVER_OPA0
Value:
{ \
opaNegSelUnityGain, /* Unity gain. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA2). */ \
true, /* Neg pad enabled, used as signal ground. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0 in three-opamp differential receiver mode.

Definition at line 833 of file em_opamp.h.

#define OPA_INIT_DIFF_RECEIVER_OPA1
Value:
{ \
opaNegSelUnityGain, /* Unity gain. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeAll, /* Both main and alternate outputs. */ \
opaResSelDefault, /* Resistor ladder is not used. */ \
opaResInMuxDisable, /* Disable resistor ladder. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
true, /* Pass output to next stage (OPA2). */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA1 in three-opamp differential receiver mode.

Definition at line 855 of file em_opamp.h.

#define OPA_INIT_DIFF_RECEIVER_OPA2
Value:
{ \
opaNegSelResTap, /* Input from resistor ladder tap. */ \
opaPosSelResTapOpa0, /* Input from OPA0 resistor ladder tap. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxOpaIn, /* Resistor ladder input from OPA1. */ \
DAC_OPA0MUX_OUTPEN_OUT0, /* Enable alternate output 0. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
false, /* Neg pad disabled. */ \
false, /* Pos pad disabled. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define DAC_OPA0MUX_OUTPEN_OUT0
Definition: efm32wg_dac.h:556
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA2 in three-opamp differential receiver mode.

Definition at line 877 of file em_opamp.h.

#define OPA_INIT_INVERTING
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
true, /* Neg pad enabled, used as signal input. */ \
true, /* Pos pad enabled, used as signal ground. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0/1 in inverting amplifier mode.

Definition at line 613 of file em_opamp.h.

#define OPA_INIT_INVERTING_OPA2
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eqR1, /* R2 = R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
DAC_OPA0MUX_OUTPEN_OUT0, /* Alternate output 0 enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
true, /* Neg pad enabled, used as signal input. */ \
true, /* Pos pad enabled, used as signal ground. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define DAC_OPA0MUX_OUTPEN_OUT0
Definition: efm32wg_dac.h:556
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA2 in inverting amplifier mode.

Definition at line 635 of file em_opamp.h.

#define OPA_INIT_NON_INVERTING
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eq0_33R1, /* R2 = 1/3 R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
true, /* Neg pad enabled, used as signal ground. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0/1 in non-inverting amplifier mode.

Definition at line 569 of file em_opamp.h.

#define OPA_INIT_NON_INVERTING_OPA2
Value:
{ \
opaNegSelResTap, /* Neg input from resistor ladder tap. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelR2eq0_33R1, /* R2 = 1/3 R1 */ \
opaResInMuxNegPad, /* Resistor ladder input from neg pad. */ \
DAC_OPA0MUX_OUTPEN_OUT0, /* Alternate output 0 enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
true, /* Neg pad enabled, used as signal ground. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define DAC_OPA0MUX_OUTPEN_OUT0
Definition: efm32wg_dac.h:556
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA2 in non-inverting amplifier mode.

Definition at line 591 of file em_opamp.h.

#define OPA_INIT_UNITY_GAIN
Value:
{ \
opaNegSelUnityGain, /* Unity gain. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelDefault, /* Resistor ladder is not used. */ \
opaResInMuxDisable, /* Resistor ladder disabled. */ \
0, /* No alternate outputs enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA0/1 in unity gain voltage follower mode.

Definition at line 525 of file em_opamp.h.

#define OPA_INIT_UNITY_GAIN_OPA2
Value:
{ \
opaNegSelUnityGain, /* Unity gain. */ \
opaPosSelPosPad, /* Pos input from pad. */ \
opaOutModeMain, /* Main output enabled. */ \
opaResSelDefault, /* Resistor ladder is not used. */ \
opaResInMuxDisable, /* Resistor ladder disabled. */ \
DAC_OPA0MUX_OUTPEN_OUT0, /* Alternate output 0 enabled. */ \
_DAC_BIASPROG_BIASPROG_DEFAULT, /* Default bias setting. */ \
_DAC_BIASPROG_HALFBIAS_DEFAULT, /* Default half-bias setting. */ \
false, /* No low pass filter on pos pad. */ \
false, /* No low pass filter on neg pad. */ \
false, /* No nextout output enabled. */ \
false, /* Neg pad disabled. */ \
true, /* Pos pad enabled, used as signal input. */ \
false, /* No shorting of inputs. */ \
false, /* Rail-to-rail input enabled. */ \
true, /* Use factory calibrated opamp offset. */ \
0 /* Opamp offset value (not used). */ \
}
#define DAC_OPA0MUX_OUTPEN_OUT0
Definition: efm32wg_dac.h:556
#define _DAC_BIASPROG_BIASPROG_DEFAULT
Definition: efm32wg_dac.h:396
#define _DAC_BIASPROG_HALFBIAS_DEFAULT
Definition: efm32wg_dac.h:401

Configuration of OPA2 in unity gain voltage follower mode.

Definition at line 547 of file em_opamp.h.

Enumeration Type Documentation

OPAMP negative terminal input selection values.

Enumerator
opaNegSelDisable 

Input disabled.

opaNegSelUnityGain 

Unity gain feedback path.

opaNegSelResTap 

Feedback resistor ladder tap.

opaNegSelNegPad 

Negative pad as input.

Definition at line 87 of file em_opamp.h.

OPAMP output terminal selection values.

Enumerator
opaOutModeDisable 

OPA output disabled.

opaOutModeMain 

Main output to pin enabled.

opaOutModeAlt 

Alternate output(s) enabled (not OPA2).

opaOutModeAll 

Both main and alternate enabled (not OPA2).

Definition at line 249 of file em_opamp.h.

OPAMP positive terminal input selection values.

Enumerator
opaPosSelDisable 

Input disabled.

opaPosSelDac 

DAC as input (not OPA2).

opaPosSelPosPad 

Positive pad as input.

opaPosSelOpaIn 

Input from OPAx.

opaPosSelResTapOpa0 

Feedback resistor ladder tap from OPA0.

Definition at line 167 of file em_opamp.h.

OPAMP resistor ladder input selector values.

Enumerator
opaResInMuxDisable 

Resistor ladder disabled.

opaResInMuxOpaIn 

Input from OPAx.

opaResInMuxNegPad 

Input from negative pad.

opaResInMuxPosPad 

Input from positive pad.

opaResInMuxVss 

Input connected to Vss.

Definition at line 355 of file em_opamp.h.

OPAMP gain values.

Enumerator
opaResSelDefault 

Default value when resistor ladder is unused.

opaResSelR2eq0_33R1 

R2 = 0.33 * R1

opaResSelR2eqR1 

R2 = R1

opaResSelR1eq1_67R1 

R2 = 1.67 R1

opaResSelR2eq2R1 

R2 = 2 * R1

opaResSelR2eq3R1 

R2 = 3 * R1

opaResSelR2eq4_33R1 

R2 = 4.33 * R1

opaResSelR2eq7R1 

R2 = 7 * R1

opaResSelR2eq15R1 

R2 = 15 * R1

Definition at line 329 of file em_opamp.h.

OPAMP selector values.

Enumerator
OPA0 

Select OPA0.

OPA1 

Select OPA1.

OPA2 

Select OPA2.

Definition at line 79 of file em_opamp.h.

Function Documentation

void OPAMP_Disable ( DAC_TypeDef dac,
OPAMP_TypeDef  opa 
)

Disable an Operational Amplifier.

Parameters
[in]dacPointer to DAC peripheral register block.
[in]opaSelects an OPA, valid vaules are OPA0, OPA1 and OPA2.

Definition at line 259 of file em_opamp.c.

References DAC_CH0CTRL_EN, DAC_CH1CTRL_EN, DAC_OPACTRL_OPA0EN, DAC_OPACTRL_OPA1EN, DAC_OPACTRL_OPA2EN, OPA0, and OPA1.

Referenced by OPAMP_Enable().

void OPAMP_Enable ( DAC_TypeDef dac,
OPAMP_TypeDef  opa,
const OPAMP_Init_TypeDef init 
)

Configure and enable an Operational Amplifier.

Note
The value of the alternate output enable bit mask in the OPAMP_Init_TypeDef structure should consist of one or more of the DAC_OPA[opa#]MUX_OUTPEN_OUT[output#] flags (defined in <part_name>_dac.h) OR'ed together.

For OPA0:
  • DAC_OPA0MUX_OUTPEN_OUT0
  • DAC_OPA0MUX_OUTPEN_OUT1
  • DAC_OPA0MUX_OUTPEN_OUT2
  • DAC_OPA0MUX_OUTPEN_OUT3
  • DAC_OPA0MUX_OUTPEN_OUT4
For OPA1:
  • DAC_OPA1MUX_OUTPEN_OUT0
  • DAC_OPA1MUX_OUTPEN_OUT1
  • DAC_OPA1MUX_OUTPEN_OUT2
  • DAC_OPA1MUX_OUTPEN_OUT3
  • DAC_OPA1MUX_OUTPEN_OUT4
For OPA2:
  • DAC_OPA2MUX_OUTPEN_OUT0
  • DAC_OPA2MUX_OUTPEN_OUT1
E.g:
init.outPen = DAC_OPA0MUX_OUTPEN_OUT0 | DAC_OPA0MUX_OUTPEN_OUT4;
Parameters
[in]dacPointer to DAC peripheral register block.
[in]opaSelects an OPA, valid vaules are OPA0, OPA1 and OPA2.
[in]initPointer to a structure containing OPAMP init information.

Definition at line 372 of file em_opamp.c.

References _DAC_BIASPROG_BIASPROG_MASK, _DAC_BIASPROG_BIASPROG_SHIFT, _DAC_BIASPROG_OPA2BIASPROG_MASK, _DAC_BIASPROG_OPA2BIASPROG_SHIFT, _DAC_CAL_CH0OFFSET_MASK, _DAC_CAL_CH0OFFSET_SHIFT, _DAC_CAL_CH1OFFSET_MASK, _DAC_CAL_CH1OFFSET_SHIFT, _DAC_OPA0MUX_OUTPEN_MASK, _DAC_OPA1MUX_OUTPEN_MASK, _DAC_OPA2MUX_OUTPEN_MASK, _DAC_OPACTRL_OPA0LPFDIS_MASK, _DAC_OPACTRL_OPA1LPFDIS_MASK, _DAC_OPACTRL_OPA2LPFDIS_MASK, _DAC_OPAOFFSET_OPA2OFFSET_MASK, _DAC_OPAOFFSET_OPA2OFFSET_SHIFT, OPAMP_Init_TypeDef::bias, DAC_BIASPROG_HALFBIAS, DAC_BIASPROG_OPA2HALFBIAS, DAC_CH0CTRL_EN, DAC_CH1CTRL_EN, DAC_OPA0MUX_NEXTOUT, DAC_OPA0MUX_NPEN, DAC_OPA0MUX_PPEN, DAC_OPA1MUX_NEXTOUT, DAC_OPA1MUX_NPEN, DAC_OPA1MUX_PPEN, DAC_OPA2MUX_NEXTOUT, DAC_OPA2MUX_NPEN, DAC_OPA2MUX_OUTMODE, DAC_OPA2MUX_POSSEL_DISABLE, DAC_OPA2MUX_POSSEL_OPA1INP, DAC_OPA2MUX_POSSEL_OPATAP, DAC_OPA2MUX_POSSEL_POSPAD, DAC_OPA2MUX_PPEN, DAC_OPACTRL_OPA0EN, DAC_OPACTRL_OPA0HCMDIS, DAC_OPACTRL_OPA0LPFDIS_NLPFDIS, DAC_OPACTRL_OPA0LPFDIS_PLPFDIS, DAC_OPACTRL_OPA0SHORT, DAC_OPACTRL_OPA1EN, DAC_OPACTRL_OPA1HCMDIS, DAC_OPACTRL_OPA1LPFDIS_NLPFDIS, DAC_OPACTRL_OPA1LPFDIS_PLPFDIS, DAC_OPACTRL_OPA1SHORT, DAC_OPACTRL_OPA2EN, DAC_OPACTRL_OPA2HCMDIS, DAC_OPACTRL_OPA2LPFDIS_NLPFDIS, DAC_OPACTRL_OPA2LPFDIS_PLPFDIS, DAC_OPACTRL_OPA2SHORT, OPAMP_Init_TypeDef::defaultOffset, DEVINFO, OPAMP_Init_TypeDef::halfBias, OPAMP_Init_TypeDef::hcmDisable, OPAMP_Init_TypeDef::lpfNegPadDisable, OPAMP_Init_TypeDef::lpfPosPadDisable, OPAMP_Init_TypeDef::negSel, OPAMP_Init_TypeDef::nextOut, OPAMP_Init_TypeDef::npEn, OPAMP_Init_TypeDef::offset, OPA0, OPA1, OPA2, OPAMP_Disable(), opaNegSelResTap, OPAMP_Init_TypeDef::outMode, OPAMP_Init_TypeDef::outPen, OPAMP_Init_TypeDef::posSel, OPAMP_Init_TypeDef::ppEn, OPAMP_Init_TypeDef::resInMux, OPAMP_Init_TypeDef::resSel, OPAMP_Init_TypeDef::shortInputs, and SYSTEM_GetCalibrationValue().