<?xml version="1.0" encoding="utf-8" standalone="no"?>
<IP xmlns="http://mcd.rou.st.com/modules.php?name=mcu" DBVersion="V4.0" Name="DMA" Version="STM32Cube_FW_F4_V1.16.0" IncludeFile="stm32f4xx_ll_dma.h"
    xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" ns0:schemaLocation="http://mcd.rou.st.com/modules.php?name=mcu ../../../../../../../../doc/V4/Development/Specifications/db/IP_Configs.xsd">
   
    <RefConfig Name="HAL_DMA_Init">
       <CallLibMethod Name="LL_DMA_SetChannelSelection">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
           <MethodArg Name="Channel" ParameterName="Channel"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetDataTransferDirection">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetStreamPriorityLevel">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetMode">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetPeriphIncMode">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
           <MethodArg Name="IncrementMode" ParameterName="PeriphInc"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetMemoryIncMode">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
           <MethodArg Name="IncrementMode" ParameterName="MemInc"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetPeriphSize">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
           <MethodArg Name="Size" ParameterName="PeriphDataAlignment"/>
       </CallLibMethod>
       <CallLibMethod Name="LL_DMA_SetMemorySize">
           <MethodArg Name="DMAx" ParameterName="Instance"/>
           <MethodArg Name="Stream" ParameterName="Instance"/>
           <MethodArg Name="Size" ParameterName="MemDataAlignment"/>
       </CallLibMethod>
      <IFCondition Expression = "(FIFOMode=DMA_FIFOMODE_DISABLE)">
        <CallLibMethod Name="LL_DMA_DisableFifoMode">
          <MethodArg Name="DMAx" ParameterName="Instance"/>
          <MethodArg Name="Stream" ParameterName="Instance"/>
        </CallLibMethod>
      </IFCondition>       
      <IFCondition Expression = "(FIFOMode=DMA_FIFOMODE_ENABLE)">
        <CallLibMethod Name="LL_DMA_EnableFifoMode">
          <MethodArg Name="DMAx" ParameterName="Instance"/>
          <MethodArg Name="Stream" ParameterName="Instance"/>
        </CallLibMethod>
        <CallLibMethod Name="LL_DMA_SetFIFOThreshold">
          <MethodArg Name="DMAx" ParameterName="Instance"/>
          <MethodArg Name="Stream" ParameterName="Instance"/>
          <MethodArg Name="Threshold" ParameterName="FIFOThreshold"/>
        </CallLibMethod>
        <CallLibMethod Name="LL_DMA_SetMemoryBurstxfer">
          <MethodArg Name="DMAx" ParameterName="Instance"/>
          <MethodArg Name="Stream" ParameterName="Instance"/>
          <MethodArg Name="Mburst" ParameterName="MemBurst"/>
        </CallLibMethod>
        <CallLibMethod Name="LL_DMA_SetPeriphBurstxfer">
          <MethodArg Name="DMAx" ParameterName="Instance"/>
          <MethodArg Name="Stream" ParameterName="Instance"/>
          <MethodArg Name="Pburst" ParameterName="PeriphBurst"/>
        </CallLibMethod>
      </IFCondition>
       <!--
       <CallLibMethod Name="templates/ll_dma_configtransfer.ftl" Type="Template"/>
       -->
    </RefConfig>

    <RefComponent Cclass="HAL" Cgroup="DMA" Cversion="1.16.0">
        <File Category="header" Name="Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h"/>
        <File Category="source" Name="Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma.c"/>
    </RefComponent>

    <LibMethod Comment="Select channel" Name="LL_DMA_SetChannelSelection">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Channel"/>
    </LibMethod>

    <LibMethod Comment="Set transfer direction" Name="LL_DMA_SetDataTransferDirection">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Direction"/>
    </LibMethod>

    <LibMethod Comment="Set priority level" Name="LL_DMA_SetStreamPriorityLevel">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Priority"/>
    </LibMethod>

    <LibMethod Comment="Set DMA mode" Name="LL_DMA_SetMode">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Mode"/>
    </LibMethod>

    <LibMethod Comment="Set peripheral increment mode" Name="LL_DMA_SetPeriphIncMode">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="IncrementMode"/>
    </LibMethod>

    <LibMethod Comment="Set memory increment mode" Name="LL_DMA_SetMemoryIncMode">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="IncrementMode"/>
    </LibMethod>

    <LibMethod Comment="Set peripheral data width" Name="LL_DMA_SetPeriphSize">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Size"/>
    </LibMethod>

    <LibMethod Comment="Set memory data width" Name="LL_DMA_SetMemorySize">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Size"/>
    </LibMethod>

    <LibMethod Comment="Disable FIFO mode" Name="LL_DMA_DisableFifoMode">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
    </LibMethod>

    <LibMethod Comment="Enable FIFO mode" Name="LL_DMA_EnableFifoMode">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
    </LibMethod>

    <LibMethod Comment="Set FIFO threshold" Name="LL_DMA_SetFIFOThreshold">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Threshold"/>
    </LibMethod>

    <LibMethod Comment="Enable FIFO mode and set FIFO threshold" Name="LL_DMA_ConfigFifo">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="FifoMode"/>
        <Argument AddressOf="false" GenericType="simple" Name="Threshold"/>
    </LibMethod>

    <LibMethod Comment="Set memory burst size" Name="LL_DMA_SetMemoryBurstxfer">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Mburst"/>
    </LibMethod>

    <LibMethod Comment="Set peripheral burst size" Name="LL_DMA_SetPeriphBurstxfer">
        <Argument AddressOf="false" GenericType="baseaddress" Name="DMAx" TypeName="DMA_TypeDef"/>
        <Argument AddressOf="false" GenericType="simple" Name="Stream"/>
        <Argument AddressOf="false" GenericType="simple" Name="Pburst"/>
    </LibMethod>

 </IP>
