<?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="V4.0" IPType="peripheral" IpGroup="Connectivity" Name="SPI" Version="STM32MP_spi2s2_v1_1" ns0:schemaLocation="http://mcd.rou.st.com/modules.php?name=mcu ../../../../../../../doc/V4/Development/Specifications/db/IP_Modes.xsd">
  	<About>SPI: Serial Peripheral Interface</About>
	
	<!-- Litte Orca -->
	<!-- Generic RefParameters for SPI --> 
	<RefParameter Comment="Instance" DefaultValue="SPI$Index" Name="Instance" Type="" Visible="false"/>
	
	<!-- Virtual Mode Parameter, to define RefParameter in function of NSS -->
	<RefParameter Comment="" DefaultValue="VM_NSSSOFT" Group="Basic Parameters" Name="VirtualNSS" Type="list" Visible="false">
		<PossibleValue Comment="" Value="VM_NSSSOFT"/>
		<PossibleValue Comment="" Value="VM_NSSHARD"/>
	</RefParameter>
	
	<!-- Virtual Type Parameter, to define RefParameter in function of Master/Slave -->
	<RefParameter Comment="" DefaultValue="VM_MASTER" Group="Basic Parameters" Name="VirtualType" Type="list" Visible="false">
		<PossibleValue Comment="" Value="VM_MASTER"/>
		<PossibleValue Comment="" Value="VM_SLAVE"/>
	</RefParameter>
	
	<RefParameter Comment="Mode" DefaultValue="SPI_MODE_SLAVE" Group="Basic Parameters" Name="Mode" Type="list" Visible="false">
		<PossibleValue Comment="Slave" Value="SPI_MODE_SLAVE"/>
		<PossibleValue Comment="Master" Value="SPI_MODE_MASTER"/>
	</RefParameter>
	
	<RefParameter Comment="Direction" DefaultValue="SPI_DIRECTION_2LINES" Group="Basic Parameters" Name="Direction" Type="list" Visible="false">
		<PossibleValue Comment="2 Lines Unidirectionnal" Value="SPI_DIRECTION_2LINES"/>
		<PossibleValue Comment="2 Lines with Receive only" Value="SPI_DIRECTION_2LINES_RXONLY"/>
                <PossibleValue Comment="2 Lines with Transmit only" Value="SPI_DIRECTION_2LINES_TXONLY"/>
		<PossibleValue Comment="1 Line Bidirectionnal" Value="SPI_DIRECTION_1LINE"/>
	</RefParameter>
	
	<RefParameter Comment="Frame Format" DefaultValue="SPI_TIMODE_DISABLE" Group="Basic Parameters" Name="TIMode" Type="list">
		<PossibleValue Comment="Motorola" Value="SPI_TIMODE_DISABLE"/>
		<PossibleValue Comment="TI" Condition="!(VirtualNSS = VM_NSSHARD)" Diagnostic="Hardware NSS signal must be enabled first" Value="SPI_TIMODE_ENABLE"/>
	</RefParameter>
	
	
	<RefParameter Comment="Data Size" DefaultValue="SPI_DATASIZE_4BIT" Group="Basic Parameters" Name="DataSize" Type="list">
		<Condition Expression="$IpNumber = 1 | $IpNumber = 2 | $IpNumber = 3" Diagnostic=""/>
		<PossibleValue Comment="4 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_4BIT"/>
		<PossibleValue Comment="5 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_5BIT"/>
		<PossibleValue Comment="6 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_6BIT"/>
		<PossibleValue Comment="7 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_7BIT"/>
		<PossibleValue Comment="8 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_8BIT"/>
		<PossibleValue Comment="9 Bits"  Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_9BIT"/>
		<PossibleValue Comment="10 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_10BIT"/>
		<PossibleValue Comment="11 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_11BIT"/>
		<PossibleValue Comment="12 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_12BIT"/>
		<PossibleValue Comment="13 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_13BIT"/>
		<PossibleValue Comment="14 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_14BIT"/>
		<PossibleValue Comment="15 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_15BIT"/>
		<PossibleValue Comment="16 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_16BIT"/>
	  	<PossibleValue Comment="17 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_17BIT"/>
		<PossibleValue Comment="18 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_18BIT"/>
		<PossibleValue Comment="19 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_19BIT"/>
		<PossibleValue Comment="20 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_20BIT"/>
		<PossibleValue Comment="21 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_21BIT"/>
		<PossibleValue Comment="22 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_22BIT"/>
		<PossibleValue Comment="23 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_23BIT"/>
		<PossibleValue Comment="24 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_24BIT"/>
		<PossibleValue Comment="25 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_25BIT"/>
		<PossibleValue Comment="26 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_26BIT"/>
		<PossibleValue Comment="27 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_27BIT"/>
		<PossibleValue Comment="28 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_28BIT"/>
		<PossibleValue Comment="29 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_29BIT"/>
		<PossibleValue Comment="30 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_30BIT"/>
		<PossibleValue Comment="31 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_31BIT"/>
		<PossibleValue Comment="32 Bits" Semaphore="$IpInstance_DATASIZE_WORD"     Value="SPI_DATASIZE_32BIT"/>	
	</RefParameter>
	
	<RefParameter Comment="Data Size" DefaultValue="SPI_DATASIZE_4BIT" Group="Basic Parameters" Name="DataSize" Type="list">
		<PossibleValue Comment="4 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_4BIT"/>
		<PossibleValue Comment="5 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_5BIT"/>
		<PossibleValue Comment="6 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_6BIT"/>
		<PossibleValue Comment="7 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_7BIT"/>
		<PossibleValue Comment="8 Bits"  Semaphore="$IpInstance_DATASIZE_BYTE"     Value="SPI_DATASIZE_8BIT"/>
		<PossibleValue Comment="9 Bits"  Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_9BIT"/>
		<PossibleValue Comment="10 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_10BIT"/>
		<PossibleValue Comment="11 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_11BIT"/>
		<PossibleValue Comment="12 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_12BIT"/>
		<PossibleValue Comment="13 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_13BIT"/>
		<PossibleValue Comment="14 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_14BIT"/>
		<PossibleValue Comment="15 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_15BIT"/>
		<PossibleValue Comment="16 Bits" Semaphore="$IpInstance_DATASIZE_HALFWORD" Value="SPI_DATASIZE_16BIT"/>
	</RefParameter>
	
	<RefParameter Comment="First Bit" DefaultValue="SPI_FIRSTBIT_MSB" Group="Basic Parameters" Name="FirstBit" Type="list">
		<Condition Diagnostic="" Expression="TIMode = SPI_TIMODE_DISABLE"/>
		<PossibleValue Comment="MSB First" Value="SPI_FIRSTBIT_MSB"/>
		<PossibleValue Comment="LSB First" Value="SPI_FIRSTBIT_LSB"/>
	</RefParameter>
	<RefParameter Comment="First Bit" DefaultValue="null" Group="Basic Parameters" Max="1" Min="0" Name="FirstBit" Type="integer" Visible="false"/>
	
	<!-- Clock RefParameters for SPI --> 
	<RefParameter Comment="Prescaler (for Baud Rate)" DefaultValue="SPI_BAUDRATEPRESCALER_2" Group="Clock Parameters" Name="BaudRatePrescaler" Type="list">
		<Condition Diagnostic="" Expression="($IpInstance_Slave &amp; (TIMode = SPI_TIMODE_ENABLE)) | $IpInstance_Master"/>
		<PossibleValue Comment="2"   Value="SPI_BAUDRATEPRESCALER_2"/>
		<PossibleValue Comment="4"   Value="SPI_BAUDRATEPRESCALER_4"/>
		<PossibleValue Comment="8"   Value="SPI_BAUDRATEPRESCALER_8"/>
		<PossibleValue Comment="16"  Value="SPI_BAUDRATEPRESCALER_16"/>
		<PossibleValue Comment="32"  Value="SPI_BAUDRATEPRESCALER_32"/>
		<PossibleValue Comment="64"  Value="SPI_BAUDRATEPRESCALER_64"/>
		<PossibleValue Comment="128" Value="SPI_BAUDRATEPRESCALER_128"/>
		<PossibleValue Comment="256" Value="SPI_BAUDRATEPRESCALER_256"/>
	</RefParameter>
	<RefParameter Comment="Prescaler (for Baud Rate)" DefaultValue="null" Group="Clock Parameters" Name="BaudRatePrescaler" Type="list" Visible="false"/>
	
	<RefParameter Comment="Baud Rate" DefaultValue="8000000" Group="Clock Parameters" Max="50000000" Min="0" Name="CalculateBaudRate" Type="string">
		<Description>Calculated Baudrate value based on SPI Clock source and Prescaler</Description>
		<Condition Diagnostic="" Expression="(($IpInstance_Slave &amp; (TIMode = SPI_TIMODE_ENABLE)) | $IpInstance_Master)"/>
	</RefParameter>
	
	<RefParameter Comment="Baud Rate" DefaultValue="null" Group="Clock Parameters" Max="50000000" Min="0" Name="CalculateBaudRate" Type="string" Visible="false"/>
		
	<RefParameter Comment="Clock Polarity (CPOL)" DefaultValue="SPI_POLARITY_LOW" Group="Clock Parameters" Name="CLKPolarity" Type="list">
		<Condition Diagnostic="" Expression="TIMode = SPI_TIMODE_DISABLE"/>
		<PossibleValue Comment="Low"  Value="SPI_POLARITY_LOW"/>
		<PossibleValue Comment="High" Value="SPI_POLARITY_HIGH"/>
	</RefParameter>
	<RefParameter Comment="Clock Polarity" DefaultValue="null" Group="Clock Parameters" Max="1" Min="0" Name="CLKPolarity" Type="integer" Visible="false"/>
	
	<RefParameter Comment="Clock Phase (CPHA)" DefaultValue="SPI_PHASE_1EDGE" Group="Clock Parameters" Name="CLKPhase" Type="list">
		<Description>1 Edge means the first clock transition is the first data capture edge (value 0) AND 2 Edge means the second clock transition is the first data capture edge (value 1)</Description>
		<Condition Diagnostic="" Expression="TIMode = SPI_TIMODE_DISABLE"/>
		<PossibleValue Comment="1 Edge" Value="SPI_PHASE_1EDGE"/>
		<PossibleValue Comment="2 Edge" Value="SPI_PHASE_2EDGE"/>
	</RefParameter>
	<RefParameter Comment="Clock Phase" DefaultValue="null" Group="Clock Parameters" Max="1" Min="0" Name="CLKPhase" Type="integer" Visible="false"/>
		
	
	<!-- Advanced RefParameters for SPI --> 
	<RefParameter Comment="CRC Calculation" DefaultValue="SPI_CRCCALCULATION_DISABLE" Group="Advanced Parameters" Name="CRCCalculation" Type="list">
		<PossibleValue Comment="Disabled" Value="SPI_CRCCALCULATION_DISABLE"/>
		<PossibleValue Comment="Enabled"  Value="SPI_CRCCALCULATION_ENABLE"/>
	</RefParameter>
	
       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_16BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 16 Bits"  Value="SPI_CRC_LENGTH_16BIT"/>
               <PossibleValue Comment="CRC 32 Bits"  Value="SPI_CRC_LENGTH_32BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_15BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 15 Bits"  Value="SPI_CRC_LENGTH_15BIT"/>
               <PossibleValue Comment="CRC 30 Bits"  Value="SPI_CRC_LENGTH_30BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_14BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 14 Bits"  Value="SPI_CRC_LENGTH_14BIT"/>
               <PossibleValue Comment="CRC 28 Bits"  Value="SPI_CRC_LENGTH_28BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_13BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 13 Bits"  Value="SPI_CRC_LENGTH_13BIT"/>
               <PossibleValue Comment="CRC 26 Bits"  Value="SPI_CRC_LENGTH_26BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_12BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 12 Bits"  Value="SPI_CRC_LENGTH_12BIT"/>
               <PossibleValue Comment="CRC 24 Bits"  Value="SPI_CRC_LENGTH_24BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_11BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 11 Bits"  Value="SPI_CRC_LENGTH_11BIT"/>
               <PossibleValue Comment="CRC 22 Bits"  Value="SPI_CRC_LENGTH_22BIT"/>
               <PossibleValue Comment="CRC 33 Bits"  Value="SPI_CRC_LENGTH_33BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_10BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 10 Bits"  Value="SPI_CRC_LENGTH_10BIT"/>
               <PossibleValue Comment="CRC 20 Bits"  Value="SPI_CRC_LENGTH_20BIT"/>
               <PossibleValue Comment="CRC 30 Bits"  Value="SPI_CRC_LENGTH_30BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_9BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 9 Bits"  Value="SPI_CRC_LENGTH_9BIT"/>
               <PossibleValue Comment="CRC 18 Bits" Value="SPI_CRC_LENGTH_18BIT"/>
               <PossibleValue Comment="CRC 27 Bits" Value="SPI_CRC_LENGTH_27BIT"/>
        </RefParameter>

       <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_8BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 8 Bits"  Value="SPI_CRC_LENGTH_8BIT"/>
               <PossibleValue Comment="CRC 16 Bits" Value="SPI_CRC_LENGTH_16BIT"/>
               <PossibleValue Comment="CRC 24 Bits" Value="SPI_CRC_LENGTH_24BIT"/>
               <PossibleValue Comment="CRC 32 Bits" Value="SPI_CRC_LENGTH_32BIT"/>
        </RefParameter>

        <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_7BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 7 Bits" Value="SPI_CRC_LENGTH_7BIT"/>
               <PossibleValue Comment="CRC 14 Bits" Value="SPI_CRC_LENGTH_14BIT"/>
               <PossibleValue Comment="CRC 21 Bits" Value="SPI_CRC_LENGTH_21BIT"/>
               <PossibleValue Comment="CRC 28 Bits" Value="SPI_CRC_LENGTH_28BIT"/>
        </RefParameter>

        <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_6BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 6 Bits" Value="SPI_CRC_LENGTH_6BIT"/>
               <PossibleValue Comment="CRC 12 Bits" Value="SPI_CRC_LENGTH_12BIT"/>
               <PossibleValue Comment="CRC 18 Bits" Value="SPI_CRC_LENGTH_18BIT"/>
               <PossibleValue Comment="CRC 24 Bits" Value="SPI_CRC_LENGTH_24BIT"/>
               <PossibleValue Comment="CRC 30 Bits" Value="SPI_CRC_LENGTH_30BIT"/>
        </RefParameter>

        <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_5BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 5 Bits"  Value="SPI_CRC_LENGTH_5BIT"/>
               <PossibleValue Comment="CRC 10 Bits" Value="SPI_CRC_LENGTH_10BIT"/>
               <PossibleValue Comment="CRC 15 Bits" Value="SPI_CRC_LENGTH_15BIT"/>
               <PossibleValue Comment="CRC 20 Bits" Value="SPI_CRC_LENGTH_20BIT"/>
               <PossibleValue Comment="CRC 25 Bits" Value="SPI_CRC_LENGTH_25BIT"/>
               <PossibleValue Comment="CRC 30 Bits" Value="SPI_CRC_LENGTH_30BIT"/>
               <PossibleValue Comment="CRC 35 Bits" Value="SPI_CRC_LENGTH_35BIT"/>
        </RefParameter>

        <RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Group="Advanced Parameters" Name="CRCLength" Type="list">
               <Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (DataSize = SPI_DATASIZE_4BIT)"/>
               <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
               <PossibleValue Comment="CRC 4 Bits"  Value="SPI_CRC_LENGTH_4BIT"/>
               <PossibleValue Comment="CRC 8 Bits"  Value="SPI_CRC_LENGTH_8BIT"/>
               <PossibleValue Comment="CRC 12 Bits" Value="SPI_CRC_LENGTH_12BIT"/>
               <PossibleValue Comment="CRC 16 Bits" Value="SPI_CRC_LENGTH_16BIT"/>
               <PossibleValue Comment="CRC 20 Bits" Value="SPI_CRC_LENGTH_20BIT"/>
               <PossibleValue Comment="CRC 24 Bits" Value="SPI_CRC_LENGTH_24BIT"/>
               <PossibleValue Comment="CRC 28 Bits" Value="SPI_CRC_LENGTH_28BIT"/>
               <PossibleValue Comment="CRC 32 Bits" Value="SPI_CRC_LENGTH_32BIT"/>
        </RefParameter>

 	<RefParameter Comment="CRC Length" DefaultValue="SPI_CRC_LENGTH_DATASIZE" Name="CRCLength" Type="list" Visible="false">	
            <Condition Diagnostic="" Expression="CRCCalculation = SPI_CRCCALCULATION_ENABLE"/>	
            <PossibleValue Comment="Aligned with the data size" Value="SPI_CRC_LENGTH_DATASIZE"/>
	</RefParameter>
        
	<RefParameter Comment="CRC Length" DefaultValue="null" Name="CRCLength" Type="list" Visible="false"/>	
	
	<RefParameter Comment="CRC Polynomial" DefaultValue="X0+X1+X2" Group="Advanced Parameters" Max="8" Name="CRCPolynomial" Type="polynomialOdd">
		<Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (((DataSize = SPI_DATASIZE_8BIT) &amp; (CRCLength = SPI_CRC_LENGTH_DATASIZE)) | (CRCLength = SPI_CRC_LENGTH_8BIT))"/>
	</RefParameter>
	
	<RefParameter Comment="CRC Polynomial" DefaultValue="X0+X1+X2" Group="Advanced Parameters" Max="16" Name="CRCPolynomial" Type="polynomialOdd">
		<Condition Diagnostic="" Expression="(CRCCalculation = SPI_CRCCALCULATION_ENABLE) &amp; (((DataSize = SPI_DATASIZE_16BIT) &amp; (CRCLength = SPI_CRC_LENGTH_DATASIZE)) | (CRCLength = SPI_CRC_LENGTH_16BIT))"/>
	</RefParameter>
	
	<RefParameter Comment="CRC Polynomial" DefaultValue="7" Group="Advanced Parameters" Max="X1+X3" Min="X1+X3" Name="CRCPolynomial" Type="list" Visible="false">
        <PossibleValue Comment="X0+X1+X2" Value="7"/>
        </RefParameter>
		
	<RefParameter Comment="NSSP Mode" DefaultValue="SPI_NSS_PULSE_ENABLE" Group="Advanced Parameters" Name="NSSPMode" Type="list">
	 <Condition Diagnostic="" Expression="$IpInstance_Master &amp; (TIMode = SPI_TIMODE_DISABLE) &amp; (CLKPhase = SPI_PHASE_1EDGE)"/>
	 	<PossibleValue Comment="Enabled" Value="SPI_NSS_PULSE_ENABLE"/>
		<PossibleValue Comment="Disabled" Value="SPI_NSS_PULSE_DISABLE"/>
	</RefParameter>
	<RefParameter Comment="NSSP Mode" DefaultValue="SPI_NSS_PULSE_DISABLE" Name="NSSPMode" Type="list" Visible="false">
    	<PossibleValue Comment="Disabled" Value="SPI_NSS_PULSE_DISABLE"/>
    </RefParameter>
	
	<RefParameter Comment="NSS Signal Type" DefaultValue="SPI_NSS_HARD_OUTPUT" Group="Advanced Parameters" Name="NSS" Type="list">
		<Condition Diagnostic="" Expression="$IpInstance_NSSHARD_Output"/>
		<PossibleValue Comment="Output Hardware" Value="SPI_NSS_HARD_OUTPUT"/>
	</RefParameter>
	<RefParameter Comment="NSS Signal Type" DefaultValue="SPI_NSS_HARD_INPUT" Group="Advanced Parameters" Name="NSS" Type="list">
		<Condition Diagnostic="" Expression="$IpInstance_NSSHARD_Input"/>
		<PossibleValue Comment="Input Hardware" Value="SPI_NSS_HARD_INPUT"/>
	</RefParameter>
        <RefParameter Comment="NSS Signal Type" DefaultValue="SPI_NSS_SOFT" Group="Advanced Parameters" Name="NSS" Type="list">
		<PossibleValue Comment="Software" Value="SPI_NSS_SOFT"/>
	</RefParameter>
	<RefParameter Comment="NSS Signal Type" DefaultValue="SPI_NSS_SOFT" Group="Advanced Parameters" Name="NSS" Type="list" Visible="false">
            <PossibleValue Comment="Software" Value="SPI_NSS_SOFT"/>
    </RefParameter>
    
	<RefParameter Comment="Fifo Threshold" DefaultValue="SPI_FIFO_THRESHOLD_01DATA" Name="FifoThreshold" Type="list">
		<Condition Expression="$IpNumber = 1 | $IpNumber = 2 | $IpNumber = 3" Diagnostic=""/>
		<PossibleValue Comment="Fifo Threshold 01 Data" Value="SPI_FIFO_THRESHOLD_01DATA"/>
		<PossibleValue Comment="Fifo Threshold 02 Data" Value="SPI_FIFO_THRESHOLD_02DATA"/>
		<PossibleValue Comment="Fifo Threshold 03 Data" Value="SPI_FIFO_THRESHOLD_03DATA"/>
		<PossibleValue Comment="Fifo Threshold 04 Data" Value="SPI_FIFO_THRESHOLD_04DATA"/>
		<PossibleValue Comment="Fifo Threshold 05 Data" Value="SPI_FIFO_THRESHOLD_05DATA"/>
		<PossibleValue Comment="Fifo Threshold 06 Data" Value="SPI_FIFO_THRESHOLD_06DATA"/>
		<PossibleValue Comment="Fifo Threshold 07 Data" Value="SPI_FIFO_THRESHOLD_07DATA"/>
		<PossibleValue Comment="Fifo Threshold 08 Data" Value="SPI_FIFO_THRESHOLD_08DATA"/>
		<PossibleValue Comment="Fifo Threshold 09 Data" Value="SPI_FIFO_THRESHOLD_09DATA"/>
		<PossibleValue Comment="Fifo Threshold 10 Data" Value="SPI_FIFO_THRESHOLD_10DATA"/>
		<PossibleValue Comment="Fifo Threshold 11 Data" Value="SPI_FIFO_THRESHOLD_11DATA"/>
		<PossibleValue Comment="Fifo Threshold 12 Data" Value="SPI_FIFO_THRESHOLD_12DATA"/>
		<PossibleValue Comment="Fifo Threshold 13 Data" Value="SPI_FIFO_THRESHOLD_13DATA"/>
		<PossibleValue Comment="Fifo Threshold 14 Data" Value="SPI_FIFO_THRESHOLD_14DATA"/>
		<PossibleValue Comment="Fifo Threshold 15 Data" Value="SPI_FIFO_THRESHOLD_15DATA"/>
		<PossibleValue Comment="Fifo Threshold 16 Data" Value="SPI_FIFO_THRESHOLD_16DATA"/>
	</RefParameter>
        
	<RefParameter Comment="Fifo Threshold" DefaultValue="SPI_FIFO_THRESHOLD_01DATA" Name="FifoThreshold" Type="list">
	    <PossibleValue Comment="Fifo Threshold 01 Data" Value="SPI_FIFO_THRESHOLD_01DATA"/>
	    <PossibleValue Comment="Fifo Threshold 02 Data" Value="SPI_FIFO_THRESHOLD_02DATA"/>
	    <PossibleValue Comment="Fifo Threshold 03 Data" Value="SPI_FIFO_THRESHOLD_03DATA"/>
	    <PossibleValue Comment="Fifo Threshold 04 Data" Value="SPI_FIFO_THRESHOLD_04DATA"/>
	    <PossibleValue Comment="Fifo Threshold 05 Data" Value="SPI_FIFO_THRESHOLD_05DATA"/>
	    <PossibleValue Comment="Fifo Threshold 06 Data" Value="SPI_FIFO_THRESHOLD_06DATA"/>
	    <PossibleValue Comment="Fifo Threshold 07 Data" Value="SPI_FIFO_THRESHOLD_07DATA"/>
	    <PossibleValue Comment="Fifo Threshold 08 Data" Value="SPI_FIFO_THRESHOLD_08DATA"/>
	</RefParameter>

	<RefParameter Comment="Tx Crc Initialization Pattern" DefaultValue="SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN" Name="TxCRCInitializationPattern" Type="list">
	    <PossibleValue Comment="All Zero Pattern" Value="SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN"/>
	    <PossibleValue Comment="All One Pattern"  Value="SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN"/>
	</RefParameter>

        <RefParameter Comment="Rx Crc Initialization Pattern" DefaultValue="SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN" Name="RxCRCInitializationPattern" Type="list">
            <PossibleValue Comment="All Zero Pattern" Value="SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN"/>
            <PossibleValue Comment="All One Pattern"  Value="SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN"/>
        </RefParameter>

        <RefParameter Comment="Nss Polarity" DefaultValue="SPI_NSS_POLARITY_LOW" Name="NSSPolarity" Type="list">
            <PossibleValue Comment="Nss Polarity Low" Value="SPI_NSS_POLARITY_LOW"/>
            <PossibleValue Comment="Nss Polarity High" Value="SPI_NSS_POLARITY_HIGH"/>
        </RefParameter>

        <RefParameter Comment="Master Ss Idleness" DefaultValue="SPI_MASTER_SS_IDLENESS_00CYCLE" Name="MasterSSIdleness" Type="list">
            <Description>Specifies an extra delay, expressed in number of SPI clock cycle periods, inserted additionally between active edge of SS and first data transaction start in master mode.</Description>
            <Condition Diagnostic="" Expression="TIMode = SPI_TIMODE_DISABLE"/>
            <PossibleValue Comment="00 Cycle" Value="SPI_MASTER_SS_IDLENESS_00CYCLE"/>
            <PossibleValue Comment="01 Cycle" Value="SPI_MASTER_SS_IDLENESS_01CYCLE"/>
            <PossibleValue Comment="02 Cycle" Value="SPI_MASTER_SS_IDLENESS_02CYCLE"/>
            <PossibleValue Comment="03 Cycle" Value="SPI_MASTER_SS_IDLENESS_03CYCLE"/>
            <PossibleValue Comment="04 Cycle" Value="SPI_MASTER_SS_IDLENESS_04CYCLE"/>
            <PossibleValue Comment="05 Cycle" Value="SPI_MASTER_SS_IDLENESS_05CYCLE"/>
            <PossibleValue Comment="06 Cycle" Value="SPI_MASTER_SS_IDLENESS_06CYCLE"/>
            <PossibleValue Comment="07 Cycle" Value="SPI_MASTER_SS_IDLENESS_07CYCLE"/>
            <PossibleValue Comment="08 Cycle" Value="SPI_MASTER_SS_IDLENESS_08CYCLE"/>
            <PossibleValue Comment="09 Cycle" Value="SPI_MASTER_SS_IDLENESS_09CYCLE"/>
            <PossibleValue Comment="10 Cycle" Value="SPI_MASTER_SS_IDLENESS_10CYCLE"/>
            <PossibleValue Comment="11 Cycle" Value="SPI_MASTER_SS_IDLENESS_11CYCLE"/>
            <PossibleValue Comment="12 Cycle" Value="SPI_MASTER_SS_IDLENESS_12CYCLE"/>
            <PossibleValue Comment="13 Cycle" Value="SPI_MASTER_SS_IDLENESS_13CYCLE"/>
            <PossibleValue Comment="14 Cycle" Value="SPI_MASTER_SS_IDLENESS_14CYCLE"/>
            <PossibleValue Comment="15 Cycle" Value="SPI_MASTER_SS_IDLENESS_15CYCLE"/>
        </RefParameter>

        <RefParameter Comment="Master Inter Data Idleness" DefaultValue="SPI_MASTER_INTERDATA_IDLENESS_00CYCLE" Name="MasterInterDataIdleness" Type="list">
            <Description>Specifies minimum time delay (expressed in SPI clock cycles periods) inserted between two consecutive data frames in master mode This parameter can be a value of SPI Master Inter-Data Ideleness </Description>
            <Condition Diagnostic="" Expression="TIMode = SPI_TIMODE_DISABLE"/>
            <PossibleValue Comment="00 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_00CYCLE"/>
            <PossibleValue Comment="01 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_01CYCLE"/>
            <PossibleValue Comment="02 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_02CYCLE"/>
            <PossibleValue Comment="03 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_03CYCLE"/>
            <PossibleValue Comment="04 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_04CYCLE"/>
            <PossibleValue Comment="05 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_05CYCLE"/>
            <PossibleValue Comment="06 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_06CYCLE"/>
            <PossibleValue Comment="07 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_07CYCLE"/>
            <PossibleValue Comment="08 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_08CYCLE"/>
            <PossibleValue Comment="09 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_09CYCLE"/>
            <PossibleValue Comment="10 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_10CYCLE"/>
            <PossibleValue Comment="11 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_11CYCLE"/>
            <PossibleValue Comment="12 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_12CYCLE"/>
            <PossibleValue Comment="13 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_13CYCLE"/>
            <PossibleValue Comment="14 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_14CYCLE"/>
            <PossibleValue Comment="15 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_15CYCLE"/>
        </RefParameter>

        <RefParameter Comment="Master Receiver Auto Susp" DefaultValue="SPI_MASTER_INTERDATA_IDLENESS_00CYCLE" Name="MasterReceiverAutoSusp" Type="list">
            <Description>Control continuous SPI transfer in master receiver mode and automatic management in order to avoid overrun condition.</Description>
            <PossibleValue Comment="00 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_00CYCLE"/>
            <PossibleValue Comment="01 Cycle" Value="SPI_MASTER_INTERDATA_IDLENESS_01CYCLE"/>
        </RefParameter>

        <RefParameter Comment="Master Keep IO State" DefaultValue="0" Max="1" Min="0" Name="MasterKeepIOState" Type="integer">
            <Description>Alternate function GPIOs control </Description>
        </RefParameter>
        
         <RefParameter Comment="IO Swap" DefaultValue="SPI_IO_SWAP_DISABLE" Name="IOSwap" Type="list">
            <Description>Invert MISO/MOSI alternate functions.</Description>
            <PossibleValue Comment="Disabled" Value="SPI_IO_SWAP_DISABLE"/>
            <PossibleValue Comment="Enabled" Value="SPI_IO_SWAP_ENABLE"/>
        </RefParameter>
        
	<!-- RefModes for Hardware NSS -->
	<RefMode HalMode="SPI" Name="NSS_Signal_Hard_Input">
		<Parameter Name="VirtualNSS">
			<PossibleValue>VM_NSSHARD</PossibleValue>
		</Parameter>
	</RefMode>
        <RefMode HalMode="SPI" Name="NSS_Signal_Hard_Output">
		<Parameter Name="VirtualNSS">
			<PossibleValue>VM_NSSHARD</PossibleValue>
		</Parameter>
	</RefMode>

	<!-- RefModes for 'Full-Duplex Master' SPI -->
	<RefMode Name="Full_Duplex_Master">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_2LINES</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/> 
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	<!-- RefModes for 'Full-Duplex Slave' SPI -->
	<RefMode Name="Full_Duplex_Slave">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_2LINES</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	<!-- RefModes for 'Half-Duplex Master' SPI -->
	<RefMode Name="Simplex_Bidirectional_Master">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_1LINE</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	<!-- RefModes for 'Half-Duplex Slave' SPI -->
	<RefMode Name="Simplex_Bidirectional_Slave">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_1LINE</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	<!-- RefModes for 'Receive Only Master' SPI -->
	<RefMode Name="RX_Only_Simplex_Unidirect_Master">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_2LINES_RXONLY</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>

        <!-- RefModes for 'Receive Only Slave' SPI -->
	<RefMode Name="RX_Only_Simplex_Unidirect_Slave">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_2LINES_RXONLY</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	<!-- RefModes for 'Transmit Only Master' SPI -->
	<RefMode Name="TX_Only_Simplex_Unidirect_Master">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_MASTER</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_2LINES_TXONLY</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="MasterKeepIOState"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	<!-- RefModes for 'Transmit Only Slave' SPI -->
	<RefMode Name="TX_Only_Simplex_Unidirect_Slave">
		<ConfigForMode>Spi_Init</ConfigForMode>
		<!-- Selected Mode Fixed Parameters -->
		<Parameter Name="VirtualType">
			<PossibleValue>VM_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Mode">
			<PossibleValue>SPI_MODE_SLAVE</PossibleValue>
		</Parameter>
		<Parameter Name="Direction">
			<PossibleValue>SPI_DIRECTION_2LINES_TXONLY</PossibleValue>
		</Parameter>
		<!-- Selected Mode User Generic Parameters -->
		<Parameter Name="TIMode"/>
		<Parameter Name="DataSize"/>
		<Parameter Name="FirstBit"/>
		<!-- Selected Mode User Clock Parameters -->
		<Parameter Name="BaudRatePrescaler"/>
		<Parameter Name="CalculateBaudRate"/>
		<Parameter Name="CLKPolarity"/>
		<Parameter Name="CLKPhase"/>
		<!-- Selected Mode User Advanced Parameters -->
		<Parameter Name="CRCCalculation"/>
		<Parameter Name="CRCLength"/>
		<Parameter Name="CRCPolynomial"/>
		<Parameter Name="NSSPMode"/>
		<Parameter Name="NSS"/>
                <Parameter Name="FifoThreshold"/>
                <Parameter Name="TxCRCInitializationPattern"/>
                <Parameter Name="RxCRCInitializationPattern"/>
                <Parameter Name="NSSPolarity"/>
                <Parameter Name="MasterSSIdleness"/>
                <Parameter Name="MasterInterDataIdleness"/>
                <Parameter Name="MasterReceiverAutoSusp"/>
                <Parameter Name="IOSwap"/>
	</RefMode>
	
	
	
	<!-- ModeLogicOperator for SPI -->
	<ModeLogicOperator Name="OR">
		<Mode Name="Mode">
            <ModeLogicOperator Name="XOR">
				<Mode Name="Full_Duplex_Master" UserName="Full-Duplex Master">
					<SignalLogicalOp Name="AND">
						<Signal Name="MISO"/>
						<Signal Name="MOSI"/>
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaTransmit</Semaphore>
					<Semaphore>$IpInstance_DmaReceive</Semaphore>
					<Semaphore>$IpInstance_Master</Semaphore>
				</Mode>
				<Mode Name="Full_Duplex_Slave" UserName="Full-Duplex Slave">
					<SignalLogicalOp Name="AND">
						<Signal Name="MISO"/>
						<Signal Name="MOSI"/>
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaTransmit</Semaphore>
					<Semaphore>$IpInstance_DmaReceive</Semaphore>
					<Semaphore>$IpInstance_Slave</Semaphore>
				</Mode>
            	<Mode Name="Simplex_Bidirectional_Master" UserName="Half-Duplex Master">
					<SignalLogicalOp Name="AND">
						<Signal Name="MOSI"/>
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaTransmit</Semaphore>
					<Semaphore>$IpInstance_DmaReceive</Semaphore>
					<Semaphore>$IpInstance_Master</Semaphore>
				</Mode>
            	<Mode Name="Simplex_Bidirectional_Slave" UserName="Half-Duplex Slave">
					<SignalLogicalOp Name="AND">
						<Signal Name="MISO"/>
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaTransmit</Semaphore>
					<Semaphore>$IpInstance_DmaReceive</Semaphore>
					<Semaphore>$IpInstance_Slave</Semaphore>
				</Mode>
            	<Mode Name="RX_Only_Simplex_Unidirect_Master" UserName="Receive Only Master">
            		<!-- SPI is in 'Full-Duplex' Mode, but only 'Master In' line is on pinout -->
					<SignalLogicalOp Name="AND">
						<Signal Name="MISO"/> 	 
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaReceive</Semaphore>
					<Semaphore>$IpInstance_Master</Semaphore>
		</Mode>
            	<Mode Name="RX_Only_Simplex_Unidirect_Slave" UserName="Receive Only Slave">
            		<!-- SPI is in 'Full-Duplex' Mode, but only 'Slave In' line is on pinout -->
					<SignalLogicalOp Name="AND">
						<Signal Name="MOSI"/>	
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaReceive</Semaphore>
					<Semaphore>$IpInstance_Slave</Semaphore>
				</Mode>
            	<Mode Name="TX_Only_Simplex_Unidirect_Master" UserName="Transmit Only Master">
            		<!-- SPI is in 'Full-Duplex' Mode, but only 'Master Out' line is on pinout -->
					<SignalLogicalOp Name="AND">
						<Signal Name="MOSI"/>
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaTransmit</Semaphore>
					<Semaphore>$IpInstance_Master</Semaphore>
		</Mode>
            	<Mode Name="TX_Only_Simplex_Unidirect_Slave" UserName="Transmit Only Slave">
            		<!-- SPI is in 'Full-Duplex' Mode, but only 'Slave Out' line is on pinout -->
					<SignalLogicalOp Name="AND">
						<Signal Name="MISO"/>
						<Signal Name="SCK"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_DmaTransmit</Semaphore>
					<Semaphore>$IpInstance_Slave</Semaphore>
					<Semaphore>$IpInstance_Transmit</Semaphore>
				</Mode>
			</ModeLogicOperator>
			<Semaphore>$IpInstance</Semaphore>
			<Condition Diagnostic="I2S$IpNumber must be disabled" Expression="!I2S$IpNumber"/>
		</Mode>
		
		<Mode Name="NSS_Signal" UserName="Hardware NSS Signal">
			<ModeLogicOperator Name="XOR">
				<Mode Name="NSS_Signal_Hard_Input" UserName="Hardware NSS Input Signal">
					<SignalLogicalOp Name="AND">
						<Signal Name="NSS"/>
					</SignalLogicalOp>
                    <Semaphore>$IpInstance_NSSHARD_Input</Semaphore>
				</Mode>
			
				<Mode Name="NSS_Signal_Hard_Output" UserName="Hardware NSS Output Signal">
					<SignalLogicalOp Name="AND">
						<Signal Name="NSS"/>
					</SignalLogicalOp>
                    <Semaphore>$IpInstance_NSSHARD_Output</Semaphore>
                    <Condition Diagnostic="$IpInstance must be in Master mode" Expression="$IpInstance_Master"/>
				</Mode>
			</ModeLogicOperator>
			<Condition Diagnostic="$IpInstance must be have a valid Mode" Expression="$IpInstance"/>
		</Mode>
	</ModeLogicOperator>
	
    <Semaphore>$IpInstanceUsed_ForRCC</Semaphore>
	<!-- RefSignal for SPI -->
	<RefSignal IOMode="AlternateFunctionPushPullMediumSpeed" Name="MISO"/>
	<RefSignal IOMode="AlternateFunctionPushPullMediumSpeed" Name="MOSI"/>
	<RefSignal IOMode="AlternateFunctionPushPullMediumSpeed" Name="SCK"/>
	<RefSignal IOMode="AlternateFunctionPushPullMediumSpeed" Name="NSS"/>
</IP>