CC27xxDriverLibrary
ckmd.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Filename: ckmd.h
3  *
4  * Description: Defines and prototypes for the CKMD module.
5  *
6  * Copyright (c) 2023-2025 Texas Instruments Incorporated
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions are met:
10  *
11  * 1) Redistributions of source code must retain the above copyright notice,
12  * this list of conditions and the following disclaimer.
13  *
14  * 2) Redistributions in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the documentation
16  * and/or other materials provided with the distribution.
17  *
18  * 3) Neither the name of the copyright holder nor the names of its
19  * contributors may be used to endorse or promote products derived from this
20  * software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
26  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *
34  ******************************************************************************/
35 
36 #ifndef __CKMD_H__
37 #define __CKMD_H__
38 
39 //*****************************************************************************
40 //
45 //
46 //*****************************************************************************
47 
48 //*****************************************************************************
49 //
50 // If building with a C++ compiler, make all of the definitions in this header
51 // have a C binding.
52 //
53 //*****************************************************************************
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 #include <stdbool.h>
59 #include <stdint.h>
60 
61 #include "../inc/hw_types.h"
62 #include "../inc/hw_memmap.h"
63 #include "../inc/hw_ckmd.h"
64 #include "../inc/hw_fcfg.h"
65 
66 //*****************************************************************************
67 //
83 //
84 //*****************************************************************************
85 #define CKMD_LFOSC_MID_TEMP_COEFFICIENT_RANGE_MIN (INT16_MIN)
86 #define CKMD_LFOSC_MID_TEMP_COEFFICIENT_RANGE_MAX (70)
87 
89 //*****************************************************************************
91 
92 //*****************************************************************************
94 #define CKMD_CAN_CLOCK_SOURCE_CLKAF CKMD_CANCLKSEL_SRC_CLKAF
95 #define CKMD_CAN_CLOCK_SOURCE_CLKHF CKMD_CANCLKSEL_SRC_CLKHF
97 #define CKMD_CAN_CLOCK_SOURCE_NONE CKMD_CANCLKSEL_SRC_DIS
99 
100 
101 //*****************************************************************************
103 
104 //*****************************************************************************
106 #define CKMD_AFCLK_SOURCE_CLKAF CKMD_AFCLKSEL_SRC_CLKAF
107 #define CKMD_AFCLK_SOURCE_CLKHF CKMD_AFCLKSEL_SRC_CLKHF
109 #define CKMD_AFCLK_SOURCE_CLKREF CKMD_AFCLKSEL_SRC_CLKREF
111 #define CKMD_AFCLK_SOURCE_NONE CKMD_AFCLKSEL_SRC_DIS
113 
114 
116 #define CKMD_WATCHDOG_UNLOCK 0x1ACCE551
117 
118 //*****************************************************************************
119 //
120 // API Functions and prototypes
121 //
122 //*****************************************************************************
123 
124 #ifndef DRIVERLIB_NS
125 //*****************************************************************************
126 //
127 // Below functions will only be compiled into the driverlib.a library and not
128 // the driverlib_ns.a library.
129 // Non-secure applications might be able to access some/all of these functions
130 // through veneers declared further below in the #else case.
131 //
132 //*****************************************************************************
133 
134 //*****************************************************************************
135 //
152 //
153 //*****************************************************************************
154 __STATIC_INLINE void CKMDSetInitialCapTrim(uint32_t q1CapTrim, uint32_t q2CapTrim)
155 {
156  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & ~(CKMD_HFXTINIT_Q1CAP_M | CKMD_HFXTINIT_Q2CAP_M);
157  tmp |= (q1CapTrim << CKMD_HFXTINIT_Q1CAP_S) & CKMD_HFXTINIT_Q1CAP_M;
158  tmp |= (q2CapTrim << CKMD_HFXTINIT_Q2CAP_S) & CKMD_HFXTINIT_Q2CAP_M;
159  HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = tmp;
160 }
161 
162 //*****************************************************************************
163 //
179 //
180 //*****************************************************************************
182 {
183  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & ~CKMD_HFXTINIT_Q1CAP_M;
184  tmp |= (q1Cap << CKMD_HFXTINIT_Q1CAP_S) & CKMD_HFXTINIT_Q1CAP_M;
185  HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = tmp;
186 }
187 
188 //*****************************************************************************
189 //
205 //
206 //*****************************************************************************
208 {
209  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & ~CKMD_HFXTINIT_Q2CAP_M;
210  tmp |= (q2Cap << CKMD_HFXTINIT_Q2CAP_S) & CKMD_HFXTINIT_Q2CAP_M;
211  HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = tmp;
212 }
213 
214 //*****************************************************************************
215 //
231 //
232 //*****************************************************************************
234 {
235  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & ~CKMD_HFXTINIT_IREF_M;
236  tmp |= (iref << CKMD_HFXTINIT_IREF_S) & CKMD_HFXTINIT_IREF_M;
237  HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = tmp;
238 }
239 
240 //*****************************************************************************
241 //
257 //
258 //*****************************************************************************
260 {
261  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & ~CKMD_HFXTINIT_IDAC_M;
262  tmp |= (idac << CKMD_HFXTINIT_IDAC_S) & CKMD_HFXTINIT_IDAC_M;
263  HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = tmp;
264 }
265 
266 //*****************************************************************************
267 //
283 //
284 //*****************************************************************************
285 __STATIC_INLINE void CKMDSetInitialAmplitudeThresholdTrim(uint32_t amplitudeThreshold)
286 {
287  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & ~CKMD_HFXTINIT_AMPTHR_M;
288  tmp |= (amplitudeThreshold << CKMD_HFXTINIT_AMPTHR_S) & CKMD_HFXTINIT_AMPTHR_M;
289  HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = tmp;
290 }
291 
292 //*****************************************************************************
293 //
301 //
302 //*****************************************************************************
304 {
305  return (HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & CKMD_HFXTINIT_Q1CAP_M) >> CKMD_HFXTINIT_Q1CAP_S;
306 }
307 
308 //*****************************************************************************
309 //
317 //
318 //*****************************************************************************
320 {
321  return (HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & CKMD_HFXTINIT_Q2CAP_M) >> CKMD_HFXTINIT_Q2CAP_S;
322 }
323 
324 //*****************************************************************************
325 //
333 //
334 //*****************************************************************************
336 {
337  return (HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & CKMD_HFXTINIT_IREF_M) >> CKMD_HFXTINIT_IREF_S;
338 }
339 
340 //*****************************************************************************
341 //
349 //
350 //*****************************************************************************
352 {
353  return (HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & CKMD_HFXTINIT_IDAC_M) >> CKMD_HFXTINIT_IDAC_S;
354 }
355 
356 //*****************************************************************************
357 //
365 //
366 //*****************************************************************************
368 {
369  return (HWREG(CKMD_BASE + CKMD_O_HFXTINIT) & CKMD_HFXTINIT_AMPTHR_M) >> CKMD_HFXTINIT_AMPTHR_S;
370 }
371 
372 //*****************************************************************************
373 //
390 //
391 //*****************************************************************************
392 __STATIC_INLINE void CKMDSetTargetCapTrim(uint32_t q1CapTrim, uint32_t q2CapTrim)
393 {
394  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & ~(CKMD_HFXTTARG_Q1CAP_M | CKMD_HFXTTARG_Q2CAP_M);
395  tmp |= (q1CapTrim << CKMD_HFXTTARG_Q1CAP_S) & CKMD_HFXTTARG_Q1CAP_M;
396  tmp |= (q2CapTrim << CKMD_HFXTTARG_Q2CAP_S) & CKMD_HFXTTARG_Q2CAP_M;
397  HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = tmp;
398 }
399 
400 //*****************************************************************************
401 //
415 //
416 //*****************************************************************************
418 {
419  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & ~CKMD_HFXTTARG_Q1CAP_M;
420  tmp |= (q1Cap << CKMD_HFXTTARG_Q1CAP_S) & CKMD_HFXTTARG_Q1CAP_M;
421  HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = tmp;
422 }
423 
424 //*****************************************************************************
425 //
439 //
440 //*****************************************************************************
442 {
443  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & ~CKMD_HFXTTARG_Q2CAP_M;
444  tmp |= (q2Cap << CKMD_HFXTTARG_Q2CAP_S) & CKMD_HFXTTARG_Q2CAP_M;
445  HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = tmp;
446 }
447 
448 //*****************************************************************************
449 //
463 //
464 //*****************************************************************************
466 {
467  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & ~CKMD_HFXTTARG_IREF_M;
468  tmp |= (iref << CKMD_HFXTTARG_IREF_S) & CKMD_HFXTTARG_IREF_M;
469  HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = tmp;
470 }
471 
472 //*****************************************************************************
473 //
487 //
488 //*****************************************************************************
490 {
491  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & ~CKMD_HFXTTARG_IDAC_M;
492  tmp |= (idac << CKMD_HFXTTARG_IDAC_S) & CKMD_HFXTTARG_IDAC_M;
493  HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = tmp;
494 }
495 
496 //*****************************************************************************
497 //
511 //
512 //*****************************************************************************
513 __STATIC_INLINE void CKMDSetTargetAmplitudeThresholdTrim(uint32_t amplitudeThreshold)
514 {
515  uint32_t tmp = HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & ~CKMD_HFXTTARG_AMPTHR_M;
516  tmp |= (amplitudeThreshold << CKMD_HFXTTARG_AMPTHR_S) & CKMD_HFXTTARG_AMPTHR_M;
517  HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = tmp;
518 }
519 
520 //*****************************************************************************
521 //
529 //
530 //*****************************************************************************
532 {
533  return (HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & CKMD_HFXTTARG_Q1CAP_M) >> CKMD_HFXTTARG_Q1CAP_S;
534 }
535 
536 //*****************************************************************************
537 //
545 //
546 //*****************************************************************************
548 {
549  return (HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & CKMD_HFXTTARG_Q2CAP_M) >> CKMD_HFXTTARG_Q2CAP_S;
550 }
551 
552 //*****************************************************************************
553 //
561 //
562 //*****************************************************************************
564 {
565  return (HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & CKMD_HFXTTARG_IREF_M) >> CKMD_HFXTTARG_IREF_S;
566 }
567 
568 //*****************************************************************************
569 //
577 //
578 //*****************************************************************************
580 {
581  return (HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & CKMD_HFXTTARG_IDAC_M) >> CKMD_HFXTTARG_IDAC_S;
582 }
583 
584 //*****************************************************************************
585 //
593 //
594 //*****************************************************************************
596 {
597  return (HWREG(CKMD_BASE + CKMD_O_HFXTTARG) & CKMD_HFXTTARG_AMPTHR_M) >> CKMD_HFXTTARG_AMPTHR_S;
598 }
599 
600 //*****************************************************************************
601 //
603 //
604 //*****************************************************************************
606 {
607  HWREG(CKMD_BASE + CKMD_O_HFXTCTL) |= CKMD_HFXTCTL_HPBUFEN;
608 }
609 
610 //*****************************************************************************
611 //
613 //
614 //*****************************************************************************
616 {
617  HWREG(CKMD_BASE + CKMD_O_HFXTCTL) &= ~CKMD_HFXTCTL_HPBUFEN;
618 }
619 
620 //*****************************************************************************
621 //
625 //
626 //*****************************************************************************
628 {
629  // Only App trims revision 5 and newer has a ppmRtn field. For older
630  // revisions use a default value of 20 (equivalent to 600ppm)
631  uint8_t ppmRtn = 20;
632  if (fcfg->appTrims.revision >= 0x5)
633  {
634  ppmRtn = fcfg->appTrims.cc27xx.misc0.lfoscPpmRtn;
635  }
636 
637  // The ppmTempMid field uses units of 30ppm, convert to ppm
638  return ppmRtn * 30;
639 }
640 
641 //*****************************************************************************
642 //
652 //
653 //*****************************************************************************
655 {
656  // Only App trims revision 5 and newer has a ppmTempMid field. For older
657  // revisions use a default value of 20 (equivalent to 400ppm/C)
658  uint8_t ppmTempMid = 20;
659  if (fcfg->appTrims.revision >= 0x5)
660  {
661  ppmTempMid = fcfg->appTrims.cc27xx.misc0.lfoscPpmTempMid;
662  }
663 
664  // The ppmTempMid field uses units of 20ppm/C, convert to ppm/C
665  return ppmTempMid * 20;
666 }
667 
668 //*****************************************************************************
669 //
680 //
681 //*****************************************************************************
683 {
684  // Only App trims revision 5 and newer has a ppmTempExt field. For older
685  // revisions use a default value of 20 (equivalent to 400ppm/C)
686  uint8_t ppmTempExt = 20;
687  if (fcfg->appTrims.revision >= 0x5)
688  {
689  ppmTempExt = fcfg->appTrims.cc27xx.misc0.lfoscPpmTempExt;
690  }
691 
692  // The ppmTempExt field uses units of 20ppm/C, convert to ppm/C
693  return ppmTempExt * 20;
694 }
695 
696 //*****************************************************************************
697 //
702 //
703 //*****************************************************************************
705 {
706  // Unlock the Watchdog
707  HWREG(CKMD_BASE + CKMD_O_LOCK) = CKMD_WATCHDOG_UNLOCK;
708 
709  // Make sure the Watchdog is unlocked before continuing
710  while (HWREG(CKMD_BASE + CKMD_O_LOCK) == 1) {}
711 }
712 
713 //*****************************************************************************
714 //
716 //
717 //*****************************************************************************
719 {
720  HWREG(CKMD_BASE + CKMD_O_LOCK) = 0x0;
721 }
722 
723 //*****************************************************************************
724 //
731 //
732 //*****************************************************************************
734 {
735  HWREG(CKMD_BASE + CKMD_O_CNT) = value;
736 }
737 
738 //*****************************************************************************
739 //
746 //
747 //*****************************************************************************
748 __STATIC_INLINE void CKMDSetWatchdogDebugConfig(bool stopWhenCpuIsHalted)
749 {
750  HWREG(CKMD_BASE + CKMD_O_TEST) = stopWhenCpuIsHalted ? CKMD_TEST_STALLEN_EN : CKMD_TEST_STALLEN_DIS;
751 }
752 
753 //*****************************************************************************
754 //
761 //
762 //*****************************************************************************
763 __STATIC_INLINE void CKMDSelectCanClock(uint32_t source)
764 {
765  HWREG(CKMD_BASE + CKMD_O_CANCLKSEL) = source & CKMD_CANCLKSEL_SRC_M;
766 }
767 
768 //*****************************************************************************
769 //
777 //
778 //*****************************************************************************
779 __STATIC_INLINE void CKMDSelectAfclk(uint32_t source)
780 {
781  HWREG(CKMD_BASE + CKMD_O_AFCLKSEL) = source & CKMD_AFCLKSEL_SRC_M;
782 }
783 
784 #else
785 //*****************************************************************************
786 //
787 // Secure-only API functions available from non-secure context through
788 // veneers.
789 //
790 // These functions must be linked in from from the secure veneer library.
791 //
792 //*****************************************************************************
793 
795  #define CKMDEnableHighPerformanceClockBuffer CKMDEnableHighPerformanceClockBuffer_veneer
796 
798  #define CKMDDisableHighPerformanceClockBuffer CKMDDisableHighPerformanceClockBuffer_veneer
799 
800 extern uint_least16_t CKMDGetLfoscRtnPpm_veneer(void);
801  #define CKMDGetLfoscRtnPpm CKMDGetLfoscRtnPpm_veneer
802 
803 extern uint_least16_t CKMDGetLfoscMidTempCoefficientPpmPerC_veneer(void);
804  #define CKMDGetLfoscMidTempCoefficientPpmPerC CKMDGetLfoscMidTempCoefficientPpmPerC_veneer
805 
806 extern uint_least16_t CKMDGetLfoscExtTempCoefficientPpmPerC_veneer(void);
807  #define CKMDGetLfoscExtTempCoefficientPpmPerC CKMDGetLfoscExtTempCoefficientPpmPerC_veneer
808 
809 extern void CKMDUnlockWatchdog_veneer(void);
810  #define CKMDUnlockWatchdog CKMDUnlockWatchdog_veneer
811 
812 extern void CKMDLockWatchdog_veneer(void);
813  #define CKMDLockWatchdog CKMDLockWatchdog_veneer
814 
815 extern void CKMDSetWatchdogCounter_veneer(uint32_t value);
816  #define CKMDSetWatchdogCounter CKMDSetWatchdogCounter_veneer
817 
818 extern void CKMDSetWatchdogDebugConfig_veneer(bool stopWhenCpuIsHalted);
819  #define CKMDSetWatchdogDebugConfig CKMDSetWatchdogDebugConfig_veneer
820 
821 extern void CKMDSelectCanClock_veneer(uint32_t source);
822  #define CKMDSelectCanClock CKMDSelectCanClock_veneer
823 
824 extern void CKMDSelectAfclk_veneer(uint32_t source);
825  #define CKMDSelectAfclk CKMDSelectAfclk_veneer
826 
827 #endif
828 
829 //*****************************************************************************
830 //
831 // Mark the end of the C bindings section for C++ compilers.
832 //
833 //*****************************************************************************
834 #ifdef __cplusplus
835 }
836 #endif
837 
838 //*****************************************************************************
839 //
843 //
844 //*****************************************************************************
845 
846 #endif // __CKMD_H__
__STATIC_INLINE void CKMDSetTargetQ1CapTrim(uint32_t q1Cap)
Sets target HFXT Q1 capacitor ramp trim.
Definition: ckmd.h:417
__STATIC_INLINE void CKMDSetTargetIrefTrim(uint32_t iref)
Sets target HFXT IREF ramp trim.
Definition: ckmd.h:465
__tz_c_veneer void CKMDLockWatchdog_veneer(void)
Definition: ckmd_veneers.c:70
__STATIC_INLINE uint32_t CKMDGetTargetAmplitudeThresholdTrim(void)
Gets target HFXT amplitude threshold ramp trim.
Definition: ckmd.h:595
__STATIC_INLINE uint_least16_t CKMDGetLfoscMidTempCoefficientPpmPerC(void)
Gets the the worst-case LFOSC temperature coefficient in the "middle" temperature range...
Definition: ckmd.h:654
__tz_c_veneer void CKMDDisableHighPerformanceClockBuffer_veneer(void)
Definition: ckmd_veneers.c:45
__STATIC_INLINE void CKMDSetTargetIdacTrim(uint32_t idac)
Sets target HFXT IDAC ramp trim.
Definition: ckmd.h:489
__tz_c_veneer void CKMDSetWatchdogDebugConfig_veneer(bool stopWhenCpuIsHalted)
Definition: ckmd_veneers.c:80
__STATIC_INLINE uint32_t CKMDGetTargetIdacTrim(void)
Gets target HFXT IDAC ramp trim.
Definition: ckmd.h:579
__STATIC_INLINE void CKMDSetInitialCapTrim(uint32_t q1CapTrim, uint32_t q2CapTrim)
Sets initial HFXT capacitor ramp trims.
Definition: ckmd.h:154
__STATIC_INLINE void CKMDSetInitialQ1CapTrim(uint32_t q1Cap)
Sets initial HFXT Q1 capacitor ramp trim.
Definition: ckmd.h:181
__STATIC_INLINE void CKMDSetInitialAmplitudeThresholdTrim(uint32_t amplitudeThreshold)
Sets initial HFXT amplitude threshold ramp trim.
Definition: ckmd.h:285
__STATIC_INLINE void CKMDEnableHighPerformanceClockBuffer(void)
Enable high performance clock buffer.
Definition: ckmd.h:605
__STATIC_INLINE void CKMDSetWatchdogDebugConfig(bool stopWhenCpuIsHalted)
Configure if the Watchdog should stop when the CPU is halted by a debugger.
Definition: ckmd.h:748
__tz_c_veneer uint_least16_t CKMDGetLfoscExtTempCoefficientPpmPerC_veneer(void)
Definition: ckmd_veneers.c:60
__STATIC_INLINE void CKMDSetInitialQ2CapTrim(uint32_t q2Cap)
Sets initial HFXT Q2 capacitor ramp trim.
Definition: ckmd.h:207
__tz_c_veneer void CKMDUnlockWatchdog_veneer(void)
Definition: ckmd_veneers.c:65
__STATIC_INLINE uint32_t CKMDGetTargetQ2CapTrim(void)
Gets target HFXT Q2 capacitor ramp trim.
Definition: ckmd.h:547
__tz_c_veneer uint_least16_t CKMDGetLfoscRtnPpm_veneer(void)
Definition: ckmd_veneers.c:50
__STATIC_INLINE uint32_t CKMDGetInitialQ1CapTrim(void)
Gets initial HFXT Q1 capacitor ramp trim.
Definition: ckmd.h:303
__STATIC_INLINE uint32_t CKMDGetInitialIdacTrim(void)
Gets initial HFXT IDAC ramp trim.
Definition: ckmd.h:351
__STATIC_INLINE void CKMDUnlockWatchdog(void)
Unlock write access to the Watchdog.
Definition: ckmd.h:704
#define CKMD_WATCHDOG_UNLOCK
Watchdog unlocking value.
Definition: ckmd.h:116
__STATIC_INLINE uint_least16_t CKMDGetLfoscExtTempCoefficientPpmPerC(void)
Gets the the worst-case LFOSC temperature coefficient in the "extended" temperature range...
Definition: ckmd.h:682
__STATIC_INLINE void CKMDSetTargetAmplitudeThresholdTrim(uint32_t amplitudeThreshold)
Sets target HFXT amplitude threshold ramp trim.
Definition: ckmd.h:513
__tz_c_veneer void CKMDSelectCanClock_veneer(uint32_t source)
Definition: ckmd_veneers.c:85
__tz_c_veneer void CKMDSetWatchdogCounter_veneer(uint32_t value)
Definition: ckmd_veneers.c:75
__STATIC_INLINE uint32_t CKMDGetTargetQ1CapTrim(void)
Gets target HFXT Q1 capacitor ramp trim.
Definition: ckmd.h:531
__tz_c_veneer uint_least16_t CKMDGetLfoscMidTempCoefficientPpmPerC_veneer(void)
Definition: ckmd_veneers.c:55
__STATIC_INLINE void CKMDLockWatchdog(void)
Lock write access to the Watchdog.
Definition: ckmd.h:718
__STATIC_INLINE void CKMDSetWatchdogCounter(uint32_t value)
Set watchdog counter value.
Definition: ckmd.h:733
__STATIC_INLINE void CKMDSetTargetCapTrim(uint32_t q1CapTrim, uint32_t q2CapTrim)
Sets target HFXT capacitor ramp trims.
Definition: ckmd.h:392
__tz_c_veneer void CKMDEnableHighPerformanceClockBuffer_veneer(void)
Definition: ckmd_veneers.c:40
__tz_c_veneer void CKMDSelectAfclk_veneer(uint32_t source)
Definition: ckmd_veneers.c:90
__STATIC_INLINE uint32_t CKMDGetInitialIrefTrim(void)
Gets initial HFXT IREF ramp trim.
Definition: ckmd.h:335
__STATIC_INLINE void CKMDDisableHighPerformanceClockBuffer(void)
Disable high performance clock buffer.
Definition: ckmd.h:615
__STATIC_INLINE void CKMDSetInitialIrefTrim(uint32_t iref)
Sets initial HFXT IREF ramp trim.
Definition: ckmd.h:233
#define __STATIC_INLINE
Definition: cmsis_gcc.h:47
__STATIC_INLINE uint32_t CKMDGetInitialAmplitudeThresholdTrim(void)
Gets initial HFXT amplitude threshold ramp trim.
Definition: ckmd.h:367
__STATIC_INLINE void CKMDSetTargetQ2CapTrim(uint32_t q2Cap)
Sets target HFXT Q2 capacitor ramp trim.
Definition: ckmd.h:441
__STATIC_INLINE void CKMDSetInitialIdacTrim(uint32_t idac)
Sets initial HFXT IDAC ramp trim.
Definition: ckmd.h:259
__STATIC_INLINE void CKMDSelectAfclk(uint32_t source)
Selects the clock source for AFCLK.
Definition: ckmd.h:779
__STATIC_INLINE void CKMDSelectCanClock(uint32_t source)
Selects the clock source for the CAN peripheral.
Definition: ckmd.h:763
__STATIC_INLINE uint32_t CKMDGetTargetIrefTrim(void)
Gets target HFXT IREF ramp trim.
Definition: ckmd.h:563
__STATIC_INLINE uint_least16_t CKMDGetLfoscRtnPpm(void)
Gets the worst-case LFOSC frequency jump due to RTN.
Definition: ckmd.h:627
__STATIC_INLINE uint32_t CKMDGetInitialQ2CapTrim(void)
Gets initial HFXT Q2 capacitor ramp trim.
Definition: ckmd.h:319