/*================================================================================================== * Project : RTD AUTOSAR 4.4 * Platform : CORTEXM * Peripheral : ADC * 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 ADC_H #define ADC_H /** * @file Adc.h * @implements Adc.h_Artifact * @addtogroup adc_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 "Mcal.h" #include "Adc_Cfg.h" #include "Adc_Types.h" /*================================================================================================== * SOURCE FILE VERSION INFORMATION ==================================================================================================*/ #define ADC_VENDOR_ID 43 #define ADC_MODULE_ID 123 #define ADC_AR_RELEASE_MAJOR_VERSION 4 #define ADC_AR_RELEASE_MINOR_VERSION 4 #define ADC_AR_RELEASE_REVISION_VERSION 0 #define ADC_SW_MAJOR_VERSION 1 #define ADC_SW_MINOR_VERSION 0 #define ADC_SW_PATCH_VERSION 0 /*================================================================================================== * FILE VERSION CHECKS ==================================================================================================*/ #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK /* Check if source file and Mcal header file are of the same AutoSar version */ #if ((ADC_AR_RELEASE_MAJOR_VERSION != MCAL_AR_RELEASE_MAJOR_VERSION) || \ (ADC_AR_RELEASE_MINOR_VERSION != MCAL_AR_RELEASE_MINOR_VERSION) \ ) #error "AutoSar Version Numbers of Adc.h and Mcal.h are different" #endif #endif /* Check if source file and ADC configuration header file are of the same vendor */ #if (ADC_VENDOR_ID != ADC_VENDOR_ID_CFG) #error "Adc.h and Adc_Cfg.h have different vendor ids" #endif /* Check if source file and ADC configuration header file are of the same Autosar version */ #if ((ADC_AR_RELEASE_MAJOR_VERSION != ADC_AR_RELEASE_MAJOR_VERSION_CFG) || \ (ADC_AR_RELEASE_MINOR_VERSION != ADC_AR_RELEASE_MINOR_VERSION_CFG) || \ (ADC_AR_RELEASE_REVISION_VERSION != ADC_AR_RELEASE_REVISION_VERSION_CFG) \ ) #error "AutoSar Version Numbers of Adc.h and Adc_Cfg.h are different" #endif /* Check if source file and ADC configuration header file are of the same software version */ #if ((ADC_SW_MAJOR_VERSION != ADC_SW_MAJOR_VERSION_CFG) || \ (ADC_SW_MINOR_VERSION != ADC_SW_MINOR_VERSION_CFG) || \ (ADC_SW_PATCH_VERSION != ADC_SW_PATCH_VERSION_CFG) \ ) #error "Software Version Numbers of Adc.h and Adc_Cfg.h are different" #endif /* Check if source file and Adc Types header file are of the same vendor */ #if (ADC_VENDOR_ID != ADC_VENDOR_ID_TYPES_H) #error "Adc.h and Adc_Types.h have different vendor ids" #endif /* Check if source file and Adc Types header file are of the same Autosar version */ #if ((ADC_AR_RELEASE_MAJOR_VERSION != ADC_AR_RELEASE_MAJOR_VERSION_TYPES_H) || \ (ADC_AR_RELEASE_MINOR_VERSION != ADC_AR_RELEASE_MINOR_VERSION_TYPES_H) || \ (ADC_AR_RELEASE_REVISION_VERSION != ADC_AR_RELEASE_REVISION_VERSION_TYPES_H) \ ) #error "AutoSar Version Numbers of Adc.h and Adc_Types.h are different" #endif /* Check if source file and Adc Types header file are of the same software version */ #if ((ADC_SW_MAJOR_VERSION != ADC_SW_MAJOR_VERSION_TYPES_H) || \ (ADC_SW_MINOR_VERSION != ADC_SW_MINOR_VERSION_TYPES_H) || \ (ADC_SW_PATCH_VERSION != ADC_SW_PATCH_VERSION_TYPES_H) \ ) #error "Software Version Numbers of Adc.h and Adc_Types.h are different" #endif /*================================================================================================== * CONSTANTS ==================================================================================================*/ /*================================================================================================== * DEFINES AND MACROS ==================================================================================================*/ /** * Development errors. * The following errors shall be detectable by the ADC module depending on its * configuration (development / production mode). * * All error codes * */ /** * @brief API service used without Adc module initialization. * */ #define ADC_E_UNINIT ((uint8)0x0AU) /** * @brief Adc module is busy with a running operation. * */ #define ADC_E_BUSY ((uint8)0x0BU) /** * @brief Adc module is in idle state. * */ #define ADC_E_IDLE ((uint8)0x0CU) /** * @brief The ADC module is already initialized. * */ #define ADC_E_ALREADY_INITIALIZED ((uint8)0x0DU) /** * @brief The ADC module is not properly configured. * */ #define ADC_E_PARAM_CONFIG ((uint8)0x0EU) /** * @brief API service is called using an invalid pointer (e.g. the pointer should not be NULL). * */ #define ADC_E_PARAM_POINTER ((uint8)0x14U) /** * @brief API service used with an invalid ADC group. * */ #define ADC_E_PARAM_GROUP ((uint8)0x15U) /** * @brief API service used with an invalid ADC Conversion Mode. * */ #define ADC_E_WRONG_CONV_MODE ((uint8)0x16U) /** * @brief API service used with an invalid ADC Trigger Source. * */ #define ADC_E_WRONG_TRIGG_SRC ((uint8)0x17U) /** * @brief Check the notification capability of a group. * */ #define ADC_E_NOTIF_CAPABILITY ((uint8)0x18U) /** * @brief API service used without initializing the buffer. * */ #define ADC_E_BUFFER_UNINIT ((uint8)0x19U) #if (ADC_POWER_STATE_SUPPORTED == STD_ON) /** * @brief One or more ADC group/channel not in IDLE state. * */ #define ADC_E_NOT_DISENGAGED ((uint8)0x1AU) /** * @brief Unsupported power state request. * */ #define ADC_E_POWER_STATE_NOT_SUPPORTED ((uint8)0x1BU) /** * @brief Requested power state can not be reached directly. * */ #define ADC_E_TRANSITION_NOT_POSSIBLE ((uint8)0x1CU) /** * @brief ADC not prepared for target power state. * */ #define ADC_E_PERIPHERAL_NOT_PREPARED ((uint8)0x1DU) #endif /* (ADC_POWER_STATE_SUPPORTED == STD_ON) */ /** * @brief The Adc_StartGroupConversion and Adc_EnableHardwareTrigger services can not queue another conversion (queue is full) */ #define ADC_E_QUEUE_FULL ((uint8)0x20U) #if (ADC_SET_HW_UNIT_POWER_MODE_API == STD_ON) /** * @brief An error occurred when the Adc_SetHwUnitPowerMode services is used. * */ #define ADC_E_SET_HW_UNIT_POWER_MODE ((uint8)0x21U) #endif #if (ADC_ENABLE_CTUTRIG_NONAUTO_API == STD_ON) /** * @brief Wrong trigger source to be used for the group. * */ #define ADC_E_PARAM_TRIGGER ((uint8)0x22U) #endif #if (ADC_ENABLE_CH_DISABLE_CH_NONAUTO_API == STD_ON) /** * @brief Adc_EnableChannel or Adc_DisableChannel services called with a wrong channel. * */ #define ADC_E_WRONG_ENABLE_CH_DISABLE_CH_GROUP ((uint8)0x23U) /** * @brief Adc_EnableChannel or Adc_DisableChannel services called with a wrong channel identifier (ID). * */ #define ADC_E_WRONG_ENABLE_CH_DISABLE_CH_ID ((uint8)0x24U) #endif #if (ADC_ENABLE_CONFIGURE_THRESHOLD_NONAUTO_API == STD_ON) /** * @brief Adc_ConfigureThreshold service is called using wrong values. * */ #define ADC_E_WRONG_CONF_THRHLD_VALUE ((uint8)0x25U) #endif /** * @brief API service called using a wrong ADC unit. * */ #define ADC_E_PARAM_UNIT ((uint8)0x26U) #if (ADC_CTU_CONTROL_MODE_EXTRA_APIS == STD_ON) /** * @brief API service called using a wrong CTU trigger. * */ #define ADC_E_WRONG_CTU_TRIGGER ((uint8)0x28U) /** * @brief API service called using a wrong CTU CLCR trigger. * */ #define ADC_E_WRONG_CTU_CLCR_TRIGGER ((uint8)0x29U) #endif #if (ADC_DUAL_CLOCK_MODE == STD_ON) /** * @brief Adc_SetClockMode service called using an invalid clock mode. * */ #define ADC_E_INVALID_CLOCK_MODE ((uint8)0x29U) #endif #if (ADC_SETCHANNEL_API == STD_ON) /** * @brief Adc_SetChannel service called using an invalid channel list. * */ #define ADC_E_PARAM_CHANNEL ((uint8)0x2AU) #endif /** * @brief An error occurred if the timeout counter variable has expired when checking status flags. * */ #define ADC_E_TIMEOUT ((uint8)0x2BU) #if (ADC_ENABLE_CTU_CONTROL_MODE_API == STD_ON) /** * @brief Error when a function which works only in CTU Control Mode is called when CTU control mode is disabled. * */ #define ADC_E_CONTROL_MODE_DISABLED ((uint8)0x30U) #endif /* (ADC_ENABLE_CTU_CONTROL_MODE_API == STD_ON) */ #define ADC_E_BUFFER_UNINIT_LIST ((uint32)0x00000001U) #define ADC_E_WRONG_TRIGG_SRC_LIST ((uint32)0x00000002U) #define ADC_E_QUEUE_FULL_LIST ((uint32)0x00000004U) #define ADC_E_WRONG_CONV_MODE_LIST ((uint32)0x00000008U) #if (ADC_ENABLE_CH_DISABLE_CH_NONAUTO_API == STD_ON) #define ADC_E_WRONG_ENABLE_CH_DISABLE_CH_GROUP_LIST ((uint32)0x00000010U) #define ADC_E_WRONG_ENABLE_CH_DISABLE_CH_ID_LIST ((uint32)0x00000020U) #endif /* (ADC_ENABLE_CH_DISABLE_CH_NONAUTO_API == STD_ON) */ /** All AUTOSAR API's service IDs */ /** * @brief API service ID for Adc_Init function * */ #define ADC_INIT_ID 0x00U /** * @brief API service ID for Adc_DeInit function * */ #define ADC_DEINIT_ID 0x01U /** * @brief API service ID for Adc_StartGroupConversion function * */ #define ADC_STARTGROUPCONVERSION_ID 0x02U /** * @brief API service ID for Adc_StopGroupConversion function * */ #define ADC_STOPGROUPCONVERSION_ID 0x03U /** * @brief API service ID for Adc_ReadGroup function * */ #define ADC_VALUEREADGROUP_ID 0x04U /** * @brief API service ID for Adc_EnableHardwareTrigger function * */ #define ADC_ENABLEHARDWARETRIGGER_ID 0x05U /** * @brief API service ID for Adc_DisableHardwareTrigger function * */ #define ADC_DISABLEHARDWARETRIGGER_ID 0x06U /** * @brief API service ID for Adc_EnableGroupNotification function * */ #define ADC_ENABLEGROUPNOTIFICATION_ID 0x07U /** * @brief API service ID for Adc_DisableGroupNotification function * */ #define ADC_DISABLEGROUPNOTIFICATION_ID 0x08U /** * @brief API service ID for Adc_GetGroupStatus function * */ #define ADC_GETGROUPSTATUS_ID 0x09U /** * @brief API service ID for Adc_GetVersionInfo function * */ #define ADC_GETVERSIONINFO_ID 0x0AU /** * @brief API service ID for Adc_GetStreamLastPointer function * */ #define ADC_GETSTREAMLASTPOINTER_ID 0x0BU /** * @brief API service ID for Adc_SetupResultBuffer function * */ #define ADC_SETUPRESULTBUFFER_ID 0x0CU #if (ADC_POWER_STATE_SUPPORTED == STD_ON) /** * @brief API service ID for Adc_SetPowerState function * */ #define ADC_SETPOWERSTATE_ID 0x10U /** * @brief API service ID for Adc_GetCurrentPowerState function * */ #define ADC_GETCURRENTPOWERSTATE_ID 0x11U /** * @brief API service ID for Adc_GetTargetPowerState function * */ #define ADC_GETTARGETPOWERSTATE_ID 0x12U /** * @brief API service ID for Adc_PreparePowerState function * */ #define ADC_PREPAREPOWERSTATE_ID 0x13U #endif /* (ADC_POWER_STATE_SUPPORTED == STD_ON) */ /** * All Autosar Extension API's service IDs ** NOTE: Parameters used when raising an error/exception */ #if (ADC_ENABLE_CTUTRIG_NONAUTO_API == STD_ON) /** * @brief API service ID for Adc_HwResultReadGroup function * */ #define ADC_HWRESULTREADGROUP_ID 0x20U /** * @brief API service ID for Adc_EnableCTUTrigge function * */ #define ADC_ENABLECTUTRIGGER_ID 0x21U /** * @brief API service ID for Adc_DisableCTUTrigger function * */ #define ADC_DISABLECTUTRIGGER_ID 0x22U #endif #if (ADC_SET_HW_UNIT_POWER_MODE_API == STD_ON) /** * @brief API service ID for Adc_SetHwUnitPowerMode function * */ #define ADC_SET_HW_UNIT_POWER_MODE_ID 0x23U #if (ADC_BCTU_AVAILABLE == STD_ON) /** * @brief API service ID for Adc_CtuSetPowerMode function * */ #define ADC_CTU_SET_POWER_MODE_ID 0x24U #endif /* (ADC_BCTU_AVAILABLE == STD_ON) */ #endif /* (ADC_SET_HW_UNIT_POWER_MODE_API == STD_ON) */ #if (ADC_DUAL_CLOCK_MODE == STD_ON) /** * @brief API service ID for Adc_SetClockMode function * */ #define ADC_SETCLOCKMODE_ID 0x25U #endif #if (ADC_ENABLE_CH_DISABLE_CH_NONAUTO_API == STD_ON) /** * @brief API service ID for Adc_EnableChannel function * */ #define ADC_ENABLE_CHANNEL_ID 0x26U /** * @brief API service ID for Adc_DisableChannel function * */ #define ADC_DISABLE_CHANNEL_ID 0x27U #endif #if (ADC_GET_INJECTED_CONVERSION_STATUS_API == STD_ON) /** * @brief API service ID for Adc_GetInjectedConversionStatus function * */ #define ADC_GETINJECTEDCONVERSIONSTATUS_ID 0x28U #endif #if (ADC_CALIBRATION == STD_ON) /** * @brief API service ID for Adc_Calibrate function * */ #define ADC_CALIBRATE_ID 0x29U #endif #if (ADC_SELF_TEST == STD_ON) #define ADC_SELFTEST_ID 0x2AU #endif #if (ADC_ENABLE_CONFIGURE_THRESHOLD_NONAUTO_API == STD_ON) /** * @brief API service ID for Adc_ConfigureThreshold function * */ #define ADC_CONFIGURE_THRESHOLD_ID 0x2BU #endif #if (ADC_CTU_CONTROL_MODE_EXTRA_APIS == STD_ON) /** * @brief API service ID for Adc_CtuWriteTriggerEnableMask function * */ #define CTU_SET_WRITE_TRIG_EN_MASK_ID (0x2CU) /** * @brief API service ID for Adc_CtuSetTriggerEnable function * */ #define CTU_SET_TRIGGER_ENABLE_ID (0x2DU) /** * @brief API service ID for Adc_CtuSetTriggerAdcCmdAddress function * */ #define CTU_SET_TRIGGER_ADC_CMD_ADDRESS_ID (0x2EU) /** * @brief API service ID for Adc_CtuSetTriggerCompare function * */ #define CTU_SET_TRIGGER_COMPARE_ID (0x2FU) #endif #if (ADC_SETCHANNEL_API == STD_ON) /** * @brief API service ID for Adc_SetChannel function * */ #define ADC_SETCHANNEL_ID (0x30U) #endif #if (ADC_ENABLE_CTU_CONTROL_MODE_API == STD_ON) /** * @brief API service ID for Adc_EnableCtuControlMode function * */ #define ADC_ENABLE_CTU_CONTROL_MODE_ID (0x32U) /** * @brief API service ID for Adc_DisableCtuControlMode function * */ #define ADC_DISABLE_CTU_CONTROL_MODE_ID (0x33U) #define ADC_CTU_ENABLE_HW_TRIGGER_ID (0x34U) #define ADC_CTU_DISABLE_HW_TRIGGER_ID (0x35U) #define ADC_CTU_START_CONVERSION_ID (0x36U) #define ADC_CTU_READ_CONV_DATA_ID (0x37U) #define ADC_CTU_READ_CONV_RESULT_ID (0x38U) #define ADC_CTU_READ_FIFO_DATA_ID (0x39U) #define ADC_CTU_READ_FIFO_RESULT_ID (0x3AU) #define ADC_CTU_SET_FIFO_WATERMARK_ID (0x3BU) #define ADC_CTU_ENABLE_NOTIFICATION_ID (0x3CU) #define ADC_CTU_DISABLE_NOTIFICATION_ID (0x3DU) #define ADC_CTU_SET_LIST_POINTER_ID (0x3EU) #define ADC_CTU_SET_LIST_ID (0x3FU) #define ADC_CTU_STOP_LOOP_CONVERSION_ID (0x40U) #define ADC_CTU_MASTER_RELOAD_ID (0x41U) #endif /* (ADC_ENABLE_CTU_CONTROL_MODE_API == STD_ON) */ #if (ADC_ENABLE_READ_RAW_DATA_API == STD_ON) #define ADC_ENABLE_READ_RAW_DATA_ID (0x42U) #endif /* (ADC_ENABLE_READ_RAW_DATA_API == STD_ON) */ #ifdef ADC_WDG_SUPPORTED #define ADC_ENABLEWDGNOTIFICATION_ID (0x43U) #define ADC_DISABLEWDGNOTIFICATION_ID (0x44U) #endif /* ADC_WDG_SUPPORTED */ #if (ADC_ENABLE_TEMPSENSE_API == STD_ON) #define ADC_TEMPSENSE_CALCULATE_TEMP_ID (0x4AU) #define ADC_TEMPSENSE_GET_TEMP_ID (0x4BU) #endif /* (ADC_ENABLE_TEMPSENSE_API == STD_ON) */ /** * @brief Mask used to verify the DATA registers content. */ #if (ADC_ENABLE_LIMIT_CHECK == STD_ON) #define ADC_DATA_MASK_U16 (0xFFFFU) #endif /* (ADC_ENABLE_LIMIT_CHECK == STD_ON) */ /*================================================================================================== * ENUMS ==================================================================================================*/ /*================================================================================================== STRUCTURES AND OTHER TYPEDEFS ==================================================================================================*/ /*================================================================================================== GLOBAL VARIABLE DECLARATIONS ==================================================================================================*/ #define ADC_START_SEC_VAR_CLEARED_UNSPECIFIED #include "Adc_MemMap.h" /** * @brief Used to point the configuration structure. */ extern const Adc_ConfigType * Adc_pCfgPtr[ADC_MAX_PARTITIONS]; #if (ADC_DUAL_CLOCK_MODE == STD_ON) #if (ADC_SET_ADC_CONV_TIME_ONCE == STD_OFF) /** * @brief Clock mode in use */ extern Adc_SelectPrescalerType Adc_eClockMode[ADC_MAX_PARTITIONS]; #endif /*if (ADC_SET_ADC_CONV_TIME_ONCE == STD_OFF)*/ #endif /*if (ADC_DUAL_CLOCK_MODE == STD_ON)*/ extern Adc_GroupStatusType Adc_aGroupStatus[ADC_MAX_GROUPS]; extern Adc_UnitStatusType Adc_aUnitStatus[ADC_MAX_HW_UNITS]; #if (ADC_SETCHANNEL_API == STD_ON) extern Adc_RuntimeGroupChannelType Adc_aRuntimeGroupChannel[ADC_MAX_GROUPS]; #endif /*(ADC_SETCHANNEL_API == STD_ON)*/ #define ADC_STOP_SEC_VAR_CLEARED_UNSPECIFIED #include "Adc_MemMap.h" #if (ADC_PRECOMPILE_SUPPORT == STD_ON) #define ADC_START_SEC_CONFIG_DATA_UNSPECIFIED #include "Adc_MemMap.h" extern const Adc_ConfigType * const Adc_ConfigVariantPredefined[ADC_MAX_PARTITIONS]; #define ADC_STOP_SEC_CONFIG_DATA_UNSPECIFIED #include "Adc_MemMap.h" #else #define ADC_START_SEC_CONST_UNSPECIFIED #include "Adc_MemMap.h" ADC_CONFIG_EXT #define ADC_STOP_SEC_CONST_UNSPECIFIED #include "Adc_MemMap.h" #endif /* (ADC_PRECOMPILE_SUPPORT == STD_ON) */ /*================================================================================================== FUNCTION PROTOTYPES ==================================================================================================*/ #define ADC_START_SEC_CODE #include "Adc_MemMap.h" /** * @brief Initializes the ADC hardware unit and the driver. * @details This function will initialize both the ADC HW unit and the driver structures. * * @param[in] pConfigPtr Pointer to configuration set in Variant PB * (Variant PC requires a NULL_PTR). * @return void * * @implements Adc_Init_Activity */ void Adc_Init ( const Adc_ConfigType * ConfigPtr ); /** * @brief Initializes the group specific ADC result buffer pointer as * configured to point to the pDataBufferPtr address which is * passed as parameter. * @details Initializes ADC driver with the group specific result buffer * start address where the conversion results will be stored. * The application has to ensure that the application buffer, * where pDataBufferPtr points to, can hold all the conversion * results of the specified group. The initialization with * Adc_SetupResultBuffer is required after reset, before a group * conversion can be started. * * @param[in] Group Numeric ID of requested ADC channel group. * @param[in] pDataBufferPtr Pointer to result data buffer * * @return Std_ReturnType Standard return type. * E_OK: Result buffer pointer initialized correctly. * E_NOT_OK: Operation failed or development error * occurred. * * @implements Adc_SetupResultBuffer_Activity */ Std_ReturnType Adc_SetupResultBuffer ( Adc_GroupType Group, Adc_ValueGroupType * const DataBufferPtr ); #if (ADC_DEINIT_API == STD_ON) /** * @brief Returns all ADC HW Units to a state comparable to their * power on reset state. * @details Returns all ADC HW Units to a state comparable to their * power on reset state, and de-initialize the ADC MCAL driver. * * @return void * * @implements Adc_DeInit_Activity */ void Adc_DeInit(void); #endif /* ADC_DEINIT_API == STD_ON */ #if (ADC_ENABLE_START_STOP_GROUP_API == STD_ON) /** * @brief Starts the conversion of all channels of * the requested ADC Channel group. * @details This function will start the SW conversion of all channels * of the requested ADC channel group. * * @param[in] Group Numeric ID of requested ADC channel group. * @return void * * @implements Adc_StartGroupConversion_Activity */ void Adc_StartGroupConversion ( Adc_GroupType Group ); /** * @brief Stops the conversion of all channels of the requested ADC * Channel group. * @details This function will stop the SW conversion of all channels * of the requested ADC channel group. * * @param[in] Group Numeric ID of requested ADC channel group. * @return void * * @implements Adc_StopGroupConversion_Activity */ void Adc_StopGroupConversion ( Adc_GroupType Group ); #endif /* ADC_ENABLE_START_STOP_GROUP_API == STD_ON */ #if (ADC_READ_GROUP_API == STD_ON) /** * @brief Reads the group conversion results. * @details Reads the group conversion results of the last completed * conversion round of the requested group and stores the * channel values starting at the pDataBufferPtr address. * The group channel values are stored in ascending channel * number order (in contrast to the storage layout of the * result buffer if streaming access is configured). * * @param[in] Group Numeric ID of requested ADC Channel group. * @param[in] pDataBufferPtr ADC results of all channels of the selected group * are stored in the data buffer addressed with the pointer. * @return Std_ReturnType Standard return type. * E_OK: results are available and written to the * data buffer. * E_NOT_OK: no results are available or development * error occurred. * * @implements Adc_ReadGroup_Activity */ Std_ReturnType Adc_ReadGroup ( Adc_GroupType Group, Adc_ValueGroupType * DataBufferPtr ); #endif /* ADC_READ_GROUP_API == STD_ON */ #if (ADC_ENABLE_READ_RAW_DATA_API == STD_ON) /** * @brief Read the raw result data from an ADC unit. * @details Read the raw result data from an ADC unit. * Intended for reading ADC results directly from ADC registers * and can eliminate surplus interrupts if there are more triggered * measurements than FIFO length. * Measured values remain in ADC result registers(user must ensure * that they are not overwritten). * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id. * @param[in] ChansArray List of channels for which results to be read * @param[in] NumItems Number of results to read * @param[out] DataBufferPtr Destination pointer in which the results will be written * * @return void * * @implements Adc_ReadRawData_Activity */ void Adc_ReadRawData ( Adc_HwUnitType Unit, const Adc_ChannelType * const ChansArray, uint8 NumItems, Adc_ValueGroupType * const DataBufferPtr ); #endif /* (ADC_ENABLE_READ_RAW_DATA_API == STD_ON) */ #if (ADC_HW_TRIGGER_API == STD_ON) /** * @brief Enables the hardware trigger for the requested ADC Channel group. * @details This function will enable the HW trigger source for the requested * ADC channel group. This function does set the CTU register for all * platform that have the CTU Hw Unit. * * @param[in] Group Numeric ID of requested ADC channel group. * @return void * * @implements Adc_EnableHardwareTrigger_Activity */ void Adc_EnableHardwareTrigger ( Adc_GroupType Group ); /** * @brief Disables the hardware trigger for the requested ADC Channel group. * @details This function will disable the HW trigger source for the requested * ADC channel group. * * @param[in] Group Numeric ID of requested ADC channel group. * @return void * * @implements Adc_DisableHardwareTrigger_Activity */ void Adc_DisableHardwareTrigger ( Adc_GroupType Group ); #endif /* ADC_HW_TRIGGER_API == STD_ON */ #if (ADC_GRP_NOTIF_CAPABILITY == STD_ON) /** * @brief Enables the notification mechanism for the requested ADC * channel group. * @details This function will enable the notification mechanism only for * the requested ADC channel group. * * @param[in] Group Numeric ID of requested ADC channel group. * @return void * * @implements Adc_EnableGroupNotification_Activity */ void Adc_EnableGroupNotification ( Adc_GroupType Group ); /** * @brief Disables the notification mechanism for the requested ADC * channel group. * @details This function will disable the notification mechanism only for * the requested ADC channel group. * * @param[in] Group Numeric ID of requested ADC channel group. * @return void * * @implements Adc_DisableGroupNotification_Activity */ void Adc_DisableGroupNotification ( Adc_GroupType Group ); #endif /* ADC_GRP_NOTIF_CAPABILITY == STD_ON */ /** * @brief Returns the conversion status of the requested ADC Channel group. * @details This function will return the conversion status of the requested * ADC channel group. * * @param[in] Group Numeric ID of requested ADC channel group. * @return Adc_StatusType Conversion status for the requested group. * ADC_IDLE in case of errors. * conversion status in case of no errors. * * @implements Adc_GetGroupStatus_Activity */ Adc_StatusType Adc_GetGroupStatus ( Adc_GroupType Group ); /** * @brief Returns the number of valid samples per channel. * @details Returns the number of valid samples per channel, stored in * the result buffer. Reads a pointer, pointing to a position * in the group result buffer. With the pointer position, the * results of all group channels of the last completed conversion * round can be accessed. With the pointer and the return value, * all valid group conversion results can be accessed (the user * has to take the layout of the result buffer into account). * * @param[in] Group Numeric ID of requested ADC channel group. * @param[out] PtrToSamplePtr Pointer to result buffer pointer. * * @return Adc_StreamNumSampleType Number of valid samples per channel. * 0 in case of errors. * >0 Number of valid samples per channel. * * @implements Adc_GetStreamLastPointer_Activity */ Adc_StreamNumSampleType Adc_GetStreamLastPointer ( Adc_GroupType Group, Adc_ValueGroupType ** PtrToSamplePtr ); #if (ADC_VERSION_INFO_API == STD_ON) /** * @brief Returns the version information of this module. * @details Returns the version information of this module. * * @param[out] pVersionInfo Pointer to where to store the version * information of this module. * structure in case of no errors. * * @implements Adc_GetVersionInfo_Activity */ void Adc_GetVersionInfo ( Std_VersionInfoType * versioninfo ); #endif /* ADC_VERSION_INFO_API == STD_ON */ #if (ADC_SET_HW_UNIT_POWER_MODE_API == STD_ON) /** * @brief Set the ADC mode either to powerdown or normal. * @details Set the ADC either to powerdown or normal mode. * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id * @param[in] SetPowerMode Power mode to set: normal or powerdown. * * @return Std_ReturnType Standard return type. * E_OK: Transition successful. * E_NOT_OK: Transition unsuccessful. * * @implements Adc_SetHwUnitPowerMode_Activity */ Std_ReturnType Adc_SetHwUnitPowerMode ( Adc_HwUnitType Unit, Adc_SetPowerModeType SetPowerMode ); #if (ADC_BCTU_AVAILABLE == STD_ON) /** * @brief Function to set BCTU/CTU power mode. * * @details Set BCTU/CTU power mode. * * @param[in] CtuUnit Bctu/Ctu hardware unit. Recommended to use generated define for Bctu/Ctu Logical Unit Id. * @param[in] State Power state to be set * * @return Std_ReturnType Standard return type. * E_OK: Transition successful. * E_NOT_OK: Transition unsuccessful. * * @implements Adc_CtuSetPowerMode_Activity */ Std_ReturnType Adc_CtuSetPowerMode ( Adc_HwUnitType CtuUnit, Adc_PowerStateType State ); #endif /* (ADC_BCTU_AVAILABLE == STD_ON) */ #endif /* (ADC_SET_HW_UNIT_POWER_MODE_API == STD_ON) */ #if (ADC_ENABLE_CTUTRIG_NONAUTO_API == STD_ON) /** * @brief Enable the TriggerSource for group selected by Group parameter. * @details This Autosar Extension API is used to enable any one of the configured * TriggerSource of the Group. When this Autosar Extension API is used to * enable the trigger source the CTU interrupt will be disabled by the driver. * So user has to call the Autosar Extension API Adc_HwResultReadGroup to read * the converted result from the ADC hardware register. * * @param[in] Group Index of group. * @param[in] TriggerSource Trigger source to be used for the group. * (Configuration file should contain it for that group). * @return void * * @implements Adc_EnableCTUTrigger_Activity */ void Adc_EnableCTUTrigger ( Adc_GroupType Group, Adc_HwTriggerTimerType TriggerSource ); /** * @brief Disable the TriggerSource for group selected by Group parameter. * @details This Autosar Extension API is used to disable the already enabled * TriggerSource of the Group. * * @param[in] Group Index of group. * @param[in] TriggerSource Trigger source to be disabled for the group. * (Configuration file should contain it for that group). * @return void * * @implements Adc_DisableCTUTrigger_Activity */ void Adc_DisableCTUTrigger ( Adc_GroupType Group, Adc_HwTriggerTimerType TriggerSource ); /** * @brief Read the result of the hardware triggered groups conversion result. * @details This Autosar Extension API is used to read the result of the hardware * triggered groups conversion result from the ADC hardware register * in this case the CTU interrupt will be disabled for the group. * The VALID bit CDR register will be cleared automatically when we read the results * from the channel data register. If the user calls Autosar Extension function * Adc_HwResultReadGroup() once again before the next conversion takes place, the * Adc_HwResultReadGroup() returns E_NOT_OK. * * @param[in] Group Index of group. * @param[in] DataPtr Pointer to a buffer which will be filled by the * conversion results. * @return Std_ReturnType Standard return type. * E_OK: results are available and written to the * data buffer. * E_NOT_OK: no results are available or development * error occurred. * * @implements Adc_HwResultReadGroup_Activity */ Std_ReturnType Adc_HwResultReadGroup ( Adc_GroupType Group, Adc_ValueGroupType * DataPtr ); #endif /* ADC_ENABLE_CTUTRIG_NONAUTO_API == STD_ON */ #if (ADC_ENABLE_CH_DISABLE_CH_NONAUTO_API == STD_ON) /** * @brief Enable an individual channel configured in SW-triggered (non-injected) ADC Group at initialization * @details Enable an individual channel configured in SW-triggered (non-injected) ADC Group at initialization * Use generated symbolic channel name defines (e.g. AdcChannel_0_0), because function assumes ChannelId to be in following format: * Logical channel id on bits until position defined by ADC_CHANNEL_SYMBOLIC_NAME_SHIFT_HW_UNIT_ID_U16, and for the rest the Logical Unit Id * The driver will not update the values in result buffers corresponding to disabled channels, keeping in the buffer the last results from when the channel was enabled. * * @param[in] Adc_GroupType Group logical ID or group symbolic name * @param[in] Adc_ChannelType Symbolic name of channel * * @return void. * * @implements Adc_EnableChannel_Activity */ void Adc_EnableChannel ( Adc_GroupType Group, Adc_ChannelType Channel ); /** * @brief Disable an individual channel configured in SW-triggered (non-injected) ADC Group at initialization * @details Disable an individual channel configured in SW-triggered (non-injected) ADC Group at initialization * Use generated symbolic channel name defines (e.g. AdcChannel_0_0), because function assumes ChannelId to be in following format: * Logical channel id on bits until position defined by ADC_CHANNEL_SYMBOLIC_NAME_SHIFT_HW_UNIT_ID_U16, and for the rest the Logical Unit Id * The driver will not update the values in result buffers corresponding to disabled channels, keeping in the buffer the last results from when the channel was enabled. * * @param[in] Adc_GroupType Group logical ID or group symbolic name * @param[in] Adc_ChannelType Symbolic name of channel * * @return void. * * @implements Adc_DisableChannel_Activity */ void Adc_DisableChannel ( Adc_GroupType Group, Adc_ChannelType Channel ); #endif /* ADC_ENABLE_CH_DISABLE_CH_NONAUTO_API == STD_ON */ #if (ADC_GET_INJECTED_CONVERSION_STATUS_API == STD_ON) /** * @brief Get the injected conversions status. * @details This function checks if an injected conversion (HW,SW) is ongoing * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id * * @return Adc_StatusType Status of the ADC HW unit. * ADC_IDLE: SW,HW Injection or Hardware Trigger group are idle. * ADC_BUSY: SW,HW Injection or Hardware Trigger is in progress. * * @implements Adc_GetInjectedConversionStatus_Activity */ Adc_StatusType Adc_GetInjectedConversionStatus ( Adc_HwUnitType Unit ); #endif /* ADC_GET_INJECTED_CONVERSION_STATUS_API == STD_ON */ #if (ADC_CALIBRATION == STD_ON) /** * @brief Executes high accuracy calibration of a ADC HW unit. * @details This function calibrates the ADC HW unit and updates calibration related registers * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id * @param[in] pStatus Status of the ADC HW unit calibration and * list of failed and passed tests. * * @return void * * @implements Adc_Calibrate_Activity */ void Adc_Calibrate ( Adc_HwUnitType Unit, Adc_CalibrationStatusType * pStatus ); #endif /* (ADC_CALIBRATION == STD_ON) */ #if (ADC_SELF_TEST == STD_ON) /** * @brief Executes hardware Self Test of a ADC HW unit. * @details This function checks if the ADC HW unit is functioning correctly * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id * * @return Std_ReturnType. Status of the ADC HW unit Self Test. * * @implements Adc_SelfTest_Activity */ Std_ReturnType Adc_SelfTest ( Adc_HwUnitType Unit ); #endif /* (ADC_SELF_TEST == STD_ON) */ #if (ADC_ENABLE_CONFIGURE_THRESHOLD_NONAUTO_API == STD_ON) /** * @brief Function to reconfigure High and Low thresholds for a given threshold control index. * @details This function is used to reconfigure High and Low thresholds for a given threshold control index. * Use generated symbolic name defines of threshold register (e.g. AdcThresholdControl_0_0), because function assumes ThresholdControlIndex to be in following format: * Logical threshold id on bits until position defined by ADC_THRESHOLD_SYMBOLIC_NAME_SHIFT_HW_UNIT_ID_U16, and for the rest the Logical Unit Id * * @param[in] ThresholdControlIndex Symbolic name of threshold control * @param[in] LowValue Low threshold value of the threshold control * @param[in] HighValue High threshold value of the threshold control * * @return void * * @implements Adc_ConfigureThreshold_Activity */ void Adc_ConfigureThreshold ( Adc_ThresholdControlIndexType ThresholdControlIndex, Adc_WdgThresholdValueType LowValue, Adc_WdgThresholdValueType HighValue ); #endif /* ADC_ENABLE_CONFIGURE_THRESHOLD_NONAUTO_API == STD_ON */ #ifdef ADC_WDG_SUPPORTED /** * @brief Enable notification of a channel that has watchdog functionality configured at initialization * @details Enable notification of a channel that has watchdog functionality configured at initialization * Use generated symbolic channel name defines (e.g. AdcChannel_0_0), because function assumes ChannelId to be in following format: * Logical channel id on bits until position defined by ADC_CHANNEL_SYMBOLIC_NAME_SHIFT_HW_UNIT_ID_U16, and for the rest the Logical Unit Id * * @param[in] Adc_ChannelType Symbolic name of channel * * @return void. * * @implements Adc_EnableWdgNotification_Activity */ void Adc_EnableWdgNotification ( Adc_ChannelType ChannelId ); /** * @brief Disable notification of a channel that has watchdog functionality configured at initialization * @details Disable notification of a channel that has watchdog functionality configured at initialization * Use generated symbolic channel name defines (e.g. AdcChannel_0_0), because function assumes ChannelId to be in following format: * Logical channel id on bits until position defined by ADC_CHANNEL_SYMBOLIC_NAME_SHIFT_HW_UNIT_ID_U16, and for the rest the Logical Unit Id * * @param[in] Adc_ChannelType Symbolic name of channel * * @return void. * * @implements Adc_DisableWdgNotification_Activity */ void Adc_DisableWdgNotification ( Adc_ChannelType ChannelId ); #endif /* ADC_WDG_SUPPORTED */ #if (ADC_DUAL_CLOCK_MODE == STD_ON) /** * @brief Set the ADC clock prescaler if available and modify the conversion timings. * @details This function sets the ADC clock prescaler (Analog clock frequency selector) * * @param[in] Prescaler Normal or Alternate mode. * * @return Std_ReturnType Standard return type. * E_OK: In case of successful settings. * E_NOT_OK: In case of unsuccessful settings. * * @implements Adc_SetClockMode_Activity */ Std_ReturnType Adc_SetClockMode ( Adc_SelectPrescalerType Prescaler ); #endif /* (ADC_DUAL_CLOCK_MODE == STD_ON) */ #if (ADC_CTU_CONTROL_MODE_EXTRA_APIS == STD_ON) /** * @brief Function to set the trigger handler control registers of the CTU IPL. * * @details Full configurability of CTU THCR1 & THCR2 registers of the CTU IPL. * This function has in input the CTU trigger (0...7) and the mask (8 bit) * to enable the External Trigger and Timer output for that Trigger, without considering * the ADC command output enable. * See from the RM the THCR1 and THCR2 registers for the right Thcr_value to use. * * @note The function Service ID[hex]: 0x35. * * @param[in] Trigger Index of the trigger: 0...7. * @param[in] ThcrValue THCRx mask value (only with bits for Ext. Trigger and Timer) for the selected input trigger. * * @return Std_ReturnType E_OK or E_NOT_OK. * E_OK In case of successful settings. * E_NOT_OK In case of unsuccessful settings. * * @implements Adc_CtuWriteTriggerEnableMask_Activity */ Std_ReturnType Adc_CtuWriteTriggerEnableMask ( uint8 u8Trigger, uint8 u8ThcrValue ); /** * @brief Function to set or clear the bit Tx_E of the trigger handler control registers of the CTU IPL. * * @details Full configurability of CTU THCR1 & THCR2 registers of the CTU IPL. * This function has in input the CTU trigger (0...7) and a Boolean to set to clear the right trigger bit. * See from the RM the THCR1 and THCR2 registers for the right API use. * * @param[in] u8Trigger Index of the trigger: 0...7. * @param[in] bEnable if True, the bit Tx_E shall be set to 1, 0 otherwise * * @note The function Service ID[hex]: 0x36. * * @return Std_ReturnType E_OK or E_NOT_OK. * E_OK In case of successful settings. * E_NOT_OK In case of unsuccessful settings. * * @implements Adc_CtuSetTriggerEnable_Activity */ Std_ReturnType Adc_CtuSetTriggerEnable ( uint8 u8Trigger, boolean bEnable ); /** * @brief Function to set the cmd list handler control registers of the CTU IPL. * * @details Full configurability of CLCR1 & CLCR2 registers of the CTU IPL. * This function has in input the CTU trigger (0...7) and the position of the first * command in the command list. * See from the RM the CLCR1 and CLCR2 registers for the right API use. * * @param[in] u8Trigger Index of the trigger: 0...7. * @param[in] u8ClcrValue Position of the first command * * @note The function Service ID[hex]: 0x37. * * @return Std_ReturnType E_OK or E_NOT_OK. * E_OK In case of successful settings. * E_NOT_OK In case of unsuccessful settings. * * @implements Adc_CtuSetTriggerAdcCmdAddress_Activity */ Std_ReturnType Adc_CtuSetTriggerAdcCmdAddress ( uint8 u8Trigger, uint8 u8ClcrValue ); /** * @brief Function to set the trigger compare registers of the CTU IPL. * * @details Full configurability of CTU TxCR registers of the CTU IPL. * This function has in input the CTU trigger (0...7) and the comparator value * See from the RM the TxCR trigger compare registers for the right compare_value to use. * * @note The function Service ID[hex]: 0x38. * * @param[in] u8Trigger Index of the trigger: 0...7. * @param[in] u16CompareValue value to set in the register TxCR. * * @return Std_ReturnType E_OK or E_NOT_OK. * E_OK In case of successful settings. * E_NOT_OK In case of unsuccessful settings. * * @implements Adc_CtuSetTriggerCompare_Activity */ Std_ReturnType Adc_CtuSetTriggerCompare ( uint8 u8Trigger, uint16 u16CompareValue ); #endif /* (ADC_CTU_CONTROL_MODE_EXTRA_APIS == STD_ON) */ #if (ADC_SETCHANNEL_API == STD_ON) /** * @brief Function to dynamic handling of ADC channels list for Adc channel group. * * @details Dynamic handling of ADC channels list. * This function to dynamic handling of ADC channels list for Adc channel group. * @param[in] Group Group Id. * @param[in] Channel Pointer to array of channels to be reconfigured for the group. Channel value is logical channel ID. * @param[in] Delays Pointer to array of delay value associated with array of channels to be reconfigured. * @param[in] ChannelUpdateMask Bitmask selecting which channels to be reconfigured. * @param[in] NumberOfChannel Number of channels in channels array. * * @note For platforms supporting delays: * Delays: * - If NULL_PTR: channel delay values are not reconfigured. * - If group has configured only 1 delay: pointer to new delay value. * - If group has configured delay for each channel: array with new delay values - number of elements must be NumberOfChannel. * ChannelUpdateMask: * - Bitmask example: 0b0110 only reconfigures channels from positions 1 and 2. * - This bit mask can be used only if number of group channels are not greater than number of SC1 registers * - Last bit of this mask must be set for having interrupt if NumberOfChannel is different than number of configured channels. * * @implements Adc_SetChannel_Activity */ void Adc_SetChannel ( const Adc_GroupType Group, const Adc_GroupDefType * Channel, #if (ADC_DELAY_AVAILABLE == STD_ON) const uint16 * Delays, const uint32 ChannelUpdateMask, #endif /* (ADC_DELAY_AVAILABLE == STD_ON) */ const Adc_ChannelIndexType NumberOfChannel ); #endif /* ADC_SETCHANNEL_API == STD_ON */ #if (ADC_POWER_STATE_SUPPORTED == STD_ON) /** * @brief Enters the already prepared power state. * @details This API configures the Adc module so that it enters the already prepared power * state, chosen between a predefined set of configured ones. * * @param[out] Result Pointer to a variable to store the result of this function * * @return Std_ReturnType Standard return type. * E_OK: Power Mode changed. * E_NOT_OK: Request rejected. * * @implements Adc_SetPowerState_Activity */ Std_ReturnType Adc_SetPowerState ( Adc_PowerStateRequestResultType * Result ); /** * @brief Get the current power state of the ADC HW unit. * @details This API returns the current power state of the ADC HW unit. * * @param[out] CurrentPowerState The current power mode of the ADC HW Unit is returned in this parameter * @param[out] Result Pointer to a variable to store the result of this function * * @return Std_ReturnType Standard return type. * E_OK: Mode could be read. * E_NOT_OK: Service is rejected. * * @implements Adc_GetCurrentPowerState_Activity */ Std_ReturnType Adc_GetCurrentPowerState ( Adc_PowerStateType * CurrentPowerState, Adc_PowerStateRequestResultType * Result ); /** * @brief Get the target power state of the ADC HW unit. * @details This API returns the target power state of the ADC HW unit. * * @param[out] TargetPowerState The Target power mode of the ADC HW Unit is returned in this parameter. * @param[out] Result Pointer to a variable to store the result of this function. * * @return Std_ReturnType Standard return type. * E_OK: Mode could be read. * E_NOT_OK: Service is rejected. * * @implements Adc_GetTargetPowerState_Activity */ Std_ReturnType Adc_GetTargetPowerState ( Adc_PowerStateType * TargetPowerState, Adc_PowerStateRequestResultType * Result ); /** * @brief Starts the needed process to allow the ADC HW module to enter the requested power state. * @details This API starts the needed process to allow the ADC HW module to enter the requested power state. * * @param[in] PowerState The target power state intended to be attained. * @param[out] Result Pointer to a variable to store the result of this function. * * @return Std_ReturnType Standard return type. * E_OK: Mode could be read. * E_NOT_OK: Service is rejected. * * @implements Adc_PreparePowerState_Activity */ Std_ReturnType Adc_PreparePowerState ( Adc_PowerStateType PowerState, Adc_PowerStateRequestResultType * Result ); #if (ADC_POWER_STATE_ASYNCH_MODE_SUPPORTED == STD_ON) /** * @brief Cyclically called and supervises the power state transitions. * @details This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks. * * @param[in] none * @param[out] none * * @return void */ void Adc_Main_PowerTransitionManager(void); #endif /* (ADC_POWER_STATE_ASYNCH_MODE_SUPPORTED == STD_ON) */ #endif /* (ADC_POWER_STATE_SUPPORTED == STD_ON) */ #if (ADC_ENABLE_CTU_CONTROL_MODE_API == STD_ON) /** * @brief Function to enable CTU control mode for an ADC unit. * * @details Enable CTU control mode for an ADC unit. * This function to enable CTU control mode for Adc. When a unit works in CTU control mode, * no other conversions shall run in parallel(Adc). The only conversions occurring shall be * the ones defined in the CTU configuration. * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id * * @return void * * @implements Adc_EnableCtuControlMode_Activity */ void Adc_EnableCtuControlMode ( Adc_HwUnitType Unit ); /** * @brief Function to disable CTU control mode for an ADC unit. * * @details Disable CTU control mode for an ADC unit. * This function to disable CTU control mode for Adc. The other Adc conversions can run in * software trigger normal mode, software trigger injected mode or hardware trigger mode. * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id * * @return void * * @implements Adc_DisableCtuControlMode_Activity */ void Adc_DisableCtuControlMode ( Adc_HwUnitType Unit ); /** * @brief Function to enable CTU hardware trigger. * * @details Enable CTU hardware trigger. * * @param[in] TrigSource Trigger source. * * @return void * * @implements Adc_CtuEnableHwTrigger_Activity */ void Adc_CtuEnableHwTrigger ( Adc_CtuTrigSrcType TrigSource ); /** * @brief Function to disable CTU hardware trigger. * * @details Disable CTU hardware trigger. * * @param[in] TrigSource Trigger source. * * @return void * * @implements Adc_CtuDisableHwTrigger_Activity */ void Adc_CtuDisableHwTrigger ( Adc_CtuTrigSrcType TrigSource ); /** * @brief Function to start CTU conversion. * * @details Start CTU conversion. * * @param[in] TrigSource Trigger source. * * @return void * * @implements Adc_CtuStartConversion_Activity */ void Adc_CtuStartConversion ( Adc_CtuTrigSrcType TrigSource ); #if (ADC_CTU_AVAILABLE == STD_ON) /** * @brief Issue a software master reload signal for CTU. * * @details Issue a software master reload signal for CTU in CTU Control Mode. * * @param[in] CtuUnit CTU hardware unit. Recommended to use generated define for Ctu Logical Unit Id * * @return void * * @implements Adc_CtuMasterReload_Activity */ void Adc_CtuMasterReload ( Adc_HwUnitType CtuUnit ); #endif /* (ADC_CTU_AVAILABLE == STD_ON) */ #if (ADC_BCTU_AVAILABLE == STD_ON) /** * @brief Function to read BCTU conversion data. * * @details Read CTU conversion data. * * @param[in] AdcUnit Adc HW unit. Recommended to use generated define for Adc Logical Unit Id. * * @return Adc_ValueGroupType Conversion result. * * @implements Adc_CtuReadConvData_Activity */ Adc_ValueGroupType Adc_CtuReadConvData ( Adc_HwUnitType AdcUnit ); /** * @brief Function to read BCTU conversion result. * * @details Read BCTU conversion result. * * @param[in] AdcUnit Adc HW unit. Recommended to use generated define for Adc Logical Unit Id. * @param[out] pResult Adc result structure. * * @return void * * @implements Adc_CtuReadConvResult_Activity */ void Adc_CtuReadConvResult ( Adc_HwUnitType AdcUnit, Adc_CtuResultType * pResult ); /** * @brief Function to stop CTU loop conversion. * * @details Stop CTU loop conversions. * * @param[in] TrigSource Trigger source of conversions to be stopped. * * @return void * * @implements Adc_CtuStopLoopConversions_Activity */ void Adc_CtuStopLoopConversions ( Adc_CtuTrigSrcType TrigSource ); #endif /* (ADC_BCTU_AVAILABLE == STD_ON) */ /** * @brief Function to read CTU conversion data from FIFO. * * @details Read CTU conversion data from FIFO. * * @param[in] FifoIdx CTU FIFO index. * @param[out] pu16Data Pointer to pre-allocated result array. * @param[in] u8DataLength Max amount of results to be read. * * @return void * * @implements Adc_CtuReadFifoData_Activity */ void Adc_CtuReadFifoData ( Adc_CtuFifoIdxType FifoIdx, uint16 * pu16Data, uint8 u8DataLength ); /** * @brief Function to read CTU conversion results from FIFO. * * @details Read CTU conversion results from FIFO. * * @param[in] FifoIdx CTU FIFO index. * @param[out] pResult Pointer to pre-allocated result array. * @param[in] u8ResultLength Max amount of results to be read. * * @return void * * @implements Adc_CtuReadFifoResult_Activity */ void Adc_CtuReadFifoResult ( Adc_CtuFifoIdxType FifoIdx, Adc_CtuFifoResultType * pResult, uint8 u8ResultLength ); /** * @brief Function to set CTU FIFO watermark. * * @details Set CTU FIFO watermark. * * @param[in] FifoIdx FIFO index. * @param[in] u8Watermark Watermark value. * * @return void * * @implements Adc_CtuSetFifoWatermark_Activity */ void Adc_CtuSetFifoWatermark ( Adc_CtuFifoIdxType FifoIdx, uint8 u8Watermark ); /** * @brief Function to enable CTU notification. * * @details Enable CTU notification. * * @param[in] Notification Notification to be enabled. * * @return void * * @implements Adc_CtuEnableNotification_Activity */ void Adc_CtuEnableNotification ( Adc_CtuNotificationType Notification ); /** * @brief Function to disable CTU notification. * * @details Disable CTU notification. * * @param[in] Notification Notification to be disabled. * * @return void * * @implements Adc_CtuDisableNotification_Activity */ void Adc_CtuDisableNotification ( Adc_CtuNotificationType Notification ); /** * @brief Function to set CTU list. * * @details Reconfigure the CTU list of conversions in CTU Control Mode. * * @param[in] ListItemsArray Pointer to list items array to be set. * @param[in] NumItems Number of items in the array. * @param[in] ListStartPosition Start position of the list. * * @return void * * @implements Adc_CtuSetList_Activity */ void Adc_CtuSetList ( const Adc_CtuListItemType * const ListItemsArray, const uint8 NumItems, const uint8 ListStartPosition ); /** * @brief Reconfigure the list pointer of a triggered CTU source. * * @details Reconfigure the list pointer of a trigger source in CTU Control Mode. * * @param[in] TrigSource Source trigger index. * @param[in] ListPtr Position of the first channel of the command list. * * @return void * * @implements Adc_CtuSetListPointer_Activity */ void Adc_CtuSetListPointer ( Adc_CtuTrigSrcType TrigSource, Adc_CtuListPtrType ListPtr ); #endif /* ADC_ENABLE_CTU_CONTROL_MODE_API == STD_ON */ #if (ADC_ENABLE_TEMPSENSE_API == STD_ON) /** * @brief Function to calculate temperature on chip from provided data. * * @details Calculates temperature on chip from provided data. * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id. * @param[in] TempSenseConvData Data measured on the ADC internal channel for TempSense. * (1 bit for the sign, 11 bits for the integer part and 4 bits for the decimal part) * * @return uint16 Temperature value on chip.in degrees C, expressed in fixed point format. * * @implements Adc_TempSenseCalculateTemp_Activity */ uint16 Adc_TempSenseCalculateTemp ( Adc_HwUnitType Unit, const uint16 TempSenseAdcConvData ); /** * @brief Function to get the temperature on chip directly. * * @details This function starts a normal software conversion with one-shot mode on tempsense * channel and calculates the temperature on chip from the data conversion * The function is synchronous: waits until the ADC conversion completes or timeout occurs * * @param[in] Unit Adc unit used. Recommended to use generated define for Adc Logical Unit Id. * @param[out] TempSenseVal Temperature value on chip in degrees C, expressed in fixed point format. * (1 bit for the sign, 11 bits for the integer part and 4 bits for the decimal part) * * @return Std_ReturnType Standard return type. * E_OK: temperature read successful * E_NOT_OK: operation failed * @implements Adc_TempSenseGetTemp_Activity */ Std_ReturnType Adc_TempSenseGetTemp ( Adc_HwUnitType Unit, uint16 * const TempSenseVal ); /** * @brief Set the Tempsense mode either to powerdown or normal. * @details Set the Tempsense mode either to powerdown or normal. * * @param[in] SetPowerMode Power mode to set: normal or powerdown. * * @return Std_ReturnType Successful/Unsuccessful transition. * * @implements Adc_TempSenseSetPowerMode_Activity */ Std_ReturnType Adc_TempSenseSetPowerMode ( Adc_SetPowerModeType SetPowerMode ); #endif /* (ADC_ENABLE_TEMPSENSE_API == STD_ON) */ #define ADC_STOP_SEC_CODE #include "Adc_MemMap.h" #ifdef __cplusplus } #endif /** @} */ #endif /* ADC_H */