infineon,autanalog-ctb-opamp

Description

Infineon AutAnalog CTB opamp.

Each node represents one of the two opamps (OA0 or OA1) within a CTB block.
The opamp can be configured in various topologies via the topology property.
When configured as PGA, TIA, or DiffAmp, the gain is set at build time via
the gain property.  Runtime gain changes are not supported because the
Autonomous Controller restart required to reload the State Transition Table
disrupts the shared SAR ADC sequencer.

Input and output routing is configured via the switch-matrix properties.
See the cy_autanalog_ctb.h PDL header for detailed pin/reference mapping.

The parent node must have compatible "infineon,autanalog-ctb".

Examples

/*
 * Use constants from <dt-bindings/opamp/infineon-autanalog-ctb.h>
 */
ctb1: {
    compatible = "infineon,autanalog-ctb";
    opamp0: opamp@0 {
        compatible = "infineon,autanalog-ctb-opamp";
        reg = <0>;
        power-mode = <IFX_AUTANALOG_CTB_OA_PWR_ULTRA_LOW>;
        topology = <IFX_AUTANALOG_CTB_OA_TOPO_PGA>;
        ninv-inp-pin = <IFX_AUTANALOG_CTB_OA_NINV_PIN_OA0_P0_OA1_P5>;
        functional-mode = "non_inverting";
        out-to-pin;
    };
};

/*
 * Advanced mode: 2 dynamic config slots on opamp@1.
 * Each child node is one slot with named properties.
 */
ctb1: {
    compatible = "infineon,autanalog-ctb";
    opamp1: opamp@1 {
        compatible = "infineon,autanalog-ctb-opamp";
        reg = <1>;
        power-mode = <IFX_AUTANALOG_CTB_OA_PWR_ULTRA_LOW>;
        topology = <IFX_AUTANALOG_CTB_OA_TOPO_PGA>;
        functional-mode = "non_inverting";

        dyn-cfg-0 {
            ninv-inp-pin = <IFX_AUTANALOG_CTB_OA_NINV_PIN_OA0_P0_OA1_P5>;
            res-inp-ref = <IFX_AUTANALOG_CTB_OA_RES_REF_VSSA>;
            out-to-pin;
        };

        dyn-cfg-1 {
            ninv-inp-pin = <IFX_AUTANALOG_CTB_OA_NINV_PIN_OA0_P1_OA1_P4>;
            res-inp-ref = <IFX_AUTANALOG_CTB_OA_RES_REF_VSSA>;
            out-to-pin;
        };
    };
};

Properties

Top level properties

These property descriptions apply to “infineon,autanalog-ctb-opamp” nodes themselves. This page also describes child node properties in the following sections.

Properties not inherited from the base binding file.

Name

Type

Details

power-mode

int

Opamp power mode.
Use IFX_AUTANALOG_CTB_OA_PWR_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_OA_PWR_OFF             (0)  - Off
  IFX_AUTANALOG_CTB_OA_PWR_ULTRA_LOW       (1)  - Ultra low
  IFX_AUTANALOG_CTB_OA_PWR_ULTRA_LOW_RAIL  (2)  - Ultra low, rail-to-rail
  IFX_AUTANALOG_CTB_OA_PWR_LOW_RAIL        (4)  - Low, rail-to-rail
  IFX_AUTANALOG_CTB_OA_PWR_MEDIUM_RAIL     (6)  - Medium, rail-to-rail
  IFX_AUTANALOG_CTB_OA_PWR_HIGH_RAIL       (8)  - High, rail-to-rail
  IFX_AUTANALOG_CTB_OA_PWR_ULTRA_HIGH_RAIL (10) - Ultra high, rail-to-rail

This property is required.

Legal values: 0, 1, 2, 4, 6, 8, 10

topology

int

Opamp topology.
Use IFX_AUTANALOG_CTB_OA_TOPO_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_OA_TOPO_COMPARATOR      (0) - Comparator
  IFX_AUTANALOG_CTB_OA_TOPO_PGA             (1) - PGA
  IFX_AUTANALOG_CTB_OA_TOPO_TIA             (2) - TIA
  IFX_AUTANALOG_CTB_OA_TOPO_OPEN_LOOP_OPAMP (3) - Open-loop opamp
  IFX_AUTANALOG_CTB_OA_TOPO_DIFF_AMPLIFIER  (4) - Differential amplifier
  IFX_AUTANALOG_CTB_OA_TOPO_HYST_COMPARATOR (5) - Comparator with hysteresis
  IFX_AUTANALOG_CTB_OA_TOPO_BUFFER          (6) - Buffer (voltage follower)

This property is required.

Legal values: 0, 1, 2, 3, 4, 5, 6

interrupt-mode

int

Edge detection mode for comparator interrupts.
Only applies to comparator topologies.
Use IFX_AUTANALOG_CTB_COMP_INT_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_COMP_INT_DISABLED     (0) - Disabled
  IFX_AUTANALOG_CTB_COMP_INT_EDGE_RISING  (1) - Rising edge
  IFX_AUTANALOG_CTB_COMP_INT_EDGE_FALLING (2) - Falling edge
  IFX_AUTANALOG_CTB_COMP_INT_EDGE_BOTH    (3) - Both edges

Default value: 0

Legal values: 0, 1, 2, 3

fb-cap

int

Feedback capacitor value, 0-15.
Use IFX_AUTANALOG_CTB_OA_FB_CAP_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

cc-cap

int

Compensation capacitor value, 0-8.
Use IFX_AUTANALOG_CTB_OA_CC_CAP_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
Default 8 = disabled.

Default value: 8

ninv-inp-pin

int

Non-inverting input direct pin connection.
Use IFX_AUTANALOG_CTB_OA_NINV_PIN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_OA_NINV_PIN_DISCONNECT    (0)
  IFX_AUTANALOG_CTB_OA_NINV_PIN_OA0_P0_OA1_P5 (1)
  IFX_AUTANALOG_CTB_OA_NINV_PIN_OA0_P1_OA1_P4 (2)

Default value: 0

Legal values: 0, 1, 2

ninv-inp-ref

int

Non-inverting input reference connection.
Use IFX_AUTANALOG_CTB_OA_NINV_REF_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>, values 0-7.

Default value: 0

inv-inp-pin

int

Inverting input direct pin connection.
Use IFX_AUTANALOG_CTB_OA_INV_PIN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_OA_INV_PIN_DISCONNECT    (0)
  IFX_AUTANALOG_CTB_OA_INV_PIN_OA0_P0_OA1_P5 (1)
  IFX_AUTANALOG_CTB_OA_INV_PIN_OA0_P1_OA1_P4 (2)

Default value: 0

Legal values: 0, 1, 2

res-inp-pin

int

Resistor ladder bottom pin connection.
Use IFX_AUTANALOG_CTB_OA_RES_PIN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_OA_RES_PIN_DISCONNECT    (0)
  IFX_AUTANALOG_CTB_OA_RES_PIN_OA0_P0_OA1_P5 (1)
  IFX_AUTANALOG_CTB_OA_RES_PIN_OA0_P1_OA1_P4 (2)

Default value: 0

Legal values: 0, 1, 2

res-inp-ref

int

Resistor ladder bottom reference connection.
Use IFX_AUTANALOG_CTB_OA_RES_REF_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>, values 0-5.

Default value: 0

shared-mux-in

int

Input multiplexer connection to internal analog bus.
Use IFX_AUTANALOG_CTB_OA_MUX_IN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>, values 0-8.

Default value: 0

shared-mux-out

int

Output multiplexer connection from internal analog bus.
Use IFX_AUTANALOG_CTB_OA_MUX_OUT_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.
  IFX_AUTANALOG_CTB_OA_MUX_OUT_DISCONNECT (0)
  IFX_AUTANALOG_CTB_OA_MUX_OUT_NINV       (1)
  IFX_AUTANALOG_CTB_OA_MUX_OUT_INV        (2)
  IFX_AUTANALOG_CTB_OA_MUX_OUT_RES        (3)

Default value: 0

Legal values: 0, 1, 2, 3

gain

int

Opamp gain for PGA, TIA, or DiffAmp topologies.
Set at build time; runtime changes are not supported.
Use IFX_AUTANALOG_CTB_OA_GAIN_* constants from
<dt-bindings/mfd/infineon-autanalog.h>.
  IFX_AUTANALOG_CTB_OA_GAIN_1_00  (0)  - Gain 1.00 (default)
  IFX_AUTANALOG_CTB_OA_GAIN_1_42  (1)  - Gain 1.42
  IFX_AUTANALOG_CTB_OA_GAIN_2_00  (2)  - Gain 2.00
  IFX_AUTANALOG_CTB_OA_GAIN_2_78  (3)  - Gain 2.78
  IFX_AUTANALOG_CTB_OA_GAIN_4_00  (4)  - Gain 4.00
  IFX_AUTANALOG_CTB_OA_GAIN_5_82  (5)  - Gain 5.82
  IFX_AUTANALOG_CTB_OA_GAIN_8_00  (6)  - Gain 8.00
  IFX_AUTANALOG_CTB_OA_GAIN_10_67 (7)  - Gain 10.67
  IFX_AUTANALOG_CTB_OA_GAIN_16_00 (8)  - Gain 16.00
  IFX_AUTANALOG_CTB_OA_GAIN_21_33 (9)  - Gain 21.33
  IFX_AUTANALOG_CTB_OA_GAIN_32_00 (10) - Gain 32.00
Only meaningful for topologies with a resistor ladder.

Default value: 0

out-to-pin

boolean

Connect opamp output directly to pin.

functional-mode

string

Selects opamp functional mode.

a) differential mode

- Signals applied to both inputs
- Amplifies the difference between two input signals
- Common-mode signals are rejected
- Used in instrumentation and noise rejection
- Vout = (Rf/Rin) * (Vin2 - Vin1), where Rf is the feedback resistor
  and Rin is the input resistor, with gain (Rf/Rin)

         Rin        Rf
Vin1 --/\/\/\--*--/\/\/\-----
               |            |
               |     |\     |
               ------|- \   |
                     |   >--*-- Vout
               ------|+ /
               |     |/
               |
Vin2 --/\/\/\--*--/\/\/\-----
         Rin        Rf      |
                           GND

b) inverting mode

- Input signal applied to inverting (-) terminal
- Non-inverting (+) terminal connected to ground
- Feedback resistor connects output to inverting input
- Output is 180° out of phase with input
- Vout = (-Rf/Rin) * Vin, where Rf is the feedback resistor
  and Rin is the input resistor, s.t. gain is (-Rf/Rin)

        Rin        Rf
Vin --/\/\/\--*--/\/\/\-----
              |            |
              |     |\     |
              ------|- \   |
                    |   >--*-- Vout
              ------|+ /
              |     |/
            GND

c) non_inverting mode

- Input signal applied to non-inverting (+) terminal
- Inverting (-) terminal connected to feedback network
- Output is in phase with input
- Vout = (1 + (Rf/Rin)) * Vin, where Rf is the feedback resistor
  and Rin is the input resistor, s.t. gain is (1 + (Rf/Rin))

      Rin        Rf
 |--/\/\/\--*--/\/\/\-----
 |          |            |
GND         |     |\     |
            ------|- \   |
                  |   >--*-- Vout
        Vin ------|+ /
                  |/

d) follower mode (voltage follower or buffer)

- Special case of non-inverting amplifier
- Vout = 1 * Vin, s.t. gain is 1
- Direct feedback from output to inverting input
- Very high input impedance, very low output impedance
- Used for impedance matching

    --------------
    |            |
    |     |\     |
    ------|- \   |
          |   >--*-- Vout
Vin ------|+ /
          |/

e) standalone mode

- The opamp mode is defined by external circuitry

          |\
Vin- -----|- \
          |   >---- Vout
Vin+ -----|+ /
          |/

References:
  - https://www.electronics-tutorials.ws/category/opamp

This property is required.

Legal values: differential, inverting, non_inverting, follower, standalone

programmable-gain

string-array

If the OPAMP supports programmable gain, then the gain of
the opamp can be changed dynamically at runtime. The gain
value needs to be one of the enumerations above.
Gain selection:
- OPAMP_GAIN_1_7  : x 1/7
- OPAMP_GAIN_1_3  : x 1/3
- OPAMP_GAIN_1    : x 1
- OPAMP_GAIN_5_3  : x 5/3
- OPAMP_GAIN_2    : x 2
- OPAMP_GAIN_11_5 : x 11/5
- OPAMP_GAIN_3    : x 3
- OPAMP_GAIN_4    : x 4
- OPAMP_GAIN_13_3 : x 13/3
- OPAMP_GAIN_7    : x 7
- OPAMP_GAIN_8    : x 8
- OPAMP_GAIN_15   : x 15
- OPAMP_GAIN_16   : x 16
- OPAMP_GAIN_31   : x 31
- OPAMP_GAIN_32   : x 32
- OPAMP_GAIN_33   : x 33
- OPAMP_GAIN_63   : x 63
- OPAMP_GAIN_64   : x 64

Legal values: OPAMP_GAIN_1_7, OPAMP_GAIN_1_3, OPAMP_GAIN_1, OPAMP_GAIN_5_3, OPAMP_GAIN_2, OPAMP_GAIN_11_5, OPAMP_GAIN_3, OPAMP_GAIN_4, OPAMP_GAIN_13_3, OPAMP_GAIN_7, OPAMP_GAIN_8, OPAMP_GAIN_15, OPAMP_GAIN_16, OPAMP_GAIN_31, OPAMP_GAIN_32, OPAMP_GAIN_33, OPAMP_GAIN_63, OPAMP_GAIN_64

pinctrl-0

phandles

Pin configuration/s for the first state. Content is specific to the
selected pin controller driver implementation.

pinctrl-1

phandles

Pin configuration/s for the second state. See pinctrl-0.

pinctrl-2

phandles

Pin configuration/s for the third state. See pinctrl-0.

pinctrl-3

phandles

Pin configuration/s for the fourth state. See pinctrl-0.

pinctrl-4

phandles

Pin configuration/s for the fifth state. See pinctrl-0.

pinctrl-names

string-array

Names for the provided states. The number of names needs to match the
number of states.

Child node properties

Name

Type

Details

ninv-inp-pin

int

Non-inverting input direct pin connection.
Use IFX_AUTANALOG_CTB_OA_NINV_PIN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

ninv-inp-ref

int

Non-inverting input reference connection.
Use IFX_AUTANALOG_CTB_OA_NINV_REF_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

inv-inp-pin

int

Inverting input direct pin connection.
Use IFX_AUTANALOG_CTB_OA_INV_PIN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

res-inp-pin

int

Resistor ladder bottom pin connection.
Use IFX_AUTANALOG_CTB_OA_RES_PIN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

res-inp-ref

int

Resistor ladder bottom reference connection.
Use IFX_AUTANALOG_CTB_OA_RES_REF_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

shared-mux-in

int

Input multiplexer connection to internal analog bus.
Use IFX_AUTANALOG_CTB_OA_MUX_IN_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

shared-mux-out

int

Output multiplexer connection from internal analog bus.
Use IFX_AUTANALOG_CTB_OA_MUX_OUT_* constants from
<dt-bindings/opamp/infineon-autanalog-ctb.h>.

Default value: 0

out-to-pin

boolean

Connect opamp output directly to pin.