<?xml version="1.0" encoding="UTF-8" standalone="no"?><IP xmlns="http://mcd.rou.st.com/modules.php?name=mcu" xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" DBVersion="V3.0" IPType="peripheral" Name="I2C" Version="i2c2_v1_1F7_Cube" ns0:schemaLocation="http://mcd.rou.st.com/modules.php?name=mcu ../../db/IP_Modes_V3_0.xsd">
    <About>I2C: Inter Integrated Circuit interface</About>
 
    <!--Timing configuration-->
    <!--Specifies the speed mode -->
    <RefParameter Comment="I2C Speed Mode " DefaultValue="I2C_Standard" Group="Timing configuration" Name="I2C_Speed_Mode" Type="list">
        <Condition Diagnostic="" Expression="$IpInstance_SMBUS_Enable"/>
        <PossibleValue Comment="Standard Mode" Value="I2C_Standard"/>
      
    </RefParameter> 
    <RefParameter Comment="I2C Speed Mode " DefaultValue="I2C_Standard" Group="Timing configuration" Name="I2C_Speed_Mode" Type="list">
        <Condition Diagnostic="" Expression="(STM32F030C8Tx|STM32F030R8Tx|STM32F051R8Tx|STM32F051C8Tx|STM32F051R8Ux|STM32F051C8Ux) &amp; ($Index=2)"/>
        <PossibleValue Comment="Standard Mode" Value="I2C_Standard"/>
        <PossibleValue Comment="Fast Mode" Value="I2C_Fast"/>
    </RefParameter>
    
    <RefParameter Comment="I2C Speed Mode " DefaultValue="I2C_Standard" Group="Timing configuration" Name="I2C_Speed_Mode" Type="list">
        <PossibleValue Comment="Standard Mode" Value="I2C_Standard"/>
        <PossibleValue Comment="Fast Mode" Value="I2C_Fast"/>
        <PossibleValue Comment="Fast Mode Plus" Semaphore="$IpInstance_FastMP" Value="I2C_Fast_Plus"/> 
    </RefParameter>
    <!--Specifies if The analog noise filter is present on the SDA and SCL inputs-->
    <RefParameter Comment="Analog Filter" DefaultValue="SMBUS_ANALOGFILTER_ENABLE" Group="Timing configuration" Name="SMBusAnalogFilter" Type="list">
        <PossibleValue Comment="Enabled" Value="SMBUS_ANALOGFILTER_ENABLE"/>
        <PossibleValue Comment="Disabled" Value="SMBUS_ANALOGFILTER_DISABLE"/>
    </RefParameter>
    <!--Specifies if The analog noise filter is present on the SDA and SCL inputs-->
    <RefParameter Comment="Analog Filter" DefaultValue="I2C_ANALOGFILTER_ENABLE" Group="Timing configuration" Name="Analog_Filter" Type="list">
        <PossibleValue Comment="Disabled" Value="I2C_ANALOGFILTER_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="I2C_ANALOGFILTER_ENABLE"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C1" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=1&amp;(STM32L0|STM32L4|STM32H7|STM32F7)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C1" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=1 &amp;(DIE451|DIE450)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C2" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=2&amp;(STM32L0|STM32L4|STM32H7|STM32F7)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C2" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=2&amp;(DIE451|DIE450)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C3" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=3&amp;(STM32L0|STM32L4|STM32H7|STM32F7)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C3" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=3&amp;(DIE451|DIE450)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C4" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=4&amp;(DIE450|STM32H7|STM32F7)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="I2C_FASTMODEPLUS_I2C5" Name="FASTMODEPLUS" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="$IpInstance_FastMP&amp;$Index=5&amp;(DIE450|STM32H7|STM32F7)"/>
    </RefParameter>
    <RefParameter Comment="FASTMODEPLUS" DefaultValue="null" Group="Timing configuration" Name="FASTMODEPLUS" Type="list" Visible="false"/>		
    <!--Specifies the speed frequency-->				
																			 
    <RefParameter Comment="I2C Speed Frequency (KHz) " DefaultValue="100" Group="Timing configuration" Max="100" Min="1" Name="Speed" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="I2C_Speed_Mode=I2C_Standard"/>													 
    </RefParameter>		
																			 
    <RefParameter Comment="I2C Speed Frequency (KHz) " DefaultValue="400" Group="Timing configuration" Max="400" Min="1" Name="Speed" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="I2C_Speed_Mode=I2C_Fast"/>													 
    </RefParameter>		
				
    <RefParameter Comment="I2C Speed Frequency (KHz) " DefaultValue="1000" Group="Timing configuration" Max="1000" Min="1" Name="Speed" Type="integer" Visible="true" NoCheckOpt="false" >													 
																	 
    </RefParameter>
    		
    <RefParameter Comment="Custom Timing" DefaultValue="Disabled" Group="Timing configuration" Name="CustomTiming" Type="list">
        <Condition Diagnostic="" Expression="STM32H7"/>
        <PossibleValue Comment="Disabled" Value="Disabled"/>        
        <PossibleValue Comment="Enabled" Value="Enabled" Semaphore="S_$IpInstance_CustomTiming"/>
    </RefParameter>			
    <RefParameter Comment="Custom Timing" DefaultValue="Disabled" Group="Timing configuration" Name="CustomTiming" Type="list" Visible="false">        
    </RefParameter>
				
				
			

    <!--Specifies the Rise Time-->
     <RefParameter Comment="Rise Time (ns)" DefaultValue="0" Group="Timing configuration" Name="I2C_Rise_Time" Type="integer" Visible="false">													 
	<Condition Diagnostic="" Expression="S_$IpInstance_CustomTiming"/>											 
    </RefParameter>				
    <RefParameter Comment="Rise Time (ns)" DefaultValue="0" Group="Timing configuration" Max="1000" Min="0" Name="I2C_Rise_Time" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="I2C_Speed_Mode=I2C_Standard"/>													 
    </RefParameter>	
				
    <RefParameter Comment="Rise Time (ns)" DefaultValue="0" Group="Timing configuration" Max="300" Min="0" Name="I2C_Rise_Time" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="I2C_Speed_Mode=I2C_Fast"/>													 
    </RefParameter>	
				
    <RefParameter Comment="Rise Time (ns)" DefaultValue="0" Group="Timing configuration" Max="120" Min="0" Name="I2C_Rise_Time" Type="integer" Visible="true" NoCheckOpt="false" >													 
															 
    </RefParameter>

    <!--Specifies the Fall Time-->	
     <RefParameter Comment="Fall Time (ns)" DefaultValue="0" Group="Timing configuration" Name="I2C_Fall_Time" Type="integer" Visible="false">													 
	<Condition Diagnostic="" Expression="S_$IpInstance_CustomTiming"/>											 
    </RefParameter>					
    <RefParameter Comment="Fall Time (ns)" DefaultValue="0" Group="Timing configuration" Max="120" Min="0" Name="I2C_Fall_Time" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="I2C_Speed_Mode=I2C_Fast_Plus"/>													 
    </RefParameter>	
    <RefParameter Comment="Fall Time (ns)" DefaultValue="0" Group="Timing configuration" Max="300" Min="0" Name="I2C_Fall_Time" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="I2C_Speed_Mode=I2C_Fast"/>													 
    </RefParameter>	
    <RefParameter Comment="Fall Time (ns)" DefaultValue="0" Group="Timing configuration" Max="300" Min="0" Name="I2C_Fall_Time" Type="integer" Visible="true" NoCheckOpt="false" >													 
																	 
    </RefParameter>	
    <RefParameter Comment="Coefficient of Digital Filter" DefaultValue="0" Group="Timing configuration" Name="I2C_Coeff_DF" Type="integer" Visible="false">													 
	<Condition Diagnostic="" Expression="S_$IpInstance_CustomTiming"/>											 
    </RefParameter>
    <RefParameter Comment="Coefficient of Digital Filter" DefaultValue="0" Group="Timing configuration" Max="15" Min="0" Name="I2C_Coeff_DF" Type="integer" Visible="true" NoCheckOpt="false" >													 
    </RefParameter>	
				
    <!--Specifies the I2C_TIMINGR_register value  -->
    <RefParameter Comment="Timing" DefaultValue="0x10707DBC" Group="Timing configuration" Name="Timing" Type="string">
        <Condition Diagnostic="" Expression="STM32H7 &amp; !S_$IpInstance_CustomTiming"/>
    </RefParameter>
    <RefParameter Comment="Timing" DefaultValue="0x10707DBC" Group="Timing configuration" Name="Timing" Max="0xDFFFFFFF" Min="0x00000000" Type="hex">
        <Condition Diagnostic="" Expression="STM32H7 &amp;S_$IpInstance_CustomTiming"/>
    </RefParameter>
    <RefParameter Comment="Timing" DefaultValue="0x00000708" Group="Timing configuration" Name="Timing" Type="string">
        <Condition Diagnostic="" Expression="STM32L0"/>
    </RefParameter>
    <RefParameter Comment="Timing" DefaultValue="0x2000090E" Group="Timing configuration" Name="Timing" Type="string">
        <Condition Diagnostic="" Expression="STM32F0|STM32F3"/>
    </RefParameter>
    <RefParameter Comment="Timing" DefaultValue="0x00303D5B" Group="Timing configuration" Name="Timing" Type="string">
        <Condition Diagnostic="" Expression="STM32F7"/>
    </RefParameter>

    <RefParameter Comment="Timing" DefaultValue="0x00000000" Group="Timing configuration" Name="Timing" Type="string"/>

    <!--I2C Mode-->
    <!--Slave features-->
    <!--RefParameter Comment="Primary Address Length selection : 7 bit" DefaultValue="I2C_ADDRESSINGMODE_7BIT" Name="AddressingMode" Type="integer" Group="Slave Features"-->
    <RefParameter Comment="Primary Address Length selection" DefaultValue="I2C_ADDRESSINGMODE_7BIT" Group="Slave Features" Name="AddressingMode" Type="list">
        <Condition Diagnostic="When Dual address is enabled we can have a primary address only on 7 bits length" Expression="DualAddressMode=I2C_DUALADDRESS_ENABLE"/>  
        <PossibleValue Comment="7-bit" Value="I2C_ADDRESSINGMODE_7BIT"/>
    </RefParameter>
    
    <RefParameter Comment="Primary Address Length selection" DefaultValue="I2C_ADDRESSINGMODE_7BIT" Group="Slave Features" Name="AddressingMode" Type="list">
        <PossibleValue Comment="7-bit" Value="I2C_ADDRESSINGMODE_7BIT"/>
        <PossibleValue Comment="10-bit" Value="I2C_ADDRESSINGMODE_10BIT"/>       
    </RefParameter>


    <!-- OwnAddress and OwnAddress1 parameters are both declared to handle the shit in case of 7-bits addressing and the no-Shift in case of 10-bits addressing-->
    <RefParameter Comment="Primary slave address" DefaultValue="0" Group="Slave Features" Max="127" Min="0" Name="OwnAddress" Type="integer">
        <Condition Diagnostic="Address value from 0 to 127" Expression="AddressingMode=I2C_ADDRESSINGMODE_7BIT"/>
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       
    </RefParameter> 
    
    <RefParameter Comment="Primary slave address" DefaultValue="0" Group="Slave Features" Max="127" Min="0" Name="OwnAddress" Type="integer">
        <Condition Diagnostic="Address value from 0 to 127" Expression="DualAddressMode=I2C_DUALADDRESS_ENABLE"/>    
        <Description>The generated value of the address is shifted left by 1 bit.</Description>    
    </RefParameter>  
    
    <RefParameter Comment="Primary slave address" DefaultValue="0" Group="Slave Features" Max="1023" Min="0" Name="OwnAddress" Type="integer">
    	
    </RefParameter>
    
    <RefParameter Comment="Primary slave address" DefaultValue="=(OwnAddress*2)" Group="Slave Features" Max="1023" Min="0" Name="OwnAddress1" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 0 to 127" Expression="AddressingMode=I2C_ADDRESSINGMODE_7BIT"/>
        <Description>The generated value of the address is shifted left by 1 bit.</Description>        
    </RefParameter>
    <RefParameter Comment="Primary slave address" DefaultValue="=OwnAddress" Group="Slave Features" Max="1023" Min="0" Name="OwnAddress1" Type="integer" Visible="false">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>        
    </RefParameter>


    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="Slave Features" Max="0" Min="0" Name="OwnAddress2" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 0 to 127" Expression="DualAddressMode=I2C_DUALADDRESS_DISABLE"/>        
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       
    </RefParameter>
	   
    
    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="Slave Features" Max="127" Min="0" Name="OwnAddress2" Type="integer" Visible="true">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

    </RefParameter>


    <!--specifier seconde address pour slave avec 7 bit adressage et dual mode activer -->
    <RefParameter Comment="Secondary slave address" DefaultValue="=(OwnAddress2*2)" Group="Slave Features" Max="127" Min="0" Name="OwnAddress22" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 0 to 127" Expression="DualAddressMode=I2C_DUALADDRESS_DISABLE"/>    
        <PossibleValue Comment=" 0" Value="0"/>			
    </RefParameter>
    
    <RefParameter Comment="Secondary slave address" DefaultValue="=(OwnAddress2*2)" Group="Slave Features" Max="127" Min="0" Name="OwnAddress22" Type="integer" Visible="false">
    
    </RefParameter>
    


    <!--specifier if dual mode active -->
    <RefParameter Comment="Dual Address Acknowledged" DefaultValue="I2C_DUALADDRESS_DISABLE" Group="Slave Features" Name="DualAddressMode" Type="list">
        <Condition Diagnostic="When primary address is 7 bits length we can have a dual address" Expression="AddressingMode=I2C_ADDRESSINGMODE_7BIT"/>  
        <PossibleValue Comment="Disabled" Value="I2C_DUALADDRESS_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="I2C_DUALADDRESS_ENABLE"/>
    </RefParameter>
    
    <RefParameter Comment="Dual Address Acknowledged" DefaultValue="I2C_DUALADDRESS_DISABLE" Group="Slave Features" Name="DualAddressMode" Type="list">         
        <PossibleValue Comment="Disabled" Value="I2C_DUALADDRESS_DISABLE"/>       
    </RefParameter>


    <!-- Specifies the acknoledge mask address second slave own address if dual addressing mode is selected-->
    <RefParameter Comment="Secondary Address Mask" DefaultValue="I2C_OA2_NOMASK" Group="Slave Features" Name="OwnAddress2Masks" Type="list" Visible="true">
        <Condition Diagnostic="" Expression=" (DualAddressMode=I2C_DUALADDRESS_ENABLE) "/> 
        <PossibleValue Comment="No mask" Value="I2C_OA2_NOMASK"/>
        <PossibleValue Comment="OA2[1] masked" Value="I2C_OA2_MASK01"/>
        <PossibleValue Comment="OA2[2:1] masked" Value="I2C_OA2_MASK02"/>
        <PossibleValue Comment="OA2[3:1] masked" Value="I2C_OA2_MASK03"/>
        <PossibleValue Comment="OA2[4:1] masked" Value="I2C_OA2_MASK04"/>
        <PossibleValue Comment="OA2[5:1] masked" Value="I2C_OA2_MASK05"/>
        <PossibleValue Comment="OA2[6:1] masked" Value="I2C_OA2_MASK06"/>
        <PossibleValue Comment="OA2[7:1] masked" Value="I2C_OA2_MASK07"/>
    </RefParameter>
	
    <RefParameter Comment="Secondary Address Mask" DefaultValue="I2C_OA2_NOMASK" Group="Slave Features" Name="OwnAddress2Masks" Type="list" Visible="false">
          
        <PossibleValue Comment="No mask" Value="I2C_OA2_NOMASK"/>
    </RefParameter>	


    <!-- Specifies if General Call address detection-->
    <RefParameter Comment="General Call Address Detection" DefaultValue="I2C_GENERALCALL_DISABLE" Group="Slave Features" Name="GeneralCallMode" Type="list">
        <PossibleValue Comment="Disabled" Value="I2C_GENERALCALL_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="I2C_GENERALCALL_ENABLE"/>
    </RefParameter>
	
    <!-- Master Features-->  
    <!-- Specifies if Clock No Stretch Mode enable-->   

    <RefParameter Comment="Clock No Stretch Mode" DefaultValue="I2C_NOSTRETCH_DISABLE" Group="Slave Features" Name="NoStretchMode" Type="list">
        <PossibleValue Comment="Disabled" Value="I2C_NOSTRETCH_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="I2C_NOSTRETCH_ENABLE"/>
    </RefParameter> 

    <!--SMBus Mode-->
    <!--Timeout configuration-->
    <!--Specifies if Extended clock timeout enable  -->					   
    <RefParameter Comment="Extended Clock Timeout" DefaultValue="SMBUS_TEXTEN_DISABLE" Group="Timeout configuration" Name="TEXTEN" Type="list">
        <PossibleValue Comment="Enabled" Value="SMBUS_TEXTEN_ENABLE"/>
        <PossibleValue Comment="Disabled" Value="SMBUS_TEXTEN_DISABLE"/>
    </RefParameter>
				
    <!--Specifies if Idle clock timeout detection enable  -->	
    <RefParameter Comment="Idle Clock Timeout Detection" DefaultValue="SMBUS_TIDLE_DISABLE" Group="Timeout configuration" Name="TIDLE" Type="list">
        <PossibleValue Comment="Enabled" Value="SMBUS_TIDLE_ENABLE"/>
        <PossibleValue Comment="Disabled" Semaphore="$IpInstance_TIDLE_DISABLED" Value="SMBUS_TIDLE_DISABLE"/>
    </RefParameter>
				
    <!--Specifies Low Extend Time when Extended time enable  -->
    <RefParameter Comment="LOW:MEXT Time (ns)" DefaultValue="0" Group="Timeout configuration" Max="10000000" Min="0" Name="TIMEOUTB_Master" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="(TEXTEN=SMBUS_TEXTEN_ENABLE)&amp;(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_HOST) "/>  
    </RefParameter>
    <RefParameter Comment="LOW:MEXT Time (ns)" DefaultValue="0" Group="Timeout configuration" Max="10000000" Min="0" Name="TIMEOUTB_Master" Type="integer" Visible="false" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="(TEXTEN=SMBUS_TEXTEN_DISABLE)|!(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_HOST) "/>  
    </RefParameter>
    <RefParameter Comment="LOW:SEXT Time (ns)" DefaultValue="0" Group="Timeout configuration" Max="25000000" Min="0" Name="TIMEOUTB_Slave" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="(TEXTEN=SMBUS_TEXTEN_ENABLE)&amp;((SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE)|(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)  )"/> 
    </RefParameter>
    <RefParameter Comment="LOW:SEXT Time (ns)" DefaultValue="0" Group="Timeout configuration" Max="25000000" Min="0" Name="TIMEOUTB_Slave" Type="integer" Visible="false" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="(TEXTEN=SMBUS_TEXTEN_DISABLE)|!((SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE)&amp;(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)  )"/> 
    </RefParameter>				
 
    <!--Specifies IDLE Time when Idle clock timeout detection enable -->				
    <RefParameter Comment="Idle Time (ns)" DefaultValue="4000" Group="Timeout configuration" Max="5000000" Min="4000" Name="TIMEOUTA_idle" Type="integer" Visible="false" NoCheckOpt="false" >
        <Condition Diagnostic="" Expression="$IpInstance_TIDLE_DISABLED"/>
    </RefParameter>
    <RefParameter Comment="Idle Time (ns)" DefaultValue="4000" Group="Timeout configuration" Max="5000000" Min="4000" Name="TIMEOUTA_idle" Type="integer" NoCheckOpt="false" />
   	
	
    <!--Specifies Timeout Time when Idle clock timeout detection Disable -->				   
    <RefParameter Comment="Timeout Time (ns)" DefaultValue="25000000" Group="Timeout configuration" Max="35000000" Min="25000000" Name="TIMEOUT_time" Type="integer" Visible="true" NoCheckOpt="false" >													 
        <Condition Diagnostic="" Expression="(TIDLE=SMBUS_TIDLE_DISABLE) "/>  
    </RefParameter>	
    <RefParameter Comment="Timeout Time (ns)" DefaultValue="25000000" Group="Timeout configuration" Max="35000000" Min="25000000" Name="TIMEOUT_time" Type="integer" Visible="false" NoCheckOpt="false" >													 
             
    </RefParameter>
			
    <!--Specifies the Timout Register value  -->
    <RefParameter Comment="Timeout" DefaultValue="0x000080C3" Group="Timeout configuration" Name="Timeout" Type="string">
        <Condition Diagnostic="" Expression="STM32F7"/>
    </RefParameter>
    <RefParameter Comment="Timeout" DefaultValue="0x00008019" Group="Timeout configuration" Name="Timeout" Type="string">
        <Condition Diagnostic="" Expression="STM32L0"/>
    </RefParameter>
    <RefParameter Comment="Timeout" DefaultValue="0x00008061" Group="Timeout configuration" Name="Timeout" Type="string">
        <Condition Diagnostic="" Expression="STM32F0|STM32F1|STM32F3"/>
    </RefParameter>
     <RefParameter Comment="Timeout" DefaultValue="0x0000830D" Group="Timeout configuration" Name="Timeout" Type="string">
        <Condition Diagnostic="" Expression="STM32H7"/>
    </RefParameter>
    <RefParameter Comment="Timeout" DefaultValue="0x00008019" Group="Timeout configuration" Name="Timeout" Type="string"/>
   

    <!--SMBus Features -->
    <!-- Specifies if Packet Error Check mode is selected-->	
    <RefParameter Comment="Packet Error Check Mode" DefaultValue="SMBUS_PEC_DISABLE" Group="SMBus Features" Name="SMBusPacketErrorCheckMode" Type="list">
        <Condition Diagnostic="" Expression="STM32L0|STM32L4"/>
        <PossibleValue Comment="PEC Disabled" Value="SMBUS_PEC_DISABLE"/>
        <PossibleValue Comment="PEC Enabled" Value="SMBUS_PEC_ENABLE"/>
    </RefParameter>						
    <RefParameter Comment="Packet Error Check Mode" DefaultValue="SMBUS_PEC_DISABLE" Group="SMBus Features" Name="SMBusPacketErrorCheckMode" Type="list">
        <PossibleValue Comment="PEC Disabled" Value="SMBUS_PEC_DISABLE"/>
        <PossibleValue Comment="PEC Enabled" Value="SMBUS_PEC_ENABLE"/>
    </RefParameter>
          
    <!-- Specifies which mode of Periphal is selected-->
    <RefParameter Comment="Peripheral Mode" DefaultValue="SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE" Group="SMBus Features" Name="SMBusPeripheralMode" Type="list">
        <PossibleValue Comment="Peripheral Mode Smbus Master " Value="SMBUS_PERIPHERAL_MODE_SMBUS_HOST"/>
        <PossibleValue Comment="Peripheral Mode Smbus Slave" Value="SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE"/>
        <PossibleValue Comment="Peripheral Mode Smbus Slave ARP" Value="SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP"/>
        <Description>In case of switching your device form Slave ARP to Master (Peripheral mode SMBus Master) on your application, you need to set addressing mode parameters. And if you are using SMBUS device protocol and Host mode(Peripheral mode SMBus Master), please make sure that there may be at most one host in your system.</Description>
    </RefParameter>
    <!--SMBus Slave Features -->
    <!--RefParameter Comment="Primary Address Length selection : 7 bit" DefaultValue="SMBUS_ADDRESSINGMODE_7BIT" Name="SMBusAddressingMode" Type="integer" Group="SMBus Slave Features"-->
    <RefParameter Comment="Primary Address Length selection" DefaultValue="SMBUS_ADDRESSINGMODE_7BIT" Group="SMBus Slave Features" Name="SMBusAddressingMode" Type="list">
        <Condition Diagnostic="When Dual address is enabled we can have a primary address only on 7 bits length" Expression="(SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLE) &amp; !(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)"/>  
        <PossibleValue Comment="7-bit" Value="SMBUS_ADDRESSINGMODE_7BIT"/>
    </RefParameter>
    <RefParameter Comment="Primary Address Length selection" DefaultValue="SMBUS_ADDRESSINGMODE_7BIT" Group="SMBus Slave Features" Name="SMBusAddressingMode" Type="list" Visible="false">
        <Condition Diagnostic="" Expression="SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP"/>    
        <PossibleValue Comment="7-bit" Value="SMBUS_ADDRESSINGMODE_7BIT"/>		
    </RefParameter>
    
    <RefParameter Comment="Primary Address Length selection" DefaultValue="SMBUS_ADDRESSINGMODE_7BIT" Group="SMBus Slave Features" Name="SMBusAddressingMode" Type="list">
        <Condition Diagnostic="When Dual address is enabled we can have a primary address only on 7 bits length" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_DISABLE"/>  
        <PossibleValue Comment="7-bit" Value="SMBUS_ADDRESSINGMODE_7BIT"/>
        <PossibleValue Comment="10-bit" Value="SMBUS_ADDRESSINGMODE_10BIT"/>       
    </RefParameter>
    <RefParameter Comment="Primary Address Length selection" DefaultValue="null" Group="SMBus Slave Features" Name="SMBusAddressingMode" Type="list" Visible="false"/>


    <RefParameter Comment="Primary slave address" DefaultValue="1" Group="SMBus Slave Features" Max="127" Min="1" Name="SMBusOwnAddress" Type="integer" Visible="false">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

        <Condition Diagnostic="" Expression="SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP"/>   
        <PossibleValue Comment="1" Value="1"/>	
    </RefParameter>
    <RefParameter Comment="Primary slave address" DefaultValue="1" Group="SMBus Slave Features" Max="127" Min="1" Name="SMBusOwnAddress" Type="integer">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

        <Condition Diagnostic="Address value from 1 to 127" Expression="SMBusAddressingMode=SMBUS_ADDRESSINGMODE_7BIT"/>        
    </RefParameter> 
    
    <RefParameter Comment="Primary slave address" DefaultValue="1" Group="SMBus Slave Features" Max="127" Min="1" Name="SMBusOwnAddress" Type="integer">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

        <Condition Diagnostic="Address value from 1 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLE"/>        
    </RefParameter>  
    
    
    <RefParameter Comment="Primary slave address" DefaultValue="1" Group="SMBus Slave Features" Max="1023" Min="1" Name="SMBusOwnAddress" Type="integer">     
   
    </RefParameter>

    <RefParameter Comment="Primary slave address" DefaultValue="0" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress1" Type="integer" Visible="false">
        <Condition Diagnostic="" Expression="SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP"/>   
        <PossibleValue Comment="0" Value="0"/>	
    </RefParameter>
    <RefParameter Comment="Primary slave address" DefaultValue="=SMBusOwnAddress*2" Group="SMBus Slave Features" Max="127" Min="1" Name="SMBusOwnAddress1" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 1 to 127" Expression="SMBusAddressingMode=SMBUS_ADDRESSINGMODE_7BIT"/>        
    </RefParameter> 
    
    <RefParameter Comment="Primary slave address" DefaultValue="=SMBusOwnAddress*2" Group="SMBus Slave Features" Max="127" Min="1" Name="SMBusOwnAddress1" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 1 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLE"/>        
    </RefParameter>  
    
    
    <RefParameter Comment="Primary slave address" DefaultValue="=SMBusOwnAddress" Group="SMBus Slave Features" Max="1023" Min="1" Name="SMBusOwnAddress1" Type="integer" Visible="false">        
    </RefParameter>
    
    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress2" Type="integer" Visible="false">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

        <Condition Diagnostic="Address value from 0 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_DISABLE"/>  
        <PossibleValue Comment=" 0" Value="0"/>			
    </RefParameter>
    
    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress2" Type="integer" Visible="true">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

        <Condition Diagnostic="Address value from 0 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLE"/>  
    </RefParameter>
    
    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress2" Type="integer" Visible="false">
        <Description>The generated value of the address is shifted left by 1 bit.</Description>       

        <!-- <Condition Diagnostic="Address value from 0 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLED"/> -->  
    </RefParameter>


    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress22" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 0 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_DISABLE"/>  
        <PossibleValue Comment=" 0" Value="0"/>			
    </RefParameter>
    
    <RefParameter Comment="Secondary slave address" DefaultValue="=SMBusOwnAddress2*2" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress22" Type="integer" Visible="false">
        <Condition Diagnostic="Address value from 0 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLE"/>  
    </RefParameter>
    
    <RefParameter Comment="Secondary slave address" DefaultValue="0" Group="SMBus Slave Features" Max="127" Min="0" Name="SMBusOwnAddress22" Type="integer" Visible="false">
        <!-- <Condition Diagnostic="Address value from 0 to 127" Expression="SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLED"/> -->  
    </RefParameter>
        
    <RefParameter Comment="Dual Address Acknowledged" DefaultValue="SMBUS_DUALADDRESS_DISABLE" Group="SMBus Slave Features" Name="SMBusDualAddressMode" Type="list">
        <Condition Diagnostic="When primary address is 7 bits length we can have a dual address" Expression="(SMBusAddressingMode=SMBUS_ADDRESSINGMODE_7BIT) &amp; !(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)"/>  
        <PossibleValue Comment="Disabled" Value="SMBUS_DUALADDRESS_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="SMBUS_DUALADDRESS_ENABLE"/>
    </RefParameter>
    
    <RefParameter Comment="Dual Address Acknowledged" DefaultValue="SMBUS_DUALADDRESS_DISABLE" Group="SMBus Slave Features" Name="SMBusDualAddressMode" Type="list">         
        <Condition Diagnostic="" Expression=" !(SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)"/>  
        <PossibleValue Comment="Disabled" Value="SMBUS_DUALADDRESS_DISABLE"/>       
    </RefParameter>
    <RefParameter Comment="Dual Address Acknowledged" DefaultValue="SMBUS_DUALADDRESS_DISABLE" Group="SMBus Slave Features" Name="SMBusDualAddressMode" Type="list" Visible="false">         
        <Condition Diagnostic="" Expression=" (SMBusPeripheralMode=SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)"/>  
        <PossibleValue Comment="Disabled" Value="SMBUS_DUALADDRESS_DISABLE"/>       
    </RefParameter>
    <RefParameter Comment="Dual Address Acknowledged" DefaultValue="null" Group="SMBus Slave Features" Name="SMBusDualAddressMode" Type="list" Visible="false"/>         

    <RefParameter Comment="General Call Address Detection" DefaultValue="SMBUS_GENERALCALL_DISABLE" Group="SMBus Slave Features" Name="SMBusGeneralCallMode" Type="list">
        <PossibleValue Comment="Disabled" Value="SMBUS_GENERALCALL_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="SMBUS_GENERALCALL_ENABLE"/>
    </RefParameter>
    
    <RefParameter Comment="Clock No Stretch Mode" DefaultValue="SMBUS_NOSTRETCH_DISABLE" Group="SMBus Slave Features" Name="SMBusNoStretchMode" Type="list">
        <PossibleValue Comment="Disabled" Value="SMBUS_NOSTRETCH_DISABLE"/>
        <PossibleValue Comment="Enabled" Value="SMBUS_NOSTRETCH_ENABLE"/>
    </RefParameter>	       
    <!-- Specifies the acknoledge mask address second slave own address if dual addressing mode is selected-->
    <RefParameter Comment="Secondary Address Mask" DefaultValue="SMBUS_OA2_NOMASK" Group="SMBus Slave Features" Name="SMBusOwnAddress2Masks" Type="list" Visible="true">
        <Condition Diagnostic="" Expression=" (SMBusDualAddressMode=SMBUS_DUALADDRESS_ENABLE) "/> 
        <PossibleValue Comment="No mask" Value="SMBUS_OA2_NOMASK"/>
        <PossibleValue Comment="OA2[1] masked" Value="SMBUS_OA2_MASK01"/>
        <PossibleValue Comment="OA2[2:1] masked" Value="SMBUS_OA2_MASK02"/>
        <PossibleValue Comment="OA2[3:1] masked" Value="SMBUS_OA2_MASK03"/>
        <PossibleValue Comment="OA2[4:1] masked" Value="SMBUS_OA2_MASK04"/>
        <PossibleValue Comment="OA2[5:1] masked" Value="SMBUS_OA2_MASK05"/>
        <PossibleValue Comment="OA2[6:1] masked" Value="SMBUS_OA2_MASK06"/>
        <PossibleValue Comment="OA2[7:1] masked" Value="SMBUS_OA2_MASK07"/>
    </RefParameter>
	
    <RefParameter Comment="Secondary Address Mask" DefaultValue="SMBUS_OA2_NOMASK" Group="SMBus Slave Features" Name="SMBusOwnAddress2Masks" Type="list" Visible="false">
           
        <PossibleValue Comment="No mask" Value="SMBUS_OA2_NOMASK"/>
    </RefParameter>	

    <RefParameter Comment="Instance" DefaultValue="I2C$Index" Name="Instance" Type="" Visible="false"/>

    <!-- RefMode for I2C -->
    <RefMode HalMode="I2C" Name="I2C">
        <ConfigForMode>I2C</ConfigForMode>   
        <ConfigForMode>I2C_Analogue</ConfigForMode>   
        <ConfigForMode>I2C_DigitalFolter</ConfigForMode>   
        <ConfigForMode>I2CEnableFastModePlus</ConfigForMode>  
        <ConfigForMode>FASTMODE_Config</ConfigForMode>
        <Parameter Name="CustomTiming"/>
        <Parameter Name="I2C_Speed_Mode"/>
        <Parameter Name="Speed"/>      
        <Parameter Name="I2C_Rise_Time"/>
        <Parameter Name="I2C_Fall_Time"/>
        <Parameter Name="I2C_Coeff_DF"/>
        <Parameter Name="Analog_Filter"/>
        <Parameter Name="Timing"/>
        <Parameter Name="NoStretchMode"/> 
        <Parameter Name="GeneralCallMode"/>
        <Parameter Name="AddressingMode"/>
        <Parameter Name="DualAddressMode"/>  
        <Parameter Name="OwnAddress"/>
        <Parameter Name="OwnAddress2"/>  
        <Parameter Name="OwnAddress2Masks"/>	
        <Parameter Name="Instance"/>
        
    </RefMode> 

	
    <!-- RefMode for SMBus -->
    <RefMode Name="SMBus_common" Abstract="true">

        <Parameter Name="I2C_Speed_Mode"/>
        <Parameter Name="Speed"/>      
        <Parameter Name="I2C_Rise_Time"/>
        <Parameter Name="I2C_Fall_Time"/>
        <Parameter Name="I2C_Coeff_DF"/>
        <Parameter Name="SMBusAnalogFilter"/>
        <Parameter Name="Timing"/>
        <Parameter Name="SMBusPacketErrorCheckMode"/>
        <Parameter Name="SMBusPeripheralMode"/>
        <Parameter Name="SMBusNoStretchMode"/> 
        <Parameter Name="SMBusGeneralCallMode"/>
        <Parameter Name="SMBusAddressingMode"/>	
        <Parameter Name="SMBusDualAddressMode"/>
        <Parameter Name="SMBusOwnAddress"/>          
        <Parameter Name="SMBusOwnAddress2"/>  
        <Parameter Name="SMBusOwnAddress2Masks"/>	
        <Parameter Name="TEXTEN"/>
        <Parameter Name="TIMEOUTB_Master"/>
        <Parameter Name="TIMEOUTB_Slave"/>
        <Parameter Name="TIDLE"/>
        <Parameter Name="TIMEOUTA_idle"/>
        <Parameter Name="TIMEOUT_time"/>
        <Parameter Name="Timeout"/>
        <Parameter Name="Instance"/>
		
    </RefMode>
	
    <RefMode BaseMode="SMBus_common" HalMode="SMBUS" Name="SMBus-two-wire-Interface"  >
        <ConfigForMode>SMBus_init</ConfigForMode>   
        <ConfigForMode>FASTMODE_Config</ConfigForMode>
        <ConfigForMode>I2C_DigitalFolter</ConfigForMode>   
    </RefMode> 
	
	
    <RefMode Name="SMBus-Alert-mode" HalMode="SMBUS" BaseMode="SMBus_common">
        <ConfigForMode>SMBus_init</ConfigForMode>   
        <ConfigForMode>SMBus_alert</ConfigForMode>   
        <ConfigForMode>FASTMODE_Config</ConfigForMode>
        <ConfigForMode>I2C_DigitalFolter</ConfigForMode>
    </RefMode>        

	
    <ModeLogicOperator Name="OR">
        <Mode Name="I2C">
            <ModeLogicOperator Name="XOR">
                <Mode Name="I2C">
                    <SignalLogicalOp Name="AND">
                        <Signal Name="SCL"/>
                        <Signal Name="SDA"/>
                    </SignalLogicalOp>
                    <Semaphore>$IpInstance_Dma</Semaphore>
                </Mode>
                <Mode Name="SMBus-Alert-mode">
                    <Semaphore>$IpInstance_SMBUS_Enable</Semaphore>
                    <SignalLogicalOp Name="AND">
                        <Signal Name="SCL"/>
                        <Signal Name="SDA"/>
                        <Signal Name="SMBA"/>
                    </SignalLogicalOp>
                </Mode>
                <Mode Name="SMBus-two-wire-Interface" RemoveCondition="((STM32L0|STM32F0) &amp; ($Index=2))">
                    <Semaphore>$IpInstance_SMBUS_Enable</Semaphore>
                    <SignalLogicalOp Name="AND">
                        <Signal Name="SCL"/>
                        <Signal Name="SDA"/>
                    </SignalLogicalOp>
                </Mode>
            </ModeLogicOperator>
        </Mode>
    </ModeLogicOperator>
	
	
	
	
    <RefSignal IOMode="AlternateFunctionOpenDrain" Name="SCL"/>        
    <RefSignal IOMode="AlternateFunctionOpenDrain" Name="SDA"/>       
    <RefSignal IOMode="AlternateFunctionOpenDrain" Name="SMBA"/>
    <Semaphore>$IpInstanceUsed_ForRCC</Semaphore>
</IP>