AM64x MCU+ SDK  08.02.00
ecap/v0/ecap.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
50 #ifndef ECAP_V0_H_
51 #define ECAP_V0_H_
52 
53 /* ========================================================================== */
54 /* Include Files */
55 /* ========================================================================== */
56 
57 #include <drivers/hw_include/cslr.h>
58 #include <drivers/hw_include/cslr_ecap.h>
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63 
64 /* ========================================================================== */
65 /* Macros & Typedefs */
66 /* ========================================================================== */
67 
74 #define ECAP_CAPTURE_MODE (0U)
75 
76 #define ECAP_APWM_MODE (1U)
77 
85 #define ECAP_CAPTURE_EVENT_1 ((uint32_t)0x08U)
86 
87 #define ECAP_CAPTURE_EVENT_2 ((uint32_t)0x0cU)
88 
89 #define ECAP_CAPTURE_EVENT_3 ((uint32_t)0x10U)
90 
91 #define ECAP_CAPTURE_EVENT_4 ((uint32_t)0x14U)
92 
100 #define ECAP_CAPTURE_EVENT1_STOP ((uint32_t)0x00U)
101 
102 #define ECAP_CAPTURE_EVENT2_STOP ((uint32_t)0x01U)
103 
104 #define ECAP_CAPTURE_EVENT3_STOP ((uint32_t)0x02U)
105 
106 #define ECAP_CAPTURE_EVENT4_STOP ((uint32_t)0x03U)
107 
115 #define ECAP_APWM_ACTIVE_HIGH (0U)
116 
117 #define ECAP_APWM_ACTIVE_LOW (1U)
118 
126 #define ECAP_COUNTER_STOP (0U)
127 
128 #define ECAP_COUNTER_FREE_RUNNING (1U)
129 
137 #define ECAP_SYNC_IN_DISABLE ((uint32_t)0U)
138 
140 #define ECAP_ENABLE_COUNTER ((uint32_t)1U)
141 
149 #define ECAP_SYNC_IN ((uint32_t)0x0U)
150 
151 #define ECAP_PRD_EQ ((uint32_t)0x1U)
152 
153 #define ECAP_SYNC_OUT_DISABLE ((uint32_t)0x2U)
154 
162 #define ECAP_CEVT1_INT (ECAP_ECEINT_CEVT1)
163 
164 #define ECAP_CEVT2_INT (ECAP_ECEINT_CEVT2)
165 
166 #define ECAP_CEVT3_INT (ECAP_ECEINT_CEVT3)
167 
168 #define ECAP_CEVT4_INT (ECAP_ECEINT_CEVT4)
169 
170 #define ECAP_CNTOVF_INT (ECAP_ECEINT_CTROVF)
171 
172 #define ECAP_PRDEQ_INT (ECAP_ECEINT_CTR_PRD)
173 
174 #define ECAP_CMPEQ_INT (ECAP_ECEINT_CTR_CMP)
175 
183 #define ECAP_GLOBAL_INT (ECAP_ECFLG_INT)
184 
192 #define ECAP_CAPTURE_EVENT_RISING (0U)
193 
194 #define ECAP_CAPTURE_EVENT_FALLING (1U)
195 
203 #define ECAP_CAPTURE_EVENT_RESET_COUNTER_NO_RESET (0U)
204 
205 #define ECAP_CAPTURE_EVENT_RESET_COUNTER_RESET (1U)
206 
208 /* ========================================================================== */
209 /* Structures and Enums */
210 /* ========================================================================== */
211 
212 /* None */
213 
214 /* ========================================================================== */
215 /* Global Variables Declarations */
216 /* ========================================================================== */
217 
218 /* None */
219 
220 /* ========================================================================== */
221 /* Function Declarations */
222 /* ========================================================================== */
223 
229 void ECAP_captureLoadingEnable(uint32_t baseAddr);
230 
236 void ECAP_captureLoadingDisable(uint32_t baseAddr);
237 
247 void ECAP_prescaleConfig(uint32_t baseAddr, uint32_t prescale);
248 
260 void ECAP_operatingModeSelect(uint32_t baseAddr, uint32_t modeSelect);
261 
274 uint32_t ECAP_timeStampRead(uint32_t baseAddr, uint32_t capEvtFlag);
275 
283 void ECAP_counterConfig(uint32_t baseAddr, uint32_t countVal);
284 
304 void ECAP_captureEvtPolarityConfig(uint32_t baseAddr, uint32_t capEvt1pol,
305  uint32_t capEvt2pol, uint32_t capEvt3pol,
306  uint32_t capEvt4pol);
307 
327 void ECAP_captureEvtCntrRstConfig(uint32_t baseAddr, uint32_t counterRst1,
328  uint32_t counterRst2, uint32_t counterRst3,
329  uint32_t counterRst4);
330 
339 void ECAP_continousModeConfig(uint32_t baseAddr);
340 
356 void ECAP_oneShotModeConfig(uint32_t baseAddr, uint32_t stopVal);
357 
369 void ECAP_oneShotReArm(uint32_t baseAddr);
370 
381 void ECAP_APWM_polarityConfig(uint32_t baseAddr, uint32_t flag);
382 
394 void ECAP_counterControl(uint32_t baseAddr, uint32_t flag);
395 
414 void ECAP_syncInOutSelect(uint32_t baseAddr, uint32_t syncIn, uint32_t syncOut);
415 
425 void ECAP_APWM_captureConfig(uint32_t baseAddr, uint32_t compareVal, uint32_t periodVal);
426 
434 void ECAP_APWM_shadowCaptureConfig(uint32_t baseAddr, uint32_t compareVal, uint32_t periodVal);
435 
443 void ECAP_counterPhaseValConfig(uint32_t baseAddr, uint32_t cntPhaseVal);
444 
452 void ECAP_globalIntrClear(uint32_t baseAddr);
453 
464 void ECAP_intrEnable(uint32_t baseAddr, uint32_t flag);
465 
476 void ECAP_intrDisable(uint32_t baseAddr, uint32_t flag);
477 
491 uint32_t ECAP_getIntrStatus(uint32_t baseAddr, uint32_t flag);
492 
503 void ECAP_intrStatusClear(uint32_t baseAddr, uint32_t flag);
504 
513 uint32_t ECAP_peripheralIdGet(uint32_t baseAddr);
514 
515 /* ========================================================================== */
516 /* Static Function Definitions */
517 /* ========================================================================== */
518 
519 /* None */
520 
521 #ifdef __cplusplus
522 }
523 #endif
524 
525 #endif /* #ifndef ECAP_V0_H_ */
526 
ECAP_APWM_captureConfig
void ECAP_APWM_captureConfig(uint32_t baseAddr, uint32_t compareVal, uint32_t periodVal)
When ECAP module is configured in APWM mode capture 1 and capture 2 registers are used as period and ...
ECAP_captureLoadingEnable
void ECAP_captureLoadingEnable(uint32_t baseAddr)
This function enables capture loading.
ECAP_captureEvtPolarityConfig
void ECAP_captureEvtPolarityConfig(uint32_t baseAddr, uint32_t capEvt1pol, uint32_t capEvt2pol, uint32_t capEvt3pol, uint32_t capEvt4pol)
This function configures Capture Event polarity.
ECAP_oneShotReArm
void ECAP_oneShotReArm(uint32_t baseAddr)
This function configures ECAP to One-Short Re-arming.
ECAP_counterPhaseValConfig
void ECAP_counterPhaseValConfig(uint32_t baseAddr, uint32_t cntPhaseVal)
This function configures the counter phase value.
ECAP_counterControl
void ECAP_counterControl(uint32_t baseAddr, uint32_t flag)
This function configures counter to stop or free running based on its input argument flag.
ECAP_intrStatusClear
void ECAP_intrStatusClear(uint32_t baseAddr, uint32_t flag)
This function clears of the status specified interrupts.
ECAP_operatingModeSelect
void ECAP_operatingModeSelect(uint32_t baseAddr, uint32_t modeSelect)
This function configures ecapture module to operate in capture mode or in APWM mode.
ECAP_globalIntrClear
void ECAP_globalIntrClear(uint32_t baseAddr)
This function clears global interrupt and enables the generation of interrupts if any of the event in...
ECAP_counterConfig
void ECAP_counterConfig(uint32_t baseAddr, uint32_t countVal)
This function configures the counter register which is used as Capture Time base.
ECAP_captureLoadingDisable
void ECAP_captureLoadingDisable(uint32_t baseAddr)
This function disables capture loading.
ECAP_oneShotModeConfig
void ECAP_oneShotModeConfig(uint32_t baseAddr, uint32_t stopVal)
This function configures ECAP to One-shot mode and also stop value for this mode.
ECAP_APWM_polarityConfig
void ECAP_APWM_polarityConfig(uint32_t baseAddr, uint32_t flag)
This function configures output polarity for APWM output.
ECAP_captureEvtCntrRstConfig
void ECAP_captureEvtCntrRstConfig(uint32_t baseAddr, uint32_t counterRst1, uint32_t counterRst2, uint32_t counterRst3, uint32_t counterRst4)
This function enables reset of the counters upon Capture Events.
ECAP_intrDisable
void ECAP_intrDisable(uint32_t baseAddr, uint32_t flag)
This function disables the specified interrupts.
ECAP_getIntrStatus
uint32_t ECAP_getIntrStatus(uint32_t baseAddr, uint32_t flag)
This function returns the status specified interrupts.
ECAP_peripheralIdGet
uint32_t ECAP_peripheralIdGet(uint32_t baseAddr)
This function returns the peripheral ID.
ECAP_intrEnable
void ECAP_intrEnable(uint32_t baseAddr, uint32_t flag)
This function enables the specified interrupts.
ECAP_syncInOutSelect
void ECAP_syncInOutSelect(uint32_t baseAddr, uint32_t syncIn, uint32_t syncOut)
This function configures Sync-In and Sync-Out.
ECAP_timeStampRead
uint32_t ECAP_timeStampRead(uint32_t baseAddr, uint32_t capEvtFlag)
This function returns time-stamp for a given capture event.
ECAP_prescaleConfig
void ECAP_prescaleConfig(uint32_t baseAddr, uint32_t prescale)
This function configures prescale value.
ECAP_APWM_shadowCaptureConfig
void ECAP_APWM_shadowCaptureConfig(uint32_t baseAddr, uint32_t compareVal, uint32_t periodVal)
This function configures the Shadow register.
ECAP_continousModeConfig
void ECAP_continousModeConfig(uint32_t baseAddr)
This function configures ECAP to Continuous mode.