MCUSW
Loading...
Searching...
No Matches
Icu.h
Go to the documentation of this file.
1/*
2*
3* Copyright (C) 2024 Texas Instruments Incorporated
4*
5* All rights reserved not granted herein.
6*
7* Limited License.
8*
9* Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10* license under copyrights and patents it now or hereafter owns or controls to make,
11* have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12* terms herein. With respect to the foregoing patent license, such license is granted
13* solely to the extent that any such patent is necessary to Utilize the software alone.
14* The patent license shall not apply to any combinations which include this software,
15* other than combinations with devices manufactured by or for TI ("TI Devices").
16* No hardware patent is licensed hereunder.
17*
18* Redistributions must preserve existing copyright notices and reproduce this license
19* (including the above copyright notice and the disclaimer and (if applicable) source
20* code license limitations below) in the documentation and/or other materials provided
21* with the distribution
22*
23* Redistribution and use in binary form, without modification, are permitted provided
24* that the following conditions are met:
25*
26* * No reverse engineering, decompilation, or disassembly of this software is
27* permitted with respect to any software provided in binary form.
28*
29* * any redistribution and use are licensed by TI for use only with TI Devices.
30*
31* * Nothing shall obligate TI to provide you with source code for the software
32* licensed and provided to you in object code.
33*
34* If software source code is provided to you, modification and redistribution of the
35* source code are permitted provided that the following conditions are met:
36*
37* * any redistribution and use of the source code, including any resulting derivative
38* works, are licensed by TI for use only with TI Devices.
39*
40* * any redistribution and use of any object code compiled from the source code
41* and any resulting derivative works, are licensed by TI for use only with TI Devices.
42*
43* Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44*
45* may be used to endorse or promote products derived from this software without
46* specific prior written permission.
47*
48* DISCLAIMER.
49*
50* THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53* IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59* OF THE POSSIBILITY OF SUCH DAMAGE.
60*
61*/
62
84 /*
85 * Below are the global requirements which are met by this PWM
86 * driver which can't be mapped to a particular source ID
87 */
88/*
89*Design: MCAL-7113,MCAL-7128,MCAL-7064,MCAL-7118,MCAL-6917,MCAL-6972,MCAL-7091,MCAL-6931,MCAL-7048,MCAL-6960
90*/
91
92/*
93 * Below are the PWM module's environment requirements which can't be mapped
94 * to this driver
95 */
96/*
97*Design: MCAL-7014,MCAL-7101,MCAL-6968,MCAL-7134,MCAL-7082,MCAL-7142,MCAL-7053,MCAL-7004,MCAL-7015,MCAL-7007,MCAL-6933,MCAL-7046,MCAL-6982,MCAL-7001,MCAL-7146,MCAL-6896,MCAL-7055,MCAL-7109,MCAL-7061,MCAL-6993,MCAL-7108,MCAL-7119,MCAL-6997,MCAL-7051,MCAL-6955,MCAL-7120,MCAL-6952,MCAL-7079
98*/
99
100#ifndef ICU_H_
101#define ICU_H_
102
103/* ========================================================================== */
104/* Include Files */
105/* ========================================================================== */
106/*
107* Design: MCAL-7045,MCAL-7128,MCAL-7064,MCAL-7118,MCAL-6917,MCAL-6972,MCAL-7091,MCAL-6931,MCAL-7048,MCAL-6960
108*/
109#include "Std_Types.h"
110#include "Icu_Cfg.h"
111#include "EcuM_Cbk.h"
112
113#ifdef __cplusplus
114extern "C"
115{
116#endif
117
118/* ========================================================================== */
119/* Macros & Typedefs */
120/* ========================================================================== */
121
127#define ICU_VENDOR_ID ((uint16) 44U)
129#define ICU_MODULE_ID ((uint16) 122U)
131#define ICU_INSTANCE_ID ((uint8) 0U)
132/* @} */
133
141#define ICU_SW_MAJOR_VERSION (9U)
143#define ICU_SW_MINOR_VERSION (1U)
145#define ICU_SW_PATCH_VERSION (0U)
146/* @} */
147
155#define ICU_AR_RELEASE_MAJOR_VERSION (4U)
157#define ICU_AR_RELEASE_MINOR_VERSION (3U)
159#define ICU_AR_RELEASE_REVISION_VERSION (1U)
160/* @} */
161
170#define ICU_INIT_ID ((uint8) 0x00U)
172#define ICU_DEINIT_ID ((uint8) 0x01U)
174#define ICU_SETMODE_ID ((uint8) 0x02U)
176#define ICU_SETACTIVATIONCONDITION_ID ((uint8) 0x05U)
178#define ICU_DISABLENOTIFICATION_ID ((uint8) 0x06U)
180#define ICU_ENABLENOTIFICATION_ID ((uint8) 0x07U)
182#define ICU_GETINPUTSTATE_ID ((uint8) 0x08U)
184#define ICU_STARTTIMESTAMP_ID ((uint8) 0x09U)
186#define ICU_STOPTIMESTAMP_ID ((uint8) 0x0AU)
188#define ICU_GETTIMESTAMPINDEX_ID ((uint8) 0x0BU)
190#define ICU_RESETEDGECOUNT_ID ((uint8) 0x0CU)
192#define ICU_ENABLEEDGECOUNT_ID ((uint8) 0x0DU)
194#define ICU_ENABLEEDGEDETECTION_ID ((uint8) 0x16U)
196#define ICU_DISABLEEDGEDETECTION_ID ((uint8) 0x17U)
198#define ICU_DISABLEEDGECOUNT_ID ((uint8) 0x0EU)
200#define ICU_GETEDGENUMBERS_ID ((uint8) 0x0FU)
202#define ICU_STARTSIGNALMEASUREMENT_ID ((uint8) 0x13U)
204#define ICU_STOPSIGNALMEASUREMENT_ID ((uint8) 0x14U)
206#define ICU_GETTIMEELAPSED_ID ((uint8) 0x10U)
208#define ICU_GETDUTYCYCLEVALUES_ID ((uint8) 0x11U)
210#define ICU_GETVERSIONINFO_ID ((uint8) 0x12U)
212#define ICU_SID_REGISTER_READBACK ((uint8) 0x18U)
213/* @} */
214
221/*
222*Design: MCAL-7045
223*/
225#define ICU_E_PARAM_POINTER ((uint8) 0x0AU)
230#define ICU_E_PARAM_CHANNEL ((uint8) 0x0BU)
232#define ICU_E_PARAM_ACTIVATION ((uint8) 0x0CU)
234#define ICU_E_INIT_FAILED ((uint8) 0x0DU)
236#define ICU_E_PARAM_BUFFER_SIZE ((uint8) 0x0EU)
238#define ICU_E_PARAM_MODE ((uint8) 0x0FU)
240#define ICU_E_UNINIT ((uint8) 0x14U)
242#define ICU_E_NOT_STARTED ((uint8) 0x16U)
244#define ICU_E_BUSY_OPERATION ((uint8) 0x16U)
246#define ICU_E_ALREADY_INITIALIZED ((uint8) 0x17U)
248#define ICU_E_PARAM_NOTIFY_INTERVAL ((uint8) 0x18U)
250#define ICU_E_PARAM_VINFO ((uint8) 0x19U)
251/* @} */
252
259/*
260*Design: MCAL-7144
261*/
263#define ICU_STATUS_UNINIT ((uint8)(0U))
265#define ICU_STATUS_INIT ((uint8)(1U))
266/* @} */
267
273#define ICU_FALLING ((uint8)(0U))
275#define ICU_RISING ((uint8)(1U))
276
277/* ========================================================================== */
278/* Structures and Enums */
279/* ========================================================================== */
280
296
300typedef enum
301{
307
308
321
325typedef uint32 Icu_ValueType;
326
337
341typedef uint32 Icu_IndexType;
342
346typedef uint32 Icu_EdgeNumberType;
347
362
377
388
390typedef void (*Icu_NotifyFuncType)(void);
391
395typedef uint8 Icu_ChannelType;
396
401
410
414typedef struct Icu_ConfigType_PC_s
415{
419
439
450
451#if (STD_ON == ICU_SAFETY_DIAGNOSTIC_API)
456typedef struct
457{
458 /*
459 * ECAP related registers
460 */
464
466#endif /* #if (STD_ON == ICU_REGISTER_READBACK_API) */
467/* @} */
468
469
470
471/* ========================================================================== */
472/* Function Declarations */
473/* ========================================================================== */
474
475
494FUNC(void, ICU_CODE) Icu_Init(
495 P2CONST(Icu_ConfigType, AUTOMATIC, ICU_PBCFG) ConfigPtr);
496
497
498
499#if (STD_ON == ICU_DE_INIT_API)
516FUNC(void, ICU_CODE) Icu_DeInit( void );
517#endif
518
539FUNC(void, ICU_CODE) Icu_SetActivationCondition( Icu_ChannelType Channel, Icu_ActivationType Activation );
540
557FUNC(void, ICU_CODE) Icu_DisableNotification( Icu_ChannelType Channel );
558
575FUNC(void, ICU_CODE) Icu_EnableNotification( Icu_ChannelType Channel );
576
577
578#if (ICU_GET_INPUT_STATE_API == STD_ON)
596#endif
597
598#if (ICU_TIMESTAMP_API == STD_ON)
620FUNC(void, ICU_CODE) Icu_StartTimestamp( Icu_ChannelType Channel, Icu_ValueType* BufferPtr, uint16 BufferSize, uint16 NotifyInterval );
621
638FUNC(void, ICU_CODE) Icu_StopTimestamp( Icu_ChannelType Channel );
639
657#endif
658
659#if (ICU_EDGE_COUNT_API == STD_ON)
676FUNC(void, ICU_CODE) Icu_ResetEdgeCount( Icu_ChannelType Channel );
677
694FUNC(void, ICU_CODE) Icu_EnableEdgeCount( Icu_ChannelType Channel );
695
712FUNC(void, ICU_CODE) Icu_DisableEdgeCount( Icu_ChannelType Channel );
713
731#endif
732
733#if (ICU_EDGE_DETECT_API == STD_ON)
750FUNC(void, ICU_CODE) Icu_EnableEdgeDetection( Icu_ChannelType Channel );
751
768FUNC(void, ICU_CODE) Icu_DisableEdgeDetection( Icu_ChannelType Channel );
769#endif
770
771#if (ICU_SIGNAL_MEASUREMENT_API == STD_ON)
788FUNC(void, ICU_CODE) Icu_StartSignalMeasurement( Icu_ChannelType Channel );
789
806FUNC(void, ICU_CODE) Icu_StopSignalMeasurement( Icu_ChannelType Channel );
807#endif
808
809#if (ICU_GET_TIME_ELAPSED_API == STD_ON)
827#endif
828
829#if (ICU_GET_DUTY_CYCLE_VALUES_API == STD_ON)
847FUNC (void, ICU_CODE) Icu_GetDutyCycleValues( Icu_ChannelType Channel,
848 Icu_DutyCycleType* DutyCycleValues );
849#endif
850
851#if (ICU_GET_VERSION_INFO_API)
870FUNC(void, ICU_CODE) Icu_GetVersionInfo(
871 P2VAR(Std_VersionInfoType, AUTOMATIC, sICU_APPL_DATA) VersionInfoPtr);
872
873#endif
874
875#if (ICU_WAKEUP_FUNCTIONALITY_API == STD_ON)
897FUNC(void, ICU_CODE) Icu_CheckWakeup(EcuM_WakeupSourceType WakeupSource);
898#endif /* if(ICU_WAKEUP_FUNCTIONALITY_API == STD_ON) */
899
900#if (ICU_DISABLEWAKEUP_API == STD_ON)
918FUNC(void, ICU_CODE) Icu_DisableWakeup(Icu_ChannelType Channel);
919#endif /* if(ICU_DISABLEWAKEUP_API == STD_ON) */
920
921#if (ICU_ENABLEWAKEUP_API == STD_ON)
939FUNC(void, ICU_CODE) Icu_EnableWakeup(Icu_ChannelType Channel);
940#endif /* if(ICU_ENABLEWAKEUP_API == STD_ON) */
941
942#if (ICU_SETMODE_API == STD_ON)
963FUNC(void, ICU_CODE) Icu_SetMode(Icu_ModeType Mode);
964#endif /* if (ICU_SETMODE_API == STD_ON) */
965
966#if (STD_ON == ICU_SAFETY_DIAGNOSTIC_API)
967FUNC(Std_ReturnType, ICU_CODE) Icu_RegisterReadback(
968 Icu_ChannelType IcuChannel,
969 P2VAR(Icu_RegisterReadbackType, AUTOMATIC, ICU_APPL_DATA) RegRbPtr);
970#endif
971
973
974
975#ifdef __cplusplus
976}
977#endif
978/* @} */
979
980#endif /* ICU_H_ */
981
982/* @} */
Icu_ActivationType
This type defines Activation range.
Definition Icu.h:313
void Icu_SetMode(Icu_ModeType Mode)
This function sets the ICU mode.
Icu_TimestampBufferType
This type defines TimeStamp Property range.
Definition Icu.h:382
void Icu_DisableEdgeDetection(Icu_ChannelType Channel)
Service for disabling the detection of edges of the given channel.
void Icu_StartSignalMeasurement(Icu_ChannelType Channel)
Service for starting the measurement of signals.
void Icu_EnableEdgeDetection(Icu_ChannelType Channel)
Service for enabling/re-enabling the detection of edges of the given channel.
Icu_InputStateType
This type defines a input state of ICU driver.
Definition Icu.h:301
Icu_ValueType Icu_GetTimeElapsed(Icu_ChannelType Channel)
Service for reading the elasped time for the given channel.
Icu_ModeType
This type defines a range of mode type.
Definition Icu.h:290
void Icu_StopTimestamp(Icu_ChannelType Channel)
Service for stopping the timestamp measurement.
void Icu_SetActivationCondition(Icu_ChannelType Channel, Icu_ActivationType Activation)
Service for setting Activation Condition.
void Icu_GetDutyCycleValues(Icu_ChannelType Channel, Icu_DutyCycleType *DutyCycleValues)
Service for reading the coherent active time and period time of given channel.
void Icu_DisableWakeup(Icu_ChannelType Channel)
This function disables the wakeup capability of a single ICU channel.
Icu_InputStateType Icu_GetInputState(Icu_ChannelType Channel)
Service for getting the ICU input status.
Icu_MeasurementModeType
This type defines available measurement modes.
Definition Icu.h:352
void Icu_StartTimestamp(Icu_ChannelType Channel, Icu_ValueType *BufferPtr, uint16 BufferSize, uint16 NotifyInterval)
Service for starts the captuing of timer values on the edges.
uint32 Icu_EdgeNumberType
This type defines return value of Icu-Icu_GetEdgeNumbers.
Definition Icu.h:346
void Icu_EnableEdgeCount(Icu_ChannelType Channel)
Service enabling the counting of edges of a given channel.
void Icu_DisableEdgeCount(Icu_ChannelType Channel)
Service for disabling the couting of edges of the given channel.
Std_ReturnType Icu_RegisterReadback(Icu_ChannelType IcuChannel, Icu_RegisterReadbackType *RegRbPtr)
Icu_SignalMeasurementPropertyType
This type defines Signal Measurement Property range.
Definition Icu.h:367
void Icu_Init(const Icu_ConfigType *ConfigPtr)
Service for ICU initialization.
uint32 Icu_ValueType
This type defines Value type.
Definition Icu.h:325
uint8 Icu_ChannelType
This type defines Channel type.
Definition Icu.h:395
void Icu_ResetEdgeCount(Icu_ChannelType Channel)
Service for resets the value of the counted edges to zero.
void Icu_CheckWakeup(EcuM_WakeupSourceType WakeupSource)
This function checks if a wakeup capable ICU channel is the source for a wakeup event and calls the E...
uint32 Icu_ChannelPrescalerType
This type defines Prescaler type.
Definition Icu.h:400
Icu_EdgeNumberType Icu_GetEdgeNumbers(Icu_ChannelType Channel)
Service for reading the number of counted edges.
void Icu_StopSignalMeasurement(Icu_ChannelType Channel)
Service for stopping the measurement of signals.
void Icu_EnableWakeup(Icu_ChannelType Channel)
This function (re-)enables the wakeup capability of the given ICU channel.
void(* Icu_NotifyFuncType)(void)
Notification callback function pointer
Definition Icu.h:390
void Icu_DisableNotification(Icu_ChannelType Channel)
Service for disabling notification.
void Icu_DeInit(void)
Service for ICU de-initialization.
void Icu_EnableNotification(Icu_ChannelType Channel)
Service for enabling notification.
Icu_IndexType Icu_GetTimeStampIndex(Icu_ChannelType Channel)
uint32 Icu_IndexType
This type defines return value Icu_GetTimeStampIndex.
Definition Icu.h:341
Icu_IndexType Icu_GetTimestampIndex(Icu_ChannelType Channel)
Service for reading the timestamp index of a givem channel.
Icu_TimestampBufferType bufferType
Definition Icu.h:432
#define ICU_MAX_NUM_CHANNELS
Definition j721e/mcu1_0/include/Icu_Cfg.h:181
Icu_MeasurementModeType measurementMode
Definition Icu.h:426
uint32 instanceClkMHz
Definition Icu.h:434
Icu_ActivationType defaultStartEdge
Definition Icu.h:424
uint32 ECAP_CNTPHS
Definition Icu.h:461
Icu_ChannelType channelId
Definition Icu.h:407
uint32 ECAP_ECCTL
Definition Icu.h:462
Icu_SignalMeasurementPropertyType signalMeasurementProperty
Definition Icu.h:428
Icu_ChannelType icuMaxChannel
Definition Icu.h:445
Icu_ValueType PeriodTime
Definition Icu.h:334
uint32 ECAP_ECINT_EN_FLG
Definition Icu.h:463
Icu_ValueType ActiveTime
Definition Icu.h:332
uint32 prescaler
Definition Icu.h:436
Icu_NotifyFuncType notificationHandler
Definition Icu.h:430
@ ICU_RISING_EDGE
Definition Icu.h:314
@ ICU_FALLING_EDGE
Definition Icu.h:316
@ ICU_BOTH_EDGES
Definition Icu.h:318
@ ICU_LINEAR_BUFFER
Definition Icu.h:383
@ ICU_CIRCULAR_BUFFER
Definition Icu.h:385
@ ICU_ACTIVE
Definition Icu.h:302
@ ICU_IDLE
Definition Icu.h:304
@ ICU_MODE_SLEEP
Definition Icu.h:293
@ ICU_MODE_NORMAL
Definition Icu.h:291
@ ICU_MODE_EDGE_COUNTER
Definition Icu.h:359
@ ICU_MODE_SIGNAL_EDGE_DETECT
Definition Icu.h:353
@ ICU_MODE_TIMESTAMP
Definition Icu.h:357
@ ICU_MODE_SIGNAL_MEASUREMENT
Definition Icu.h:355
@ ICU_HIGH_TIME
Definition Icu.h:370
@ ICU_PERIOD_TIME
Definition Icu.h:372
@ ICU_DUTY_CYCLE
Definition Icu.h:374
@ ICU_LOW_TIME
Definition Icu.h:368
ICU Channel Config Structure of Pre-Compile only.
Definition Icu.h:406
ICU Channel Config Structure.
Definition Icu.h:423
ICU Config Structure of Pre-Compile only.
Definition Icu.h:415
ICU Config Structure.
Definition Icu.h:444
This type defines Duty Cycle struct.
Definition Icu.h:331
Icu register readback structure.
Definition Icu.h:457