MCUSW
Icu.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2021 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 
112 #ifdef __cplusplus
113 extern "C"
114 {
115 #endif
116 
117 /* ========================================================================== */
118 /* Macros & Typedefs */
119 /* ========================================================================== */
120 
126 #define ICU_VENDOR_ID ((uint16) 44U)
127 
128 #define ICU_MODULE_ID ((uint16) 122U)
129 
130 #define ICU_INSTANCE_ID ((uint8) 0U)
131 /* @} */
132 
140 #define ICU_SW_MAJOR_VERSION (2U)
141 
142 #define ICU_SW_MINOR_VERSION (0U)
143 
144 #define ICU_SW_PATCH_VERSION (0U)
145 /* @} */
146 
154 #define ICU_AR_RELEASE_MAJOR_VERSION (4U)
155 
156 #define ICU_AR_RELEASE_MINOR_VERSION (3U)
157 
158 #define ICU_AR_RELEASE_REVISION_VERSION (1U)
159 /* @} */
160 
169 #define ICU_INIT_ID ((uint8) 0x00U)
170 
171 #define ICU_DEINIT_ID ((uint8) 0x01U)
172 
173 #define ICU_SETMODE_ID ((uint8) 0x02U)
174 
175 #define ICU_SETACTIVATIONCONDITION_ID ((uint8) 0x05U)
176 
177 #define ICU_DISABLENOTIFICATION_ID ((uint8) 0x06U)
178 
179 #define ICU_ENABLENOTIFICATION_ID ((uint8) 0x07U)
180 
181 #define ICU_GETINPUTSTATE_ID ((uint8) 0x08U)
182 
183 #define ICU_STARTTIMESTAMP_ID ((uint8) 0x09U)
184 
185 #define ICU_STOPTIMESTAMP_ID ((uint8) 0x0AU)
186 
187 #define ICU_GETTIMESTAMPINDEX_ID ((uint8) 0x0BU)
188 
189 #define ICU_RESETEDGECOUNT_ID ((uint8) 0x0CU)
190 
191 #define ICU_ENABLEEDGECOUNT_ID ((uint8) 0x0DU)
192 
193 #define ICU_ENABLEEDGEDETECTION_ID ((uint8) 0x16U)
194 
195 #define ICU_DISABLEEDGEDETECTION_ID ((uint8) 0x17U)
196 
197 #define ICU_DISABLEEDGECOUNT_ID ((uint8) 0x0EU)
198 
199 #define ICU_GETEDGENUMBERS_ID ((uint8) 0x0FU)
200 
201 #define ICU_STARTSIGNALMEASUREMENT_ID ((uint8) 0x13U)
202 
203 #define ICU_STOPSIGNALMEASUREMENT_ID ((uint8) 0x14U)
204 
205 #define ICU_GETTIMEELAPSED_ID ((uint8) 0x10U)
206 
207 #define ICU_GETDUTYCYCLEVALUES_ID ((uint8) 0x11U)
208 
209 #define ICU_GETVERSIONINFO_ID ((uint8) 0x12U)
210 /* @} */
211 
218 /*
219 *Design: MCAL-7045
220 */
222 #define ICU_E_PARAM_POINTER ((uint8) 0x0AU)
223 
227 #define ICU_E_PARAM_CHANNEL ((uint8) 0x0BU)
228 
229 #define ICU_E_PARAM_ACTIVATION ((uint8) 0x0CU)
230 
231 #define ICU_E_INIT_FAILED ((uint8) 0x0DU)
232 
233 #define ICU_E_PARAM_BUFFER_SIZE ((uint8) 0x0EU)
234 
235 #define ICU_E_PARAM_MODE ((uint8) 0x0FU)
236 
237 #define ICU_E_UNINIT ((uint8) 0x14U)
238 
239 #define ICU_E_NOT_STARTED ((uint8) 0x16U)
240 
241 #define ICU_E_BUSY_OPERATION ((uint8) 0x16U)
242 
243 #define ICU_E_ALREADY_INITIALIZED ((uint8) 0x17U)
244 
245 #define ICU_E_PARAM_NOTIFY_INTERVAL ((uint8) 0x18U)
246 
247 #define ICU_E_PARAM_VINFO ((uint8) 0x19U)
248 /* @} */
249 
256 /*
257 *Design: MCAL-7144
258 */
260 #define ICU_STATUS_UNINIT ((uint8)(0U))
261 
262 #define ICU_STATUS_INIT ((uint8)(1U))
263 /* @} */
264 
270 #define ICU_FALLING ((uint8)(0U))
271 
272 #define ICU_RISING ((uint8)(1U))
273 
274 /* ========================================================================== */
275 /* Structures and Enums */
276 /* ========================================================================== */
277 
286 typedef enum
287 {
292 } Icu_ModeType;
293 
297 typedef enum
298 {
304 
305 
309 typedef enum
310 {
318 
322 typedef uint32 Icu_ValueType;
323 
327 typedef struct
328 {
334 
338 typedef uint32 Icu_IndexType;
339 
343 typedef uint32 Icu_EdgeNumberType;
344 
348 typedef enum
349 {
359 
363 typedef enum
364 {
374 
378 typedef enum
379 {
385 
387 typedef void (*Icu_NotifyFuncType)(void);
388 
392 typedef uint8 Icu_ChannelType;
393 
398 
402 typedef struct
403 {
407 
411 typedef struct Icu_ConfigType_PC_s
412 {
416 
420 typedef struct {
433  uint32 prescaler;
436 
440 typedef struct Icu_ConfigType_s
441 {
447 
448 #if (STD_ON == ICU_SAFETY_DIAGNOSTIC_API)
449 
453 typedef struct
454 {
455  /*
456  * ECAP related registers
457  */
458  uint32 ECAP_CNTPHS;
459  uint32 ECAP_ECCTL;
461 
463 #endif /* #if (STD_ON == ICU_REGISTER_READBACK_API) */
464 /* @} */
465 
466 
467 
468 /* ========================================================================== */
469 /* Function Declarations */
470 /* ========================================================================== */
471 
472 
491 FUNC(void, ICU_CODE) Icu_Init(
492  P2CONST(Icu_ConfigType, AUTOMATIC, ICU_PBCFG) ConfigPtr);
493 
494 
495 
496 #if (STD_ON == ICU_DE_INIT_API)
497 
513 FUNC(void, ICU_CODE) Icu_DeInit( void );
514 #endif
515 
536 FUNC(void, ICU_CODE) Icu_SetActivationCondition( Icu_ChannelType Channel, Icu_ActivationType Activation );
537 
554 FUNC(void, ICU_CODE) Icu_DisableNotification( Icu_ChannelType Channel );
555 
572 FUNC(void, ICU_CODE) Icu_EnableNotification( Icu_ChannelType Channel );
573 
574 
575 #if (ICU_GET_INPUT_STATE_API == STD_ON)
576 
592 FUNC(Icu_InputStateType, ICU_CODE) Icu_GetInputState( Icu_ChannelType Channel );
593 #endif
594 
595 #if (ICU_TIMESTAMP_API == STD_ON)
596 
617 FUNC(void, ICU_CODE) Icu_StartTimestamp( Icu_ChannelType Channel, Icu_ValueType* BufferPtr, uint16 BufferSize, uint16 NotifyInterval );
618 
635 FUNC(void, ICU_CODE) Icu_StopTimestamp( Icu_ChannelType Channel );
636 
653 FUNC(Icu_IndexType, ICU_CODE) Icu_GetTimestampIndex( Icu_ChannelType Channel );
654 #endif
655 
656 #if (ICU_EDGE_COUNT_API == STD_ON)
657 
673 FUNC(void, ICU_CODE) Icu_ResetEdgeCount( Icu_ChannelType Channel );
674 
691 FUNC(void, ICU_CODE) Icu_EnableEdgeCount( Icu_ChannelType Channel );
692 
709 FUNC(void, ICU_CODE) Icu_DisableEdgeCount( Icu_ChannelType Channel );
710 
727 FUNC(Icu_EdgeNumberType, ICU_CODE) Icu_GetEdgeNumbers( Icu_ChannelType Channel );
728 #endif
729 
730 #if (ICU_EDGE_DETECT_API == STD_ON)
731 
747 FUNC(void, ICU_CODE) Icu_EnableEdgeDetection( Icu_ChannelType Channel );
748 
765 FUNC(void, ICU_CODE) Icu_DisableEdgeDetection( Icu_ChannelType Channel );
766 #endif
767 
768 #if (ICU_SIGNAL_MEASUREMENT_API == STD_ON)
769 
785 FUNC(void, ICU_CODE) Icu_StartSignalMeasurement( Icu_ChannelType Channel );
786 
803 FUNC(void, ICU_CODE) Icu_StopSignalMeasurement( Icu_ChannelType Channel );
804 #endif
805 
806 #if (ICU_GET_TIME_ELAPSED_API == STD_ON)
807 
823 FUNC (Icu_ValueType, ICU_CODE) Icu_GetTimeElapsed( Icu_ChannelType Channel );
824 #endif
825 
826 #if (ICU_GET_DUTY_CYCLE_VALUES_API == STD_ON)
827 
844 FUNC (void, ICU_CODE) Icu_GetDutyCycleValues( Icu_ChannelType Channel,
845  Icu_DutyCycleType* DutyCycleValues );
846 #endif
847 
848 #if (ICU_GET_VERSION_INFO_API)
849 
867 FUNC(void, ICU_CODE) Icu_GetVersionInfo(
868  P2VAR(Std_VersionInfoType, AUTOMATIC, sICU_APPL_DATA) VersionInfoPtr);
869 
870 #endif
871 
872 #if (STD_ON == ICU_SAFETY_DIAGNOSTIC_API)
873 FUNC(Std_ReturnType, ICU_CODE) Icu_RegisterReadback(
874  Icu_ChannelType IcuChannel,
875  P2VAR(Icu_RegisterReadbackType, AUTOMATIC, ICU_APPL_DATA) RegRbPtr);
876 #endif
877 
878 FUNC(Icu_IndexType, ICU_CODE) Icu_GetTimeStampIndex(Icu_ChannelType Channel);
879 
880 
881 #ifdef __cplusplus
882 }
883 #endif
884 /* @} */
885 
886 #endif /* ICU_H_ */
887 
888 /* @} */
uint32 instanceClkMHz
Definition: Icu.h:431
Icu_TimestampBufferType bufferType
Definition: Icu.h:429
Definition: Icu.h:299
uint32 ECAP_CNTPHS
Definition: Icu.h:458
Icu_TimestampBufferType
This type defines TimeStamp Property range.
Definition: Icu.h:378
Definition: Icu.h:367
void Icu_StartSignalMeasurement(Icu_ChannelType Channel)
Service for starting the measurement of signals.
#define ICU_MAX_NUM_CHANNELS
Definition: Icu_Cfg.h:151
Definition: Icu.h:371
This type defines Duty Cycle struct.
Definition: Icu.h:327
Definition: Icu.h:356
Definition: Icu.h:352
uint32 ECAP_ECCTL
Definition: Icu.h:459
Definition: Icu.h:382
Icu_ModeType
This type defines a range of mode type.
Definition: Icu.h:286
void Icu_Init(const Icu_ConfigType *ConfigPtr)
Service for ICU initialization.
Icu_InputStateType Icu_GetInputState(Icu_ChannelType Channel)
Service for getting the ICU input status.
void Icu_StopSignalMeasurement(Icu_ChannelType Channel)
Service for stopping the measurement of signals.
ICU Channel Config Structure of Pre-Compile only.
Definition: Icu.h:402
Icu_ActivationType defaultStartEdge
Definition: Icu.h:421
uint32 Icu_EdgeNumberType
This type defines return value of Icu-Icu_GetEdgeNumbers.
Definition: Icu.h:343
Definition: Icu.h:365
Definition: Icu.h:380
Icu_EdgeNumberType Icu_GetEdgeNumbers(Icu_ChannelType Channel)
Service for reading the number of counted edges.
Icu_ChannelType channelId
Definition: Icu.h:404
ICU Channel Config Structure.
Definition: Icu.h:420
void Icu_DisableNotification(Icu_ChannelType Channel)
Service for disabling notification.
uint32 Icu_ValueType
This type defines Value type.
Definition: Icu.h:322
Definition: Icu.h:301
This file contains generated pre compile configuration file for ICU MCAL driver.
uint32 ECAP_ECINT_EN_FLG
Definition: Icu.h:460
Definition: Icu.h:315
Icu_ChannelType icuMaxChannel
Definition: Icu.h:442
Icu_NotifyFuncType notificationHandler
Definition: Icu.h:427
void Icu_DisableEdgeCount(Icu_ChannelType Channel)
Service for disabling the couting of edges of the given channel.
Icu_ValueType PeriodTime
Definition: Icu.h:331
ICU Config Structure.
Definition: Icu.h:440
void Icu_EnableNotification(Icu_ChannelType Channel)
Service for enabling notification.
uint32 prescaler
Definition: Icu.h:433
Icu_ValueType ActiveTime
Definition: Icu.h:329
void Icu_ResetEdgeCount(Icu_ChannelType Channel)
Service for resets the value of the counted edges to zero.
Icu_SignalMeasurementPropertyType signalMeasurementProperty
Definition: Icu.h:425
void(* Icu_NotifyFuncType)(void)
Notification callback function pointer.
Definition: Icu.h:387
Definition: Icu.h:369
Icu_InputStateType
This type defines a input state of ICU driver.
Definition: Icu.h:297
Icu_ValueType Icu_GetTimeElapsed(Icu_ChannelType Channel)
Service for reading the elasped time for the given channel.
Definition: Icu.h:288
uint32 Icu_ChannelPrescalerType
This type defines Prescaler type.
Definition: Icu.h:397
Icu_IndexType Icu_GetTimeStampIndex(Icu_ChannelType Channel)
void Icu_StartTimestamp(Icu_ChannelType Channel, Icu_ValueType *BufferPtr, uint16 BufferSize, uint16 NotifyInterval)
Service for starts the captuing of timer values on the edges.
ICU Config Structure of Pre-Compile only.
Definition: Icu.h:411
Icu_IndexType Icu_GetTimestampIndex(Icu_ChannelType Channel)
Service for reading the timestamp index of a givem channel.
Icu_ActivationType
This type defines Activation range.
Definition: Icu.h:309
Std_ReturnType Icu_RegisterReadback(Icu_ChannelType IcuChannel, Icu_RegisterReadbackType *RegRbPtr)
Definition: Icu.h:350
Definition: Icu.h:290
Icu register readback structure.
Definition: Icu.h:453
void Icu_DeInit(void)
Service for ICU de-initialization.
uint8 Icu_ChannelType
This type defines Channel type.
Definition: Icu.h:392
void Icu_EnableEdgeDetection(Icu_ChannelType Channel)
Service for enabling/re-enabling the detection of edges of the given channel.
Definition: Icu.h:313
uint32 Icu_IndexType
This type defines return value Icu_GetTimeStampIndex.
Definition: Icu.h:338
void Icu_DisableEdgeDetection(Icu_ChannelType Channel)
Service for disabling the detection of edges of the given channel.
Icu_MeasurementModeType measurementMode
Definition: Icu.h:423
Definition: Icu.h:354
Icu_MeasurementModeType
This type defines available measurement modes.
Definition: Icu.h:348
Icu_SignalMeasurementPropertyType
This type defines Signal Measurement Property range.
Definition: Icu.h:363
void Icu_SetActivationCondition(Icu_ChannelType Channel, Icu_ActivationType Activation)
Service for setting Activation Condition.
Definition: Icu.h:311
void Icu_GetDutyCycleValues(Icu_ChannelType Channel, Icu_DutyCycleType *DutyCycleValues)
Service for reading the coherent active time and period time of given channel.
void Icu_StopTimestamp(Icu_ChannelType Channel)
Service for stopping the timestamp measurement.
void Icu_EnableEdgeCount(Icu_ChannelType Channel)
Service enabling the counting of edges of a given channel.