123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- /*==================================================================================================
- * Project : RTD AUTOSAR 4.4
- * Platform : CORTEXM
- * Peripheral : DMA,CACHE,TRGMUX,FLEXIO
- * Dependencies : none
- *
- * Autosar Version : 4.4.0
- * Autosar Revision : ASR_REL_4_4_REV_0000
- * Autosar Conf.Variant :
- * SW Version : 1.0.0
- * Build Version : S32K1_RTD_1_0_0_HF01_D2109_ASR_REL_4_4_REV_0000_20210907
- *
- * (c) Copyright 2020-2021 NXP Semiconductors
- * All Rights Reserved.
- *
- * NXP Confidential. This software is owned or controlled by NXP and may only be
- * used strictly in accordance with the applicable license terms. By expressly
- * accepting such terms or by downloading, installing, activating and/or otherwise
- * using the software, you are agreeing that you have read, and that you agree to
- * comply with and are bound by, such license terms. If you do not agree to be
- * bound by the applicable license terms, then you may not retain, install,
- * activate or otherwise use the software.
- ==================================================================================================*/
- #ifndef FLEXIO_IP_HW_ACCESS_H
- #define FLEXIO_IP_HW_ACCESS_H
- /**
- * @file Flexio_Ip_hw_access.h
- * @version 1.0.0
- *
- * @brief AUTOSAR Mcl - Low level header of Mcl driver.
- * @details This file contains declarations of the functions defined by AutoSAR.
- *
- * @addtogroup FLEXIO_IP_DRIVER FLEXIO IP Driver
- * @{
- */
- #ifdef __cplusplus
- extern "C"{
- #endif
- /*==================================================================================================
- * INCLUDE FILES
- * 1) system and project includes
- * 2) needed interfaces from external units
- * 3) internal and external interfaces from this unit
- ==================================================================================================*/
- #include "Flexio_Mcl_Ip_Cfg_DeviceRegisters.h"
- #include "Flexio_Mcl_Ip_Cfg_Defines.h"
- /*==================================================================================================
- * SOURCE FILE VERSION INFORMATION
- ==================================================================================================*/
- #define FLEXIO_IP_HW_ACCESS_VENDOR_ID_H 43
- #define FLEXIO_IP_HW_ACCESS_MODULE_ID_H 255
- #define FLEXIO_IP_HW_ACCESS_AR_RELEASE_MAJOR_VERSION_H 4
- #define FLEXIO_IP_HW_ACCESS_AR_RELEASE_MINOR_VERSION_H 4
- #define FLEXIO_IP_HW_ACCESS_AR_RELEASE_REVISION_VERSION_H 0
- #define FLEXIO_IP_HW_ACCESS_SW_MAJOR_VERSION_H 1
- #define FLEXIO_IP_HW_ACCESS_SW_MINOR_VERSION_H 0
- #define FLEXIO_IP_HW_ACCESS_SW_PATCH_VERSION_H 0
- /*==================================================================================================
- FILE VERSION CHECKS
- ==================================================================================================*/
- /* Check if Flexio_Mcl_Ip_HwAccess.h file and Flexio_Mcl_Ip_Cfg_DeviceRegisters.h file are of the same vendor */
- #if (FLEXIO_IP_HW_ACCESS_VENDOR_ID_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_VENDOR_ID_H)
- #error "Flexio_Mcl_Ip_HwAccess.h and Flexio_Mcl_Ip_Cfg_DeviceRegisters.h have different vendor ids"
- #endif
- /* Check if Flexio_Mcl_Ip_HwAccess.h file and Flexio_Mcl_Ip_Cfg_DeviceRegisters.h file are of the same Autosar version */
- #if ((FLEXIO_IP_HW_ACCESS_AR_RELEASE_MAJOR_VERSION_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_AR_RELEASE_MAJOR_VERSION_H) || \
- (FLEXIO_IP_HW_ACCESS_AR_RELEASE_MINOR_VERSION_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_AR_RELEASE_MINOR_VERSION_H) || \
- (FLEXIO_IP_HW_ACCESS_AR_RELEASE_REVISION_VERSION_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_AR_RELEASE_REVISION_VERSION_H) \
- )
- #error "AutoSar Version Numbers of Flexio_Mcl_Ip_HwAccess.h and Flexio_Mcl_Ip_Cfg_DeviceRegisters.h are different"
- #endif
- /* Check if Flexio_Mcl_Ip_HwAccess.h file and Flexio_Mcl_Ip_Cfg_DeviceRegisters.h file are of the same Software version */
- #if ((FLEXIO_IP_HW_ACCESS_SW_MAJOR_VERSION_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_SW_MAJOR_VERSION_H) || \
- (FLEXIO_IP_HW_ACCESS_SW_MINOR_VERSION_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_SW_MINOR_VERSION_H) || \
- (FLEXIO_IP_HW_ACCESS_SW_PATCH_VERSION_H != FLEXIO_MCL_IP_CFG_DEVICEREGISTERS_SW_PATCH_VERSION_H) \
- )
- #error "Software Version Numbers of Flexio_Mcl_Ip_HwAccess.h and Flexio_Mcl_Ip_Cfg_DeviceRegisters.h are different"
- #endif
- /*==================================================================================================
- * CONSTANTS
- ==================================================================================================*/
- /*==================================================================================================
- * DEFINES AND MACROS
- ==================================================================================================*/
- /*==================================================================================================
- * ENUMS
- ==================================================================================================*/
- /* Shift clock polarity options */
- typedef enum
- {
- FLEXIO_TIMER_POLARITY_POSEDGE = 0x00U, /*!< Shift on positive edge of Shift clock */
- FLEXIO_TIMER_POLARITY_NEGEDGE = 0x01U, /*!< Shift on negative edge of Shift clock */
- } Flexio_Mcl_Ip_TimerPolarityType;
- /* Pin polarity options */
- typedef enum
- {
- FLEXIO_PIN_POLARITY_HIGH = 0x00U, /*!< Pin is active high */
- FLEXIO_PIN_POLARITY_LOW = 0x01U, /*!< Pin is active low */
- } Flexio_Mcl_Ip_PinPolarityType;
- /* Pin configuration options */
- typedef enum
- {
- FLEXIO_PIN_CONFIG_DISABLED = 0x00U, /*!< Shifter pin output disabled */
- FLEXIO_PIN_CONFIG_OPEN_DRAIN = 0x01U, /*!< Shifter pin open drain or bidirectional output enable */
- FLEXIO_PIN_CONFIG_BIDIR_OUTPUT = 0x02U, /*!< Shifter pin bidirectional output data */
- FLEXIO_PIN_CONFIG_OUTPUT = 0x03U, /*!< Shifter pin output */
- } Flexio_Mcl_Ip_PinConfigType;
- /* Shifter mode options */
- typedef enum
- {
- FLEXIO_SHIFTER_MODE_DISABLED = 0x00U,
- FLEXIO_SHIFTER_MODE_RECEIVE = 0x01U,
- FLEXIO_SHIFTER_MODE_TRANSMIT = 0x02U,
- FLEXIO_SHIFTER_MODE_MATCH_STORE = 0x04U,
- FLEXIO_SHIFTER_MODE_MATCH_CONTINUOUS = 0x05U,
- } Flexio_Mcl_Ip_ShifterModeType;
- /* Shifter input source options */
- typedef enum
- {
- FLEXIO_SHIFTER_SOURCE_PIN = 0x00U,
- FLEXIO_SHIFTER_SOURCE_SHIFTER = 0x01U,
- } Flexio_Mcl_Ip_ShifterSourceType;
- /* Read/Write mode for shifter buffer */
- typedef enum
- {
- FLEXIO_SHIFTER_RW_MODE_NORMAL = 0x00U,
- FLEXIO_SHIFTER_RW_MODE_BIT_SWAP = 0x01U,
- } Flexio_Mcl_Ip_ShifterBufferModeType;
- /* Trigger polarity */
- typedef enum
- {
- FLEXIO_TRIGGER_POLARITY_HIGH = 0x00U, /*!< Trigger is active high */
- FLEXIO_TRIGGER_POLARITY_LOW = 0x01U, /*!< Trigger is active low */
- } Flexio_Mcl_Ip_TriggerPolarityType;
- /* Trigger sources */
- typedef enum
- {
- FLEXIO_TRIGGER_SOURCE_EXTERNAL = 0x00U, /*!< External trigger selected */
- FLEXIO_TRIGGER_SOURCE_INTERNAL = 0x01U, /*!< Internal trigger selected */
- } Flexio_Mcl_Ip_TriggerSourceType;
- /* Timer mode options */
- typedef enum
- {
- FLEXIO_TIMER_MODE_DISABLED = 0x00U, /*!< Timer Disabled. */
- FLEXIO_TIMER_MODE_8BIT_BAUD = 0x01U, /*!< Dual 8-bit counters baud/bit mode. */
- FLEXIO_TIMER_MODE_8BIT_PWM = 0x02U, /*!< Dual 8-bit counters PWM mode. */
- FLEXIO_TIMER_MODE_16BIT = 0x03U, /*!< Single 16-bit counter mode. */
- FLEXIO_TIMER_MODE_16BIT_DIS = 0x04U, /*!< Single 16-bit counter disable mode. */
- FLEXIO_TIMER_MODE_8BIT_DUAL = 0x05U, /*!< Dual 8-bit counters word mode. */
- FLEXIO_TIMER_MODE_8BIT_DUAL_PWM = 0x06U, /*!< Dual 8-bit counters PWM low mode. */
- FLEXIO_TIMER_16BIT_INPUT_CAPTURE_MODE = 0x07U, /*!< Single 16-bit input capture mode. */
- } Flexio_Mcl_Ip_TimerModeType;
- /* Timer initial output options */
- typedef enum
- {
- FLEXIO_TIMER_INITOUT_ONE = 0x00U, /*!< Timer output is logic one when enabled, unaffected by timer reset. */
- FLEXIO_TIMER_INITOUT_ZERO = 0x01U, /*!< Timer output is logic zero when enabled, unaffected by timer reset. */
- FLEXIO_TIMER_INITOUT_ONE_RESET = 0x02U, /*!< Timer output is logic one when enabled and on timer reset. */
- FLEXIO_TIMER_INITOUT_ZERO_RESET = 0x03U, /*!< Timer output is logic zero when enabled and on timer reset. */
- } Flexio_Mcl_Ip_TimerOutputType;
- /* Timer decrement options */
- typedef enum
- {
- FLEXIO_TIMER_DECREMENT_CLK_SHIFT_TMR = 0x00U, /*!< Decrement counter on FlexIO clock, Shift clock equals Timer output. */
- FLEXIO_TIMER_DECREMENT_TRG_SHIFT_TMR = 0x01U, /*!< Decrement counter on Trigger input (both edges), Shift clock equals Timer output. */
- FLEXIO_TIMER_DECREMENT_PIN_SHIFT_PIN = 0x02U, /*!< Decrement counter on Pin input (both edges), Shift clock equals Pin input. */
- FLEXIO_TIMER_DECREMENT_TRG_SHIFT_TRG = 0x03U, /*!< Decrement counter on Trigger input (both edges), Shift clock equals Trigger input. */
- } Flexio_Mcl_Ip_TimerDecrementType;
- /* Timer reset options */
- typedef enum
- {
- FLEXIO_TIMER_RESET_NEVER = 0x00U, /*!< Timer never reset. */
- FLEXIO_TIMER_RESET_PIN_OUT = 0x02U, /*!< Timer reset on Timer Pin equal to Timer Output. */
- FLEXIO_TIMER_RESET_TRG_OUT = 0x03U, /*!< Timer reset on Timer Trigger equal to Timer Output. */
- FLEXIO_TIMER_RESET_PIN_RISING = 0x04U, /*!< Timer reset on Timer Pin rising edge. */
- FLEXIO_TIMER_RESET_TRG_RISING = 0x06U, /*!< Timer reset on Trigger rising edge. */
- FLEXIO_TIMER_RESET_TRG_BOTH = 0x07U, /*!< Timer reset on Trigger rising or falling edge. */
- } Flexio_Mcl_Ip_TimerResetType;
- /* Timer disable options */
- typedef enum
- {
- FLEXIO_TIMER_DISABLE_NEVER = 0x00U, /*!< Timer never disabled. */
- FLEXIO_TIMER_DISABLE_TIM_DISABLE = 0x01U, /*!< Timer disabled on Timer N-1 disable. */
- FLEXIO_TIMER_DISABLE_TIM_CMP = 0x02U, /*!< Timer disabled on Timer compare. */
- FLEXIO_TIMER_DISABLE_TIM_CMP_TRG_LOW = 0x03U, /*!< Timer disabled on Timer compare and Trigger Low. */
- FLEXIO_TIMER_DISABLE_PIN = 0x04U, /*!< Timer disabled on Pin rising or falling edge. */
- FLEXIO_TIMER_DISABLE_PIN_TRG_HIGH = 0x05U, /*!< Timer disabled on Pin rising or falling edge provided Trigger is high. */
- FLEXIO_TIMER_DISABLE_TRG = 0x06U, /*!< Timer disabled on Trigger falling edge. */
- } Flexio_Mcl_Ip_TimerDisableType;
- /* Timer disable options */
- typedef enum
- {
- FLEXIO_TIMER_ENABLE_ALWAYS = 0x00U, /*!< Timer always enabled. */
- FLEXIO_TIMER_ENABLE_TIM_ENABLE = 0x01U, /*!< Timer enabled on Timer N-1 enable. */
- FLEXIO_TIMER_ENABLE_TRG_HIGH = 0x02U, /*!< Timer enabled on Trigger high. */
- FLEXIO_TIMER_ENABLE_TRG_PIN_HIGH = 0x03U, /*!< Timer enabled on Trigger high and Pin high. */
- FLEXIO_TIMER_ENABLE_PIN_POSEDGE = 0x04U, /*!< Timer enabled on Pin rising edge. */
- FLEXIO_TIMER_ENABLE_PIN_POSEDGE_TRG_HIGH = 0x05U, /*!< Timer enabled on Pin rising edge and Trigger high. */
- FLEXIO_TIMER_ENABLE_TRG_POSEDGE = 0x06U, /*!< Timer enabled on Trigger rising edge. */
- FLEXIO_TIMER_ENABLE_TRG_EDGE = 0x07U, /*!< Timer enabled on Trigger rising or falling edge. */
- } Flexio_Mcl_Ip_TimerEnableType;
- /* Timer stop bit options */
- typedef enum
- {
- FLEXIO_TIMER_STOP_BIT_DISABLED = 0x00U, /*!< Stop bit disabled. */
- FLEXIO_TIMER_STOP_BIT_TIM_CMP = 0x01U, /*!< Stop bit is enabled on timer compare. */
- FLEXIO_TIMER_STOP_BIT_TIM_DIS = 0x02U, /*!< Stop bit is enabled on timer disable. */
- FLEXIO_TIMER_STOP_BIT_TIM_CMP_DIS = 0x03U, /*!< Stop bit is enabled on timer compare and disable. */
- } Flexio_Mcl_Ip_TimerStopType;
- /* Timer stop bit options - for Transmit, Receive or Match Store modes only */
- typedef enum
- {
- FLEXIO_SHIFTER_STOP_BIT_DISABLED = 0x00U,
- FLEXIO_SHIFTER_STOP_BIT_0 = 0x02U,
- FLEXIO_SHIFTER_STOP_BIT_1 = 0x03U,
- } Flexio_Mcl_Ip_ShifterStopType;
- /* Timer start bit options - for Transmit, Receive or Match Store modes only */
- typedef enum
- {
- FLEXIO_SHIFTER_START_BIT_DISABLED = 0x00U,
- FLEXIO_SHIFTER_START_BIT_DISABLED_SH = 0x01U,
- FLEXIO_SHIFTER_START_BIT_0 = 0x02U,
- FLEXIO_SHIFTER_START_BIT_1 = 0x03U,
- } Flexio_Mcl_Ip_ShifterStartType;
- /* Timer start bit options */
- typedef enum
- {
- FLEXIO_TIMER_START_BIT_DISABLED = 0x00U, /*!< Start bit disabled. */
- FLEXIO_TIMER_START_BIT_ENABLED = 0x01U, /*!< Start bit enabled. */
- } Flexio_Mcl_Ip_TimerStartType;
- /*==================================================================================================
- * STRUCTURES AND OTHER TYPEDEFS
- ==================================================================================================*/
- /*==================================================================================================
- * GLOBAL VARIABLE DECLARATIONS
- ==================================================================================================*/
- /*==================================================================================================
- * FUNCTION PROTOTYPES
- ==================================================================================================*/
- #define MCL_START_SEC_CODE
- #include "Mcl_MemMap.h"
- void Flexio_Mcl_Ip_SetSoftwareReset(FLEXIO_Type *baseAddr, boolean enable);
- void Flexio_Mcl_Ip_SetDebugEnable(FLEXIO_Type *baseAddr, boolean enable);
- void Flexio_Mcl_Ip_SetEnable(FLEXIO_Type *baseAddr, boolean enable);
- boolean Flexio_Mcl_Ip_GetShifterStatus(const FLEXIO_Type *baseAddr, uint8 shifter);
- uint32 Flexio_Mcl_Ip_GetAllShifterStatus(const FLEXIO_Type *baseAddr);
- void Flexio_Mcl_Ip_ClearShifterStatus(FLEXIO_Type *baseAddr, uint8 shifter);
- #if (FLEXIO_MCL_IP_PIN_STS_IS_AVAILABLE == STD_ON)
- uint32 Flexio_Mcl_Ip_GetAllPinsStatus(const FLEXIO_Type *baseAddr);
- #endif
- boolean Flexio_Mcl_Ip_GetShifterErrorStatus(const FLEXIO_Type *baseAddr, uint8 shifter);
- uint32 Flexio_Mcl_Ip_GetAllShifterErrorStatus(const FLEXIO_Type *baseAddr);
- void Flexio_Mcl_Ip_ClearShifterErrorStatus(FLEXIO_Type *baseAddr, uint8 shifter);
- boolean Flexio_Mcl_Ip_GetTimerStatus(const FLEXIO_Type *baseAddr, uint8 timer);
- boolean Flexio_Mcl_Ip_GetTimerInterruptEnable(const FLEXIO_Type *baseAddr, uint8 timer);
- uint32 Flexio_Mcl_Ip_GetAllTimerStatus(const FLEXIO_Type *baseAddr);
- void Flexio_Mcl_Ip_ClearTimerStatus(FLEXIO_Type *baseAddr, uint8 timer);
- uint32 Flexio_Mcl_Ip_GetAllShifterInterrupt(const FLEXIO_Type *baseAddr);
- uint32 Flexio_Mcl_Ip_GetAllShifterErrorInterrupt(const FLEXIO_Type *baseAddr);
- void Flexio_Mcl_Ip_SetShifterErrorInterrupt(FLEXIO_Type *baseAddr, uint8 interruptMask, boolean enable);
- void Flexio_Mcl_Ip_SetShifterInterrupt(FLEXIO_Type *baseAddr, uint8 interruptMask, boolean enable);
- void Flexio_Mcl_Ip_SetShifterDMARequest(FLEXIO_Type *baseAddr, uint8 requestMask, boolean enable);
- uint32 Flexio_Mcl_Ip_GetAllTimerInterrupt(const FLEXIO_Type *baseAddr);
- void Flexio_Mcl_Ip_SetTimerInterrupt(FLEXIO_Type *baseAddr, uint8 interruptMask, boolean enable);
- #if (FLEXIO_MCL_IP_TIMERSDEN_IS_AVAILABLE == STD_ON)
- void Flexio_Mcl_Ip_SetTimerDMARequest(FLEXIO_Type *baseAddr, uint8 requestMask, boolean enable);
- #endif
- void Flexio_Mcl_Ip_Init(FLEXIO_Type *baseAddr);
- #if (FLEXIO_MCL_IP_PIN_STS_IS_AVAILABLE == STD_ON)
- void Flexio_Mcl_Ip_ClearPinStatus(FLEXIO_Type *baseAddr, uint8 pin);
- uint32 Flexio_Mcl_Ip_GetAllPinsInterrupt(const FLEXIO_Type *baseAddr);
- #endif
- #define MCL_STOP_SEC_CODE
- #include "Mcl_MemMap.h"
- #ifdef __cplusplus
- }
- #endif
- /** @} */
- #endif /* FLEXIO_IP_HW_ACCESS_H */
|