HAL LTDC Overview

Introducing LTDC

group LTDC_Introduction

  • This introduction is under development.

Module and files

The following diagram illustrates the LTDC module and its associated files.

Module and files diagram

Component diagram

The following diagram illustrates the software components involved in the LTDC module. It shows the interactions between the user application, HAL drivers, low-level drivers, and the hardware components.

@startuml

!$ppp = "LTDC"

!use_ppp_ll = 0

!use_ppp_isr = 1

!$use_hal_service = 1

!$use_hal_rcc = 1

!$use_hal_dma = 0

!$hal_api_itf = "HAL " + $ppp + " API"

!$appli_itf = "User Callback"

!$ppp_name = "HAL_"+$ppp

!$ppp_ISR  = $ppp+" ISR"

!$ll_ppp   = "LL_"+$ppp

!$hal_dma_itf = "HAL_DMA_StartDirectXfer()\nHAL_DMA_Abort_IT"

!$hal_rcc_itf = "\t\t\t\tGetClockFreq()\n\t\t\t\tHAL_RCC_"+$ppp+"_EnableClock()"

!$hal_ppp_itf = "DMA CallBacks\nDMA Half transfer complete CallBack\nError CallBacks"

!$hal_generic_itf = "HAL_GetTick()"

!$ll_ppp_itf = "LL " + $ppp +" API"

!$ppp_xIRQ = $ppp+"x_IRQ"

<style>

componentDiagram {

   arrow {

      FontSize 12

   }

   interface {

      FontSize 8

   }

}

</style>

title $ppp Software Component Diagram whitout <<Core Layer>>

Package "Application Layer" #DarkMagenta {

  component [Appli] 

  interface "$appli_itf" as APPLI_Interface

  [Appli] -r- APPLI_Interface

}

package "HAL" #DarkOrange {

    [$ppp_name]

    !if ($use_hal_dma == 1)

      interface "$hal_ppp_itf" as HAL_PPP_Interface

      [$ppp_name] -d- HAL_PPP_Interface

    !endif  

    interface "$hal_api_itf" as HAL_PPP_APPLI_Interface

    [$ppp_name] -u- HAL_PPP_APPLI_Interface

    

    !if ($use_hal_service == 1)

      [HAL_SERVICE]

      interface "$hal_generic_itf" as HAL_Service_Interface

      [HAL_SERVICE] -r- HAL_Service_Interface

      [$ppp_name] -l-( HAL_Service_Interface

    !endif  

    

    !if ($use_hal_dma == 1)

      [HAL_DMA]

      interface "$hal_dma_itf" as HAL_DMA_Interface

      [HAL_DMA] -u- HAL_DMA_Interface

      [HAL_DMA] -u-( HAL_PPP_Interface

      [$ppp_name] --( HAL_DMA_Interface

    !endif

    !if ($use_hal_rcc == 1)

      [HAL_RCC]

      interface "$hal_rcc_itf" as HAL_RCC_Interface

      [HAL_RCC] -l- HAL_RCC_Interface

      [$ppp_name] -r-( HAL_RCC_Interface

    !endif

    

}

[Appli] -d-( HAL_PPP_APPLI_Interface

[$ppp_name] -u-( APPLI_Interface 

package "Low Layer" #Technology {

    !if (use_ppp_ll == 1)

      [$ll_ppp]

      interface "$ll_ppp_itf" as LL_PPP_Interface

      [$ll_ppp]  -u- LL_PPP_Interface

    !endif  

    interface "$ppp_ISR" as PPP_ISR

    

    [$ppp_ISR] -r- PPP_ISR

    [CMSIS-Devices]

    [$ppp_ISR]

    !if ($use_hal_dma == 1)

      [DMA ISR]

      interface "DMA ISR" as DMA_ISR

      [DMA ISR] -u- DMA_ISR

    !endif  

    

}

package "HW" #LightCyan {

    [STM32_HW]

    interface "$ppp_xIRQ" as PPPx_IRQ

    [STM32_HW] -u- PPPx_IRQ

    !if ($use_hal_dma == 1)

      interface "DMAx_IRQ_Ch" as DMA_IRQ_CH

      [STM32_HW] -u- DMA_IRQ_CH

      [DMA ISR] -d-( DMA_IRQ_CH

      [HAL_DMA] --( DMA_ISR

    !endif  

}

!if (use_ppp_ll == 1)

    [$ppp_name] -d-( LL_PPP_Interface

    [$ll_ppp] .l.> [CMSIS-Devices]: $ppp register def

    [STM32_HW] <.u. [$ll_ppp] : $ppp registers R/W

!else

    [$ppp_name] .d.> [CMSIS-Devices]: $ppp register def 

    [STM32_HW] <.l. [$ppp_name] : $ppp registers R/W  

!endif    

[$ppp_ISR] -d-( PPPx_IRQ

[$ppp_name] -d-( PPP_ISR

@enduml

Configuration table

The following table lists the configuration defines for the HAL LTDC module, specifying their locations, default values, and descriptions:

group LTDC_Configuration_Table

Configuration inside the LTDC driver

Config defines

Description

Default value

Note

USE_HAL_LTDC_MODULE

from hal_conf.h

1

When set, HAL LTDC module is enabled

USE_HAL_LTDC_REGISTER_CALLBACKS

from hal_conf.h

0

When set, enable the register callbacks

USE_HAL_LTDC_CLK_ENABLE_MODEL

from hal_conf.h

HAL_CLK_ENABLE_NO

Enable the gating of the peripheral clock

USE_HAL_CHECK_PARAM

from hal_conf.h

0

When set, the vital parameters (pointers or sizes) are checked in runtime .

USE_ASSERT_DBG_PARAM

from PreProcessor env

None

When defined, enable the params assert

USE_ASSERT_DBG_STATE

from PreProcessor env

None

When defined, enable the state assert

USE_HAL_LTDC_USER_DATA

from hal_conf.h

0

When set, user data is defined in handle

USE_HAL_LTDC_GET_LAST_ERRORS

from hal_conf.h

0

When set, user can get the last error code