HAL SMARTCARD Overview

Introducing SMARTCARD

group SMARTCARD_Introduction

  • This introduction is under development.

Module and files

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

Module and files diagram

Component diagram

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

@startuml



!$ppp = "SMARTCARD"

!use_ppp_ll = 1

!use_ppp_isr = 1

!$use_hal_service = 1

!$use_hal_rcc = 1

!$use_hal_dma = 1

!$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 8

   }

   interface {

      FontSize 8

   }

}

</style>



title SMARTCARD Software Component Diagram



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] -U- 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] .r.> [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 SMARTCARD module, specifying their locations, default values, and descriptions:

group SMARTCARD_Configuration_Table

Configuration inside the SMARTCARD driver

Config defines

Description

Default value

Note

USE_HAL_SMARTCARD_CLK_ENABLE_MODEL

from hal_conf.h

HAL_CLK_ENABLE_NO

Enable the gating of the peripheral clock

USE_HAL_SMARTCARD_MODULE

from hal_conf.h

1

When set, HAL SMARTCARD module is enabled

USE_HAL_SMARTCARD_GET_LAST_ERRORS

from hal_conf.h

0

Enable the get last process error

USE_HAL_SMARTCARD_USER_DATA

from hal_conf.h

0

Enable the set/get user data

USE_HAL_SMARTCARD_REGISTER_CALLBACKS

from hal_conf.h

0

Enable the register callbacks assert

USE_HAL_CHECK_PARAM

from hal_conf.h

0

Parameters (pointers or sizes) are checked in runtime

USE_HAL_CHECK_PROCESS_STATE

from hal_conf.h

0

Enable atomic access to process state check

USE_HAL_MUTEX

from hal_conf.h

0

Enable the acquire/release bus services

USE_HAL_SMARTCARD_DMA

from hal_conf.h

1

Enable the DMA feature

USE_HAL_SMARTCARD_FIFO

from hal_conf.h

1

Enable the FIFO feature

USE_ASSERT_DBG_PARAM

from PreProcessor env

NA

Enable the params assert

USE_ASSERT_DBG_STATE

from PreProcessor env

NA

Enable the state assert