MCUSW
Icu.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (C) 2023 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 (9U)
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 #define ICU_SID_REGISTER_READBACK ((uint8) 0x18U)
212 /* @} */
213 
220 /*
221 *Design: MCAL-7045
222 */
224 #define ICU_E_PARAM_POINTER ((uint8) 0x0AU)
225 
229 #define ICU_E_PARAM_CHANNEL ((uint8) 0x0BU)
230 
231 #define ICU_E_PARAM_ACTIVATION ((uint8) 0x0CU)
232 
233 #define ICU_E_INIT_FAILED ((uint8) 0x0DU)
234 
235 #define ICU_E_PARAM_BUFFER_SIZE ((uint8) 0x0EU)
236 
237 #define ICU_E_PARAM_MODE ((uint8) 0x0FU)
238 
239 #define ICU_E_UNINIT ((uint8) 0x14U)
240 
241 #define ICU_E_NOT_STARTED ((uint8) 0x16U)
242 
243 #define ICU_E_BUSY_OPERATION ((uint8) 0x16U)
244 
245 #define ICU_E_ALREADY_INITIALIZED ((uint8) 0x17U)
246 
247 #define ICU_E_PARAM_NOTIFY_INTERVAL ((uint8) 0x18U)
248 
249 #define ICU_E_PARAM_VINFO ((uint8) 0x19U)
250 /* @} */
251 
258 /*
259 *Design: MCAL-7144
260 */
262 #define ICU_STATUS_UNINIT ((uint8)(0U))
263 
264 #define ICU_STATUS_INIT ((uint8)(1U))
265 /* @} */
266 
272 #define ICU_FALLING ((uint8)(0U))
273 
274 #define ICU_RISING ((uint8)(1U))
275 
276 /* ========================================================================== */
277 /* Structures and Enums */
278 /* ========================================================================== */
279 
288 typedef enum
289 {
294 } Icu_ModeType;
295 
299 typedef enum
300 {
306 
307 
311 typedef enum
312 {
320 
324 typedef uint32 Icu_ValueType;
325 
329 typedef struct
330 {
336 
340 typedef uint32 Icu_IndexType;
341 
345 typedef uint32 Icu_EdgeNumberType;
346 
350 typedef enum
351 {
361 
365 typedef enum
366 {
376 
380 typedef enum
381 {
387 
389 typedef void (*Icu_NotifyFuncType)(void);
390 
394 typedef uint8 Icu_ChannelType;
395 
400 
404 typedef struct
405 {
409 
413 typedef struct Icu_ConfigType_PC_s
414 {
418 
422 typedef struct {
435  uint32 prescaler;
438 
442 typedef struct Icu_ConfigType_s
443 {
449 
450 #if (STD_ON == ICU_SAFETY_DIAGNOSTIC_API)
451 
455 typedef struct
456 {
457  /*
458  * ECAP related registers
459  */
460  uint32 ECAP_CNTPHS;
461  uint32 ECAP_ECCTL;
463 
465 #endif /* #if (STD_ON == ICU_REGISTER_READBACK_API) */
466 /* @} */
467 
468 
469 
470 /* ========================================================================== */
471 /* Function Declarations */
472 /* ========================================================================== */
473 
474 
493 FUNC(void, ICU_CODE) Icu_Init(
494  P2CONST(Icu_ConfigType, AUTOMATIC, ICU_PBCFG) ConfigPtr);
495 
496 
497 
498 #if (STD_ON == ICU_DE_INIT_API)
499 
515 FUNC(void, ICU_CODE) Icu_DeInit( void );
516 #endif
517 
538 FUNC(void, ICU_CODE) Icu_SetActivationCondition( Icu_ChannelType Channel, Icu_ActivationType Activation );
539 
556 FUNC(void, ICU_CODE) Icu_DisableNotification( Icu_ChannelType Channel );
557 
574 FUNC(void, ICU_CODE) Icu_EnableNotification( Icu_ChannelType Channel );
575 
576 
577 #if (ICU_GET_INPUT_STATE_API == STD_ON)
578 
594 FUNC(Icu_InputStateType, ICU_CODE) Icu_GetInputState( Icu_ChannelType Channel );
595 #endif
596 
597 #if (ICU_TIMESTAMP_API == STD_ON)
598 
619 FUNC(void, ICU_CODE) Icu_StartTimestamp( Icu_ChannelType Channel, Icu_ValueType* BufferPtr, uint16 BufferSize, uint16 NotifyInterval );
620 
637 FUNC(void, ICU_CODE) Icu_StopTimestamp( Icu_ChannelType Channel );
638 
655 FUNC(Icu_IndexType, ICU_CODE) Icu_GetTimestampIndex( Icu_ChannelType Channel );
656 #endif
657 
658 #if (ICU_EDGE_COUNT_API == STD_ON)
659 
675 FUNC(void, ICU_CODE) Icu_ResetEdgeCount( Icu_ChannelType Channel );
676 
693 FUNC(void, ICU_CODE) Icu_EnableEdgeCount( Icu_ChannelType Channel );
694 
711 FUNC(void, ICU_CODE) Icu_DisableEdgeCount( Icu_ChannelType Channel );
712 
729 FUNC(Icu_EdgeNumberType, ICU_CODE) Icu_GetEdgeNumbers( Icu_ChannelType Channel );
730 #endif
731 
732 #if (ICU_EDGE_DETECT_API == STD_ON)
733 
749 FUNC(void, ICU_CODE) Icu_EnableEdgeDetection( Icu_ChannelType Channel );
750 
767 FUNC(void, ICU_CODE) Icu_DisableEdgeDetection( Icu_ChannelType Channel );
768 #endif
769 
770 #if (ICU_SIGNAL_MEASUREMENT_API == STD_ON)
771 
787 FUNC(void, ICU_CODE) Icu_StartSignalMeasurement( Icu_ChannelType Channel );
788 
805 FUNC(void, ICU_CODE) Icu_StopSignalMeasurement( Icu_ChannelType Channel );
806 #endif
807 
808 #if (ICU_GET_TIME_ELAPSED_API == STD_ON)
809 
825 FUNC (Icu_ValueType, ICU_CODE) Icu_GetTimeElapsed( Icu_ChannelType Channel );
826 #endif
827 
828 #if (ICU_GET_DUTY_CYCLE_VALUES_API == STD_ON)
829 
846 FUNC (void, ICU_CODE) Icu_GetDutyCycleValues( Icu_ChannelType Channel,
847  Icu_DutyCycleType* DutyCycleValues );
848 #endif
849 
850 #if (ICU_GET_VERSION_INFO_API)
851 
869 FUNC(void, ICU_CODE) Icu_GetVersionInfo(
870  P2VAR(Std_VersionInfoType, AUTOMATIC, sICU_APPL_DATA) VersionInfoPtr);
871 
872 #endif
873 
874 #if (STD_ON == ICU_SAFETY_DIAGNOSTIC_API)
875 FUNC(Std_ReturnType, ICU_CODE) Icu_RegisterReadback(
876  Icu_ChannelType IcuChannel,
877  P2VAR(Icu_RegisterReadbackType, AUTOMATIC, ICU_APPL_DATA) RegRbPtr);
878 #endif
879 
880 FUNC(Icu_IndexType, ICU_CODE) Icu_GetTimeStampIndex(Icu_ChannelType Channel);
881 
882 
883 #ifdef __cplusplus
884 }
885 #endif
886 /* @} */
887 
888 #endif /* ICU_H_ */
889 
890 /* @} */
uint32 instanceClkMHz
Definition: Icu.h:433
Icu_TimestampBufferType bufferType
Definition: Icu.h:431
Definition: Icu.h:301
uint32 ECAP_CNTPHS
Definition: Icu.h:460
Icu_TimestampBufferType
This type defines TimeStamp Property range.
Definition: Icu.h:380
Definition: Icu.h:369
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:373
This type defines Duty Cycle struct.
Definition: Icu.h:329
Definition: Icu.h:358
Definition: Icu.h:354
uint32 ECAP_ECCTL
Definition: Icu.h:461
Definition: Icu.h:384
Icu_ModeType
This type defines a range of mode type.
Definition: Icu.h:288
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:404
Icu_ActivationType defaultStartEdge
Definition: Icu.h:423
uint32 Icu_EdgeNumberType
This type defines return value of Icu-Icu_GetEdgeNumbers.
Definition: Icu.h:345
Definition: Icu.h:367
Definition: Icu.h:382
Icu_EdgeNumberType Icu_GetEdgeNumbers(Icu_ChannelType Channel)
Service for reading the number of counted edges.
Icu_ChannelType channelId
Definition: Icu.h:406
ICU Channel Config Structure.
Definition: Icu.h:422
void Icu_DisableNotification(Icu_ChannelType Channel)
Service for disabling notification.
uint32 Icu_ValueType
This type defines Value type.
Definition: Icu.h:324
Definition: Icu.h:303
This file contains generated pre compile configuration file for ICU MCAL driver.
uint32 ECAP_ECINT_EN_FLG
Definition: Icu.h:462
Definition: Icu.h:317
Icu_ChannelType icuMaxChannel
Definition: Icu.h:444
Icu_NotifyFuncType notificationHandler
Definition: Icu.h:429
void Icu_DisableEdgeCount(Icu_ChannelType Channel)
Service for disabling the couting of edges of the given channel.
Icu_ValueType PeriodTime
Definition: Icu.h:333
ICU Config Structure.
Definition: Icu.h:442
void Icu_EnableNotification(Icu_ChannelType Channel)
Service for enabling notification.
uint32 prescaler
Definition: Icu.h:435
Icu_ValueType ActiveTime
Definition: Icu.h:331
void Icu_ResetEdgeCount(Icu_ChannelType Channel)
Service for resets the value of the counted edges to zero.
Icu_SignalMeasurementPropertyType signalMeasurementProperty
Definition: Icu.h:427
void(* Icu_NotifyFuncType)(void)
Notification callback function pointer.
Definition: Icu.h:389
Definition: Icu.h:371
Icu_InputStateType
This type defines a input state of ICU driver.
Definition: Icu.h:299
Icu_ValueType Icu_GetTimeElapsed(Icu_ChannelType Channel)
Service for reading the elasped time for the given channel.
Definition: Icu.h:290
uint32 Icu_ChannelPrescalerType
This type defines Prescaler type.
Definition: Icu.h:399
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:413
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:311
Std_ReturnType Icu_RegisterReadback(Icu_ChannelType IcuChannel, Icu_RegisterReadbackType *RegRbPtr)
Definition: Icu.h:352
Definition: Icu.h:292
Icu register readback structure.
Definition: Icu.h:455
void Icu_DeInit(void)
Service for ICU de-initialization.
uint8 Icu_ChannelType
This type defines Channel type.
Definition: Icu.h:394
void Icu_EnableEdgeDetection(Icu_ChannelType Channel)
Service for enabling/re-enabling the detection of edges of the given channel.
Definition: Icu.h:315
uint32 Icu_IndexType
This type defines return value Icu_GetTimeStampIndex.
Definition: Icu.h:340
void Icu_DisableEdgeDetection(Icu_ChannelType Channel)
Service for disabling the detection of edges of the given channel.
Icu_MeasurementModeType measurementMode
Definition: Icu.h:425
Definition: Icu.h:356
Icu_MeasurementModeType
This type defines available measurement modes.
Definition: Icu.h:350
Icu_SignalMeasurementPropertyType
This type defines Signal Measurement Property range.
Definition: Icu.h:365
void Icu_SetActivationCondition(Icu_ChannelType Channel, Icu_ActivationType Activation)
Service for setting Activation Condition.
Definition: Icu.h:313
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.