18. Operational amplifier (OPAMP)

18.1 OPAMP introduction

STM32F302xB/C/D/E devices embed 2 operational amplifiers OPAMP1, OPAMP2 and STM32F302x6/8 devices embed 1 operational amplifier OPAMP2. They can either be used as standalone amplifiers or as follower / programmable gain amplifiers.

The operational amplifier output is internally connected to an ADC channel for measurement purposes.

18.2 OPAMP main features

18.3 OPAMP functional description

18.3.1 General description

On every OPAMP, there is one 4:1 multiplexer on the non-inverting input and one 2:1 multiplexer on the inverting input.

The inverting and non inverting inputs selection is made using the VM_SEL and VP_SEL bits respectively in the OPAMPx_CSR register.

The I/Os used as OPAMP input/outputs must be configured in analog mode in the GPIOs registers.

The connections with dedicated I/O are summarized in the table below and in Figure 120 and Figure 121 .

Table 105. Connections with dedicated I/O

OPAMP1 inverting input (1)OPAMP1 non inverting input (1)OPAMP2 inverting inputOPAMP2 non inverting input
PA3 (VM1)PA1 (VP0)PA5 (VM1)PA7 (VP0)
PC5 (VM0)PA7 (VP1)PC5 (VM0)PD14 (VP1)
PA5 (VP3)PA3 (VP2)-PB0 (VP2)
---PB14 (VP3) (1)

1. Only in STM32F302xB/C/D/E devices.

18.3.2 Clock

The OPAMP clock provided by the clock controller is synchronized with the PCLK2 (APB2 clock). There is no clock enable control bit provided in the RCC controller. To use a clock source for the OPAMP, the SYSCFG clock enable control bit must be set in the RCC controller.

18.3.3 Operational amplifiers and comparators interconnections

Internal connections between the operational amplifiers and the comparators are useful in motor control applications. These connections are summarized in the following figures.

Figure 120. STM32F302xB/C/D/E comparator and operational amplifier connections

Figure 120: STM32F302xB/C/D/E comparator and operational amplifier connections. The diagram shows two comparators (COMP 1 and COMP 2) and two operational amplifiers (OPAMP1 and OPAMP2) with their respective input and output connections. COMP 1 has its non-inverting input connected to a multiplexer selecting between PA0, PA5, DAC1_CH1, VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. Its inverting input is connected to a multiplexer selecting between PA1, PA3, and PA5. The output of COMP 1 is connected to PA0/PF4/PA6/PA11/PB8 and to a 'Polarity selection' block. The 'Polarity selection' block is connected to a list of TIM1, TIM2, and TIM3 pins (BKIN, OCrefClear, IC1, IC4). COMP 2 has its non-inverting input connected to a multiplexer selecting between PA2, PA5, DAC1_CH1, VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. Its inverting input is connected to a multiplexer selecting between PA3, PA2, and PA3. The output of COMP 2 is connected to PA2/PA7/PA12/PB9 and to another 'Polarity selection' block. The 'Polarity selection' block is connected to a list of TIM1, TIM2, and TIM3 pins (BKIN, OCrefClear, IC1, IC4, OCRefCle). OPAMP1 has its non-inverting input connected to a multiplexer selecting between PA3, PA2, and PA3. Its inverting input is connected to a multiplexer selecting between PA7, PB0, PB14, and PD14. The output of OPAMP1 is connected to an ADC. OPAMP2 has its non-inverting input connected to a multiplexer selecting between PC5, PA5, and PA6. Its inverting input is connected to a multiplexer selecting between PA3, PA2, and PA3. The output of OPAMP2 is connected to an ADC.

The diagram illustrates the internal connections for two comparators (COMP 1 and COMP 2) and two operational amplifiers (OPAMP1 and OPAMP2) in the STM32F302xB/C/D/E series.
COMP 1: The non-inverting input (+) is connected to a multiplexer with sources: PA0, PA5, DAC1_CH1, VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. The inverting input (-) is connected to a multiplexer with sources: PA1, PA3, and PA5. The output is connected to pins PA0/PF4/PA6/PA11/PB8 and to a 'Polarity selection' block. The 'Polarity selection' block is connected to the following pins: TIM1_BKIN, TIM1_OCrefClear, TIM1_IC1, TIM2_IC4, TIM2_OCRefClear, TIM3_IC1, TIM3_OCRefClear, TIM1_BKIN2, and TIM1_BKIN2.
COMP 2: The non-inverting input (+) is connected to a multiplexer with sources: PA2, PA5, DAC1_CH1, VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. The inverting input (-) is connected to a multiplexer with sources: PA3, PA2, and PA3. The output is connected to pins PA2/PA7/PA12/PB9 and to another 'Polarity selection' block. The 'Polarity selection' block is connected to the following pins: TIM1_BKIN, TIM1_OCrefClear, TIM1_IC1, TIM2_IC4, TIM2_OCRefCle, TIM3_IC1, TIM3_OCRefCle, TIM1_BKIN2, and TIM1_BKIN2.
OPAMP1: The non-inverting input (+) is connected to a multiplexer with sources: PA3, PA2, and PA3. The inverting input (-) is connected to a multiplexer with sources: PA7, PB0, PB14, and PD14. The output is connected to an ADC.
OPAMP2: The non-inverting input (+) is connected to a multiplexer with sources: PC5, PA5, and PA6. The inverting input (-) is connected to a multiplexer with sources: PA3, PA2, and PA3. The output is connected to an ADC.

MS32665V3

Figure 120: STM32F302xB/C/D/E comparator and operational amplifier connections. The diagram shows two comparators (COMP 1 and COMP 2) and two operational amplifiers (OPAMP1 and OPAMP2) with their respective input and output connections. COMP 1 has its non-inverting input connected to a multiplexer selecting between PA0, PA5, DAC1_CH1, VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. Its inverting input is connected to a multiplexer selecting between PA1, PA3, and PA5. The output of COMP 1 is connected to PA0/PF4/PA6/PA11/PB8 and to a 'Polarity selection' block. The 'Polarity selection' block is connected to a list of TIM1, TIM2, and TIM3 pins (BKIN, OCrefClear, IC1, IC4). COMP 2 has its non-inverting input connected to a multiplexer selecting between PA2, PA5, DAC1_CH1, VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. Its inverting input is connected to a multiplexer selecting between PA3, PA2, and PA3. The output of COMP 2 is connected to PA2/PA7/PA12/PB9 and to another 'Polarity selection' block. The 'Polarity selection' block is connected to a list of TIM1, TIM2, and TIM3 pins (BKIN, OCrefClear, IC1, IC4, OCRefCle). OPAMP1 has its non-inverting input connected to a multiplexer selecting between PA3, PA2, and PA3. Its inverting input is connected to a multiplexer selecting between PA7, PB0, PB14, and PD14. The output of OPAMP1 is connected to an ADC. OPAMP2 has its non-inverting input connected to a multiplexer selecting between PC5, PA5, and PA6. Its inverting input is connected to a multiplexer selecting between PA3, PA2, and PA3. The output of OPAMP2 is connected to an ADC.

Figure 121. STM32F302x6/8 comparator and operational amplifier connections

Figure 121. STM32F302x6/8 comparator and operational amplifier connections. The diagram shows three comparators (COMP 2, COMP 4, COMP 6) and one operational amplifier (OPAMP2). Each comparator has a non-inverting input (+) and an inverting input (-). The non-inverting inputs are connected to various pins: PA7, PB0, PB14 for COMP 2; PA5, PA6, PB0 for COMP 4; and PB11 for COMP 6. The inverting inputs are connected to a common reference voltage (VREFINT) or a DAC output (PA4 (DAC1_CH1)). Each comparator has a 'Polarity Selection' block and an output connected to a pin (PA2/PA7/PA12/PB9 for COMP 2, PB1 for COMP 4, PA10/PC6 for COMP 6). The outputs are also connected to a 'COMP interrupt' and a list of timer inputs (TIM1_BKIN, TIM1_OCREF_CLR, TIM1_IC1, TIM2_IC4, TIM2_OCREF_CLR, TIM1_BKIN2 for COMP 2; TIM1_BKIN, TIM15_OCREF_CLR, TIM15_IC2 for COMP 4; TIM1_BKIN, TIM16_OCREF_CLR, TIM2_OCREF_CLR, TIM16_IC1, TIM1_BKIN2 for COMP 6). The OPAMP2 output is connected to an ADC. The OPAMP2 non-inverting input is connected to PA7, PB0, PB14, PC5, PA5, PA6, and PB0. The OPAMP2 inverting input is connected to PA4 (DAC1_CH1), VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. The diagram is labeled MSv44241V1.
Figure 121. STM32F302x6/8 comparator and operational amplifier connections. The diagram shows three comparators (COMP 2, COMP 4, COMP 6) and one operational amplifier (OPAMP2). Each comparator has a non-inverting input (+) and an inverting input (-). The non-inverting inputs are connected to various pins: PA7, PB0, PB14 for COMP 2; PA5, PA6, PB0 for COMP 4; and PB11 for COMP 6. The inverting inputs are connected to a common reference voltage (VREFINT) or a DAC output (PA4 (DAC1_CH1)). Each comparator has a 'Polarity Selection' block and an output connected to a pin (PA2/PA7/PA12/PB9 for COMP 2, PB1 for COMP 4, PA10/PC6 for COMP 6). The outputs are also connected to a 'COMP interrupt' and a list of timer inputs (TIM1_BKIN, TIM1_OCREF_CLR, TIM1_IC1, TIM2_IC4, TIM2_OCREF_CLR, TIM1_BKIN2 for COMP 2; TIM1_BKIN, TIM15_OCREF_CLR, TIM15_IC2 for COMP 4; TIM1_BKIN, TIM16_OCREF_CLR, TIM2_OCREF_CLR, TIM16_IC1, TIM1_BKIN2 for COMP 6). The OPAMP2 output is connected to an ADC. The OPAMP2 non-inverting input is connected to PA7, PB0, PB14, PC5, PA5, PA6, and PB0. The OPAMP2 inverting input is connected to PA4 (DAC1_CH1), VREFINT, 3/4 VREFINT, 1/2 VREFINT, and 1/4 VREFINT. The diagram is labeled MSv44241V1.

18.3.4 Using the OPAMP outputs as ADC inputs

In order to use OPAMP outputs as ADC inputs, the operational amplifiers must be enabled and the ADC must use the OPAMP output channel number:

On the STM32F302xB/C:

On the STM32F302x6/8, only OPAMP2 is available and the ADC1 channel 10 is used on OPAMP2.

18.3.5 Calibration

The OPAMP interface continuously sends trimmed offset values to the 4 operational amplifiers. At startup, these values are initialized with the preset 'factory' trimming value.

Furthermore each operational amplifier offset can be trimmed by the user.

The user can switch from the 'factory' values to the 'user' trimmed values using the USER_TRIM bit in the OPAMP control register. This bit is reset at startup ('factory' values are sent to the operational amplifiers).

The rail-to-rail input stage of the OPAMP is composed of two differential pairs:

As these two pairs are independent, the trimming procedure calibrates each one separately. The TRIMOFFSETN bits calibrate the NMOS differential pair offset and the TRIMOFFSETP bits calibrate the PMOS differential pair offset.

To calibrate the NMOS differential pair, the following conditions must be met: CALON=1 and CALSEL=11. In this case, an internal high voltage reference ( \( 0.9 \times V_{DDA} \) ) is generated and applied on the inverting and non inverting OPAMP inputs connected together. The voltage applied to both inputs of the OPAMP can be measured (the OPAMP reference voltage can be output through the TSTREF bit and connected internally to an ADC channel; refer to Section 15: Analog-to-digital converters (ADC) on page 291 ). The software should increment the TRIMOFFSETN bits in the OPAMP control register from 0x00 to the first value that causes the OUTCAL bit to change from 1 to 0 in the OPAMP register. If the OUTCAL bit is reset, the offset is calibrated correctly and the corresponding trimming value must be stored.

The calibration of the PMOS differential pair is performed in the same way, with two differences: the TRIMOFFSETP bits-fields are used and the CALSEL bits must be programmed to '01' (an internal low voltage reference ( \( 0.1 \times V_{DDA} \) ) is generated and applied on the inverting and non inverting OPAMP inputs connected together).

Note: During calibration mode, to get the correct OUTCAL value, please make sure the OFFTRIMmax delay (specified in the datasheet electrical characteristics section) has elapsed between the write of a trimming value (TRIMOFFSETP or TRIMOFFSETN) and the read of the OUTCAL value,

To calibrate the NMOS differential pair, use the following software procedure:

  1. 1. Enable OPAMP by setting the OPAMPxEN bit
  2. 2. Enable the user offset trimming by setting the USERTRIM bit
  3. 3. Connect VM and VP to the internal reference voltage by setting the CALON bit
  4. 4. Set CALSEL to 11 (OPAMP internal reference \( = 0.9 \times V_{DDA} \) )
  5. 5. In a loop, increment the TRIMOFFSETN value. To exit from the loop, the OUTCAL bit must be reset. In this case, the TRIMOFFSETN value must be stored.

The same software procedure must be applied for PMOS differential pair calibration with CALSEL = 01 (OPAMP internal reference \( = 0.1 \times V_{DDA} \) ).

18.3.6 Timer controlled Multiplexer mode

The selection of the OPAMP inverting and non inverting inputs can be done automatically. In this case, the switch from one input to another is done automatically. This automatic switch is triggered by the TIM1 CC6 output arriving on the OPAMP input multiplexers.

This is useful for dual motor control with a need to measure the currents on the 3 phases instantaneously on a first motor and then on the second motor.

The automatic switch is enabled by setting the TCM_EN bit in the OPAMP control register. The inverting and non inverting inputs selection is performed using the VPS_SEL and

VMS_SEL bit fields in the OPAMP control register. If the TCM_EN bit is cleared, the selection is done using the VP_SEL and VM_SEL bit fields in the OPAMP control register.

Figure 122. Timer controlled Multiplexer mode

Timing diagram for Timer controlled Multiplexer mode showing CCR6, T1 counter, T8 counter, ADC sampling points, T1 output (1 out of 3), T8 output (1 out of 3), and T1 CC6 output arriving on OPAMP input mux. The diagram shows the relationship between timer signals and OPAMP input selection points. The OPAMP input selection is shown as a sequence of 'Sec' (secondary) and 'Def' (default) selection points. A legend indicates that blue hexagons represent 'Sec' (secondary) and 'Def' (default) OPAMP input selection types.

OPAMP input selection:
Def = default OPAMP input selection
Sec = secondary OPAMP input selection

MS192230V2

Timing diagram for Timer controlled Multiplexer mode showing CCR6, T1 counter, T8 counter, ADC sampling points, T1 output (1 out of 3), T8 output (1 out of 3), and T1 CC6 output arriving on OPAMP input mux. The diagram shows the relationship between timer signals and OPAMP input selection points. The OPAMP input selection is shown as a sequence of 'Sec' (secondary) and 'Def' (default) selection points. A legend indicates that blue hexagons represent 'Sec' (secondary) and 'Def' (default) OPAMP input selection types.

18.3.7 OPAMP modes

The operational amplifier inputs and outputs are all accessible on terminals. The amplifiers can be used in multiple configuration environments:

Important note: the amplifier output pin is directly connected to the output pad to minimize the output impedance. It cannot be used as a general purpose I/O, even if the amplifier is configured as a PGA and only connected to the ADC channel.

Note: The impedance of the signal must be maintained below a level which avoids the input leakage to create significant artefacts (due to a resistive drop in the source). Please refer to the electrical characteristics section in the datasheet for further details.

Standalone mode (external gain setting mode)

The external gain setting mode gives full flexibility to choose the amplifier configuration and feedback networks. This mode is enabled by writing the VM_SEL bits in the OPAMPx_CR register to 00 or 01, to connect the inverting inputs to one of the two possible I/Os.

Figure 123. Standalone mode: external gain setting mode

Circuit diagram of an operational amplifier (OPAMP) in standalone mode with external gain setting. The OPAMP is shown within a dashed box labeled 'STM32'. The non-inverting input (+) is connected to a multiplexer that selects between VP0, VP1, VP2, and VP3. The inverting input (-) is connected to a summing node. The output of the OPAMP is connected to an ADC and also to a feedback network. The feedback network consists of a resistor and a capacitor in parallel, connected to the inverting input. The input signal is connected to the inverting input through a resistor. The gain is determined by the ratio of the feedback resistor to the input resistor. The diagram is labeled MS19226V1.

The diagram illustrates an operational amplifier (OPAMP) configured in an inverting mode with external gain setting. The OPAMP is represented by a triangle with '+' and '-' inputs. The non-inverting input (+) is connected to a multiplexer with four inputs labeled VP0, VP1, VP2, and VP3. The output of the OPAMP is connected to an ADC and also to a feedback network. The feedback network consists of a resistor and a capacitor in parallel, connected between the output and the inverting input (-). The inverting input (-) is also connected to an input signal through a resistor. The input signal is connected to the inverting input through a resistor. The gain is determined by the ratio of the feedback resistor to the input resistor. The entire circuit is enclosed in a dashed box labeled 'STM32'. The diagram is labeled MS19226V1.

Circuit diagram of an operational amplifier (OPAMP) in standalone mode with external gain setting. The OPAMP is shown within a dashed box labeled 'STM32'. The non-inverting input (+) is connected to a multiplexer that selects between VP0, VP1, VP2, and VP3. The inverting input (-) is connected to a summing node. The output of the OPAMP is connected to an ADC and also to a feedback network. The feedback network consists of a resistor and a capacitor in parallel, connected to the inverting input. The input signal is connected to the inverting input through a resistor. The gain is determined by the ratio of the feedback resistor to the input resistor. The diagram is labeled MS19226V1.
  1. 1. This figure gives an example in an inverting configuration. Any other option is possible, including comparator mode.

Follower configuration mode

The amplifier can be configured as a follower, by setting the VM_SEL bits to 11 in the OPAMPx_CR register. This allows you for instance to buffer signals with a relatively high impedance. In this case, the inverting inputs are free and the corresponding ports can be used as regular I/Os.

Figure 124. Follower configuration

Figure 124. Follower configuration diagram. The diagram shows an operational amplifier (OPAMP) configured as a follower. The non-inverting input (+) is connected to a multiplexer that selects between VP0, VP1, VP2, and VP3. The inverting input (-) is connected to a multiplexer that selects between VM0 and VM1, which are labeled as 'Available I/Os'. The output of the OPAMP is connected to an ADC and also to a resistive network consisting of two resistors in series, with the output of the ADC connected to the junction between the two resistors. A note indicates that the output is 'Always connected to OPAMP output (can be used during debug)'. The entire circuit is enclosed in a dashed box labeled 'STM32'. The identifier 'MS19227V1' is shown in the bottom right corner.
Figure 124. Follower configuration diagram. The diagram shows an operational amplifier (OPAMP) configured as a follower. The non-inverting input (+) is connected to a multiplexer that selects between VP0, VP1, VP2, and VP3. The inverting input (-) is connected to a multiplexer that selects between VM0 and VM1, which are labeled as 'Available I/Os'. The output of the OPAMP is connected to an ADC and also to a resistive network consisting of two resistors in series, with the output of the ADC connected to the junction between the two resistors. A note indicates that the output is 'Always connected to OPAMP output (can be used during debug)'. The entire circuit is enclosed in a dashed box labeled 'STM32'. The identifier 'MS19227V1' is shown in the bottom right corner.
  1. 1. This figure gives an example in an inverting configuration. Any other option is possible, including comparator mode.

Programmable Gain Amplifier mode

The Programmable Gain Amplifier (PGA) mode is enabled by writing the VM_SEL bits to 10 in the OPAMPx_CR register. The gain is set using the PGA_GAIN bits which must be set to 0x00..0x11 for gains ranging from 2 to 16.

In this case, the inverting inputs are internally connected to the central point of a built-in gain setting resistive network. Figure 125: PGA mode, internal gain setting (x2/x4/x8/x16), inverting input not used shows the internal connection in this mode.

An alternative option in PGA mode allows you to route the central point of the resistive network on one of the I/Os connected to the non-inverting input. This is enabled using the PGA_GAIN bits in OPAMPx_CR register:

This feature can be used for instance to add a low-pass filter to PGA, as shown in Figure 126: PGA mode, internal gain setting (x2/x4/x8/x16), inverting input used for filtering . Please note that the cut-off frequency is changed if the gain is modified (refer to the electrical characteristics section of the datasheet for details on resistive network elements).

Figure 125. PGA mode, internal gain setting (x2/x4/x8/x16), inverting input not used

Circuit diagram for Figure 125 showing an operational amplifier (OPAMP) in a unity-gain buffer configuration. The non-inverting input (+) is connected to a multiplexer with inputs VP0, VP1, VP2, and VP3. The inverting input (-) is connected to the output. The output is connected to an ADC and a variable resistor network. A note indicates that the inverting input is 'Always connected to OPAMP output (can be used during debug)'. The diagram is labeled 'STM32' and 'MS19228V1'.

STM32

VP0
VP1
VP2
VP3

Available I/Os

VM0
VM1

Always connected to OPAMP output (can be used during debug)

ADC

MS19228V1

Circuit diagram for Figure 125 showing an operational amplifier (OPAMP) in a unity-gain buffer configuration. The non-inverting input (+) is connected to a multiplexer with inputs VP0, VP1, VP2, and VP3. The inverting input (-) is connected to the output. The output is connected to an ADC and a variable resistor network. A note indicates that the inverting input is 'Always connected to OPAMP output (can be used during debug)'. The diagram is labeled 'STM32' and 'MS19228V1'.

Figure 126. PGA mode, internal gain setting (x2/x4/x8/x16), inverting input used for filtering

Circuit diagram for Figure 126 showing an operational amplifier (OPAMP) in an inverting configuration. The non-inverting input (+) is connected to a multiplexer with inputs VP0, VP1, VP2, and VP3. The inverting input (-) is connected to a summing node where VM0 and VM1 inputs meet a feedback network. The output is connected to an ADC and a variable resistor network. A note indicates that the inverting input 'Allows optional low-passfiltering' and that the 'NB:gain depends on cut-off frequency'. A dashed line labeled 'Equivalent to' points to the feedback network. The diagram is labeled 'STM32' and 'MS19229V1'.

STM32

VP0
VP1
VP2
VP3

VM0
VM1

Allows optional low-passfiltering

NB:gain depends on cut-off frequency

Equivalent to

ADC

MS19229V1

Circuit diagram for Figure 126 showing an operational amplifier (OPAMP) in an inverting configuration. The non-inverting input (+) is connected to a multiplexer with inputs VP0, VP1, VP2, and VP3. The inverting input (-) is connected to a summing node where VM0 and VM1 inputs meet a feedback network. The output is connected to an ADC and a variable resistor network. A note indicates that the inverting input 'Allows optional low-passfiltering' and that the 'NB:gain depends on cut-off frequency'. A dashed line labeled 'Equivalent to' points to the feedback network. The diagram is labeled 'STM32' and 'MS19229V1'.

PGA network: 5.4K/5.4K(G = 2), 16.2K/5.4K(G = 4), 37.8K/5.4K(G = 8), 40.5K/2.7K(G = 16)

18.4 OPAMP registers

18.4.1 OPAMP1 control register (OPAMP1_CSR)

Note: This register is only available in STM32F302xB/C/D/E devices.

Address offset : 0x38

Reset value: 0xXXXX 0000

31302928272625242322212019181716
LOCKOUTCALTSTR
EF
TRIMOFFSETNTRIMOFFSETPUSER_
TRIM
PGA_GAIN
rwrrwrwrwrwrw
1514131211109876543210
PGA_GAINCALSELCAL
ON
VPS_SELVMS_SE
L
TCM_
EN
VM_SELRes.VP_SELFORCE
_VP
OPAMP
1EN
rwrwrwrwrwrwrwrwrwrw

Bit 31 LOCK: OPAMP 1 lock

This bit is write-once. It is set by software. It can only be cleared by a system reset.

This bit is used to configure the OPAMP1_CSR register as read-only.

0: OPAMP1_CSR is read-write.

1: OPAMP1_CSR is read-only.

Bit 30 OUTCAL:

OPAMP output status flag, when the OPAMP is used as comparator during calibration.

0: Non-inverting < inverting

1: Non-inverting > inverting.

Bit 29 TSTREF:

This bit is set and cleared by software. It is used to output the internal reference voltage

(V REFOPAMP1 ).

0: V REFOPAMP1 is output.

1: V REFOPAMP1 is not output.

Bits 28:24 TRIMOFFSETN: Offset trimming value (NMOS)

Bits 23:19 TRIMOFFSETP: Offset trimming value (PMOS)

Bit 18 USER_TRIM: User trimming enable.

This bit is used to configure the OPAMP offset.

0: User trimming disabled.

1: User trimming enabled.

Bits 17:14 PGA_GAIN : Gain in PGA mode

0X00 = Non-inverting gain = 2

0X01 = Non-inverting gain = 4

0X10 = Non-inverting gain = 8

0X11 = Non-inverting gain = 16

1000 = Non-inverting gain = 2 - Internal feedback connected to VM0

1001 = Non-inverting gain = 4 - Internal feedback connected to VM0

1010 = Non-inverting gain = 8 - Internal feedback connected to VM0

1011 = Non-inverting gain = 16 - Internal feedback connected to VM0

1100 = Non-inverting gain = 2 - Internal feedback connected to VM1

1101 = Non-inverting gain = 4 - Internal feedback connected to VM1

1110 = Non-inverting gain = 8 - Internal feedback connected to VM1

1111 = Non-inverting gain = 16 - Internal feedback connected to VM1

Bits 13:12 CALSEL : Calibration selection

This bit is set and cleared by software. It is used to select the offset calibration bus used to generate the internal reference voltage when CALON = 1 or FORCE_VP= 1.

00 = \( V_{REFOPAMP} = 3.3\% V_{DDA} \)

01 = \( V_{REFOPAMP} = 10\% V_{DDA} \)

10 = \( V_{REFOPAMP} = 50\% V_{DDA} \)

11 = \( V_{REFOPAMP} = 90\% V_{DDA} \)

Bit 11 CALON : Calibration mode enable

This bit is set and cleared by software. It is used to enable the calibration mode connecting VM and VP to the OPAMP internal reference voltage.

0: Calibration mode disabled.

1: Calibration mode enabled.

Bits 10:9 VPS_SEL : OPAMP1 Non inverting input secondary selection.

These bits are set and cleared by software. They are used to select the OPAMP1 non inverting input when TCM_EN = 1.

00: PA7 used as OPAMP1 non inverting input

01: PA5 used as OPAMP1 non inverting input

10: PA3 used as OPAMP1 non inverting input

11: PA1 used as OPAMP1 non inverting input

Bit 8 VMS_SEL : OPAMP1 inverting input secondary selection

This bit is set and cleared by software. It is used to select the OPAMP1 inverting input when TCM_EN = 1.

0: PC5 (VM0) used as OPAMP1 inverting input

1: PA3 (VM1) used as OPAMP1 inverting input

Bit 7 TCM_EN : Timer controlled Mux mode enable

This bit is set and cleared by software. It is used to control automatically the switch between the default selection (VP_SEL and VM_SEL) and the secondary selection (VPS_SEL and VMS_SEL) of the inverting and non inverting inputs.

Bits 6:5 VM_SEL : OPAMP1 inverting input selection.

These bits are set and cleared by software. They are used to select the OPAMP1 inverting input.

00: PC5 (VM0) used as OPAMP1 inverting input

01: PA3 (VM1) used as OPAMP1 inverting input

10: Resistor feedback output (PGA mode)

11: follower mode

Bit 4 Reserved, must be kept at reset value.

Bits 3:2 VP_SEL : OPAMP1 Non inverting input selection.

These bits are set and cleared by software. They are used to select the OPAMP1 non inverting input.
00: PA7 used as OPAMP1 non inverting input
01: PA5 used as OPAMP1 non inverting input
10: PA3 used as OPAMP1 non inverting input
11: PA1 used as OPAMP1 non inverting input

Bit 1 FORCE_VP :

This bit forces a calibration reference voltage on non-inverting input and disables external connections.
0: Normal operating mode. Non-inverting input connected to inputs.
1: Calibration mode. Non-inverting input connected to calibration reference voltage.

Bit 0 OPAMP1EN : OPAMP1 enable.

This bit is set and cleared by software. It is used to enable the OPAMP1.
0: OPAMP1 is disabled.
1: OPAMP1 is enabled.

18.4.2 OPAMP2 control register (OPAMP2_CSR)

Address offset: 0x3C

Reset value: 0xXXXX 0000

31302928272625242322212019181716
LOCKOUT CALTSTR EFTRIMOFFSETNTRIMOFFSETPUSER_ TRIMPGA_GAIN
rwrrwrwrwrwrw

1514131211109876543210
PGA_GAINCALSELCAL ONVPS_SELVMS_ SELTCM_ ENVM_SELRes.VP_SELFORCE _VPOPAMP 2EN
rwrwrwrwrwrwrwrwrwrw

Bit 31 LOCK : OPAMP 2 lock

This bit is write-once. It is set by software. It can only be cleared by a system reset.
This bit is used to configure the OPAMP2_CSR register as read-only.
0: OPAMP2_CSR is read-write.
1: OPAMP2_CSR is read-only.

Bit 30 OUTCAL :

OPAMP output status flag, when the OPAMP is used as comparator during calibration.
0: Non-inverting < inverting
1: Non-inverting > inverting.

Bit 29 TSTREF :

This bit is set and cleared by software. It is used to output the internal reference voltage ( \( V_{REFOPAMP2} \) ).
0: \( V_{REFOPAMP2} \) is output.
1: \( V_{REFOPAMP2} \) is not output.

Bits 28:24 TRIMOFFSETN : Offset trimming value (NMOS)

Bits 23:19 TRIMOFFSETP : Offset trimming value (PMOS)

Bit 18 USER_TRIM : User trimming enable.

This bit is used to configure the OPAMP offset.

Bits 17:14 PGA_GAIN : gain in PGA mode

Bits 13:12 CALSEL : Calibration selection

This bit is set and cleared by software. It is used to select the offset calibration bus used to generate the internal reference voltage when CALON = 1 or FORCE_VP= 1.

Bit 11 CALON : Calibration mode enable

This bit is set and cleared by software. It is used to enable the calibration mode connecting VM and VP to the OPAMP internal reference voltage.

Bits 10:9 VPS_SEL : OPAMP2 Non inverting input secondary selection.

These bits are set and cleared by software. They are used to select the OPAMP2 non inverting input when TCM_EN = 1.

Bit 8 VMS_SEL : OPAMP2 inverting input secondary selection

This bit is set and cleared by software. It is used to select the OPAMP2 inverting input when TCM_EN = 1.

Bit 7 TCM_EN : Timer controlled Mux mode enable.

This bit is set and cleared by software. It is used to control automatically the switch between the default selection (VP_SEL and VM_SEL) and the secondary selection (VPS_SEL and VMS_SEL) of the inverting and non inverting inputs.

Bits 6:5 VM_SEL : OPAMP2 inverting input selection.

These bits are set and cleared by software. They are used to select the OPAMP2 inverting input.

00: PC5 (VM0) used as OPAMP2 inverting input

01: PA5 (VM1) used as OPAMP2 inverting input

10: Resistor feedback output (PGA mode)

11: follower mode

Bit 4 Reserved, must be kept at reset value.

Bits 3:2 VP_SEL : OPAMP2 non inverting input selection.

These bits are set/reset by software. They are used to select the OPAMP2 non inverting input.

00: PD14 used as OPAMP2 non inverting input (STM32F302xB/C/D/E devices only)

01: PB14 used as OPAMP2 non inverting input

10: PB0 used as OPAMP2 non inverting input

11: PA7 used as OPAMP2 non inverting input

Bit 1 FORCE_VP :

This bit forces a calibration reference voltage on non-inverting input and disables external connections.

0: Normal operating mode. Non-inverting input connected to inputs.

1: Calibration mode. Non-inverting input connected to calibration reference voltage.

Bit 0 OPAMP2EN : OPAMP2 enable.

This bit is set and cleared by software. It is used to select the OPAMP2.

0: OPAMP2 is disabled.

1: OPAMP2 is enabled.

18.4.3 OPAMP register map

The following table summarizes the OPAMP registers.

Table 106. OPAMP register map and reset values

OffsetRegister313029282726252423222120191817161514131211109876543210
0x38OPAMP1_CSRLOCKOUTCALTSTREFTRIMOFFSETNTRIMOFFSETPUSER_TRIMPGA_GAINCALSELCALONVPS_SELVMS_SELTOM_ENVM_SELResVP_SELFORCE_VPOPAMP1EN
Reset valueXXXXXXXXXXXXXXXX0000000000000000
0x3COPAMP2_CSRLOCKOUTCALTSTREFTRIMOFFSETNTRIMOFFSETPUSER_TRIMPGA_GAINCALSELCALONVPS_SELVMS_SELTOM_ENVM_SELResVP_SELFORCE_VPOPAMP2EN
Reset valueXXXXXXXXXXXXXXXX0000000000000000

Refer to Section 3.2 on page 51 for the register boundary addresses.