addrmap STM32_ADC_Common {

/* Some conversion errors detected, this might mean that the peripheral's registers structure in this file is incomplete.
 * Please refer to logs and comments in the file for more information.
 * 
 * Field "SCANDIR" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "DMAEN" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "No_name_1_" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 */

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptAndStatus";
        regwidth=0x20;
        `ifdef VARIANT0
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOCAL[11:11];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } LDORDY[12:12];
        `elsif VARIANT2
            field {
                sw = rw;
                onwrite = woclr;
            } AWD[7:7];
            field {
                sw = rw;
                onwrite = woclr;
            } OVR[4:4];
            field {
                sw = rw;
                onwrite = woclr;
            } EOSEQ[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = woclr;
            } EOC[2:2];
            field {
                sw = rw;
                onwrite = woclr;
            } EOSMP[1:1];
            field {
                sw = rw;
                onwrite = woclr;
            } ADRDY[0:0];
        `endif

    } InterruptAndStatus @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
        `ifdef VARIANT0
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOCALIE[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LDORDYIE[12:12];
        `elsif VARIANT2
            field {
                sw = rw;
            } AWDIE[7:7];
            field {
                sw = rw;
            } OVRIE[4:4];
            field {
                sw = rw;
            } EOSEQIE[3:3];
            field {
                sw = rw;
            } EOCIE[2:2];
            field {
                sw = rw;
            } EOSMPIE[1:1];
            field {
                sw = rw;
            } ADRDYIE[0:0];
        `endif

    } InterruptEnable @ 0x4;
    reg {
        name="Control";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } ADEN[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } ADDIS[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } ADSTART[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } ADSTP[4:4];
            field {
                sw = rw;
            } ADVREGEN[28:28];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADCAL[31:31];
    } Control @ 0x8;
    reg {
        name="Configuration1";
        regwidth=0x20;
        `ifdef VARIANT0
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AUTOFF[15:15];
        `elsif VARIANT1
            field {
                sw = rw;
            } AWDCH[30:26];
            field {
                sw = rw;
            } AWDEN[23:23];
            field {
                sw = rw;
            } AWDSGL[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DISCEN[16:16];
            field {
                sw = rw;
            } WAIT[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CONT[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRMOD[12:12];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } EXTEN[11:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EXTSEL[7:6];
            field {
                sw = rw;
            } ALIGN[5:5];
            field {
                sw = rw;
            } RES[1:0];
            /* Conversion error: Field "SCANDIR" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                sw = rw;
            } SCANDIR[0:0];
            */
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMACFG[1:1];
            /* Conversion error: Field "DMAEN" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                sw = rw;
            } DMAEN[0:0];
            */
        `elsif VARIANT20
            field {
                sw = rw;
            } CHSELRMOD[21:21];
        `endif

    } Configuration1 @ 0xc;
    reg {
        name="Configuration2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CKMODE[31:30];
    } Configuration2 @ 0x10;
    reg {
        name="SamplingTime";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SMP[2:0];
    } SamplingTime @ 0x14;
    reg {
        name="Watchdog1Threshold";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } Watchdog1Threshold @ 0x20;
    reg {
        name="Watchdog2Threshold";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } Watchdog2Threshold @ 0x24;
    reg {
        name="ChannelSelection";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } ChannelSelection @ 0x28;
    reg {
        name="Watchdog3Threshold";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } Watchdog3Threshold @ 0x2c;
    reg {
        name="RegularSequence1";
        regwidth=0x20;
        `ifdef VARIANT0
            field {
                sw = rw;
            } No_name_2[3:0];
        `elsif VARIANT2
            /* Conversion error: Field "No_name_1_" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                sw = rw;
            } No_name_1_[3:0];
            */
        `endif

    } RegularSequence1 @ 0x30;
    reg {
        name="DataRegister";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Read.";
                sw = r;
            } DATA[15:0];
    } DataRegister @ 0x40;
    reg {
        name="Power";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } Power @ 0x44;
    reg {
        name="Watchdog2Configuration";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } Watchdog2Configuration @ 0xa0;
    reg {
        name="Watchdog3Configuration";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } Watchdog3Configuration @ 0xa4;
    reg {
        name="CalibrationFactor";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } CalibrationFactor @ 0xc4;
    reg {
        name="CommonConfiguration";
        regwidth=0x20;
        `ifdef VARIANT0
            field {
                sw = rw;
            } PRESC[21:18];
        `elsif VARIANT1
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TSEN[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VREFEN[22:22];
        `elsif VARIANT6
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VBATEN[24:24];
        `endif

    } CommonConfiguration @ 0x308;
} Registers_addrmap;


};