# DCC Module

The dual clock comparator (DCC) API provides a set of functions for configuring and using the DCC module. The functions provided allow for setting up the module including the operating modes, configuring the clock sources, enabling interrupt signals, and reading the various clock counters.

group `dcc_api`

  Defines

  `DCC_VALIDSEED_MIN` 4U
  `DCC_VALIDSEED_MAX` 0xFFFFU
  `DCC_COUNTSEED_MIN` 1U
  `DCC_COUNTSEED_MAX` 0xFFFFFU
  `DCC_ENABLE_VALUE` (0xAU)
  `DCC_DISABLE_VALUE` (0x5U)
  `DCC_REG_WORD_MASK` (0xFFFFU)
  `DCC_REG_BYTE_MASK` (0x7FU)
  `DCC_SEED_REG_MASK` (0xFFF0U)
  `DCC_SEED_CNT_MASK` (0xF0000U)

  Enums

  enum `DCC_SingleShotMode`

    The following are defines for the mode parameter of the DCC_enableSingleShotMode() function.

    Values:

    enumerator `DCC_MODE_COUNTER_ZERO` = 0xA00U

      Use to stop counting when counter0 and valid0 both reach zero.

    enumerator `DCC_MODE_COUNTER_ONE` = 0xB00U

      Use to stop counting when counter1 reaches zero.

  enum `DCC_Count1ClockSource`

    The following are defines for the source parameter of the DCC_setCounter1ClkSource() function.

    Values:

    enumerator `DCC_COUNT1SRC_PLL` = 0x0U

      PLLRAWCLK Clock Out Source.

    enumerator `DCC_COUNT1SRC_AUXPLL` = 0x1U

      AUXPLL Clock Out Source.

    enumerator `DCC_COUNT1SRC_INTOSC1` = 0x2U

      Internal Oscillator1 Clock Source.

    enumerator `DCC_COUNT1SRC_INTOSC2` = 0x3U

      Internal Oscillator2 Clock Source.

    enumerator `DCC_COUNT1SRC_ECATPHYCLK` = 0x5U

      Ethercat PHY Clock Source.

    enumerator `DCC_COUNT1SRC_CPU1SYSCLK` = 0x6U

      CPU1 SYSCLK (System Clock) Source.

    enumerator `DCC_COUNT1SRC_CPU2SYSCLK` = 0x7U

      CPU2 SYSCLK (System Clock) Source.

    enumerator `DCC_COUNT1SRC_AUXCLKIN` = 0xAU

      AUXCLK (Auxiliary Clock) Source.

    enumerator `DCC_COUNT1SRC_EPWM` = 0xBU

      EPWM Clock Source.

    enumerator `DCC_COUNT1SRC_LSPCLK` = 0xCU

      LSPCLK (Low Speed Clock) Source.

    enumerator `DCC_COUNT1SRC_ADCCLK` = 0xDU

      ADC Clock Source.

    enumerator `DCC_COUNT1SRC_WDCLK` = 0xEU

      Watch Dog Clock Source.

    enumerator `DCC_COUNT1SRC_CANX` = 0xFU

      CANxBIT Clock Source.

    enumerator `DCC_COUNT1SRC_MCANA` = 0x1AU

      CANxBIT Clock Source.

    enumerator `DCC_COUNT1SRC_MCANB` = 0x1BU

      CANxBIT Clock Source.

    enumerator `DCC_COUNT1SRC_USB` = 0x1CU

      USB BIT Clock Source.

  enum `DCC_Count0ClockSource`

    The following are defines for the source parameter of the DCC_setCounter0ClkSource() function.

    Values:

    enumerator `DCC_COUNT0SRC_XTAL` = 0x0U

      XTAL Clock Source.

    enumerator `DCC_COUNT0SRC_INTOSC1` = 0x1U

      Internal Oscillator1 Clock Source.

    enumerator `DCC_COUNT0SRC_INTOSC2` = 0x2U

      Internal Oscillator2 Clock Source.

    enumerator `DCC_COUNT0SRC_SYSCLK` = 0x5U

      System Clock Source.

    enumerator `DCC_COUNT0SRC_AUXCLK` = 0x8U

      AUX Clock Source.

  Functions

  void `DCC_enableModule`(uint32_t base)

    Enables the DCC module.

    This function starts the DCC counter operation.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_disableModule`(uint32_t base)

    Disable the DCC module.

    This function stops the DCC counter operation.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_enableErrorSignal`(uint32_t base)

    Enable DCC Error Signal

    This function enables the error signal interrupt.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_enableDoneSignal`(uint32_t base)

    Enable DCC Done Signal

    This function enables the done signal interrupt.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_disableErrorSignal`(uint32_t base)

    Disable DCC Error Signal

    This function disables the error signal interrupt.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_disableDoneSignal`(uint32_t base)

    Disable DCC Done Signal

    This function disables the done signal interrupt.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_enableSingleShotMode`(uint32_t base, DCC_SingleShotMode mode)

    Enable DCC Single-Shot Mode

    This function enables the single-shot mode and sets the operation mode.

    Parameters

      - `base`: is the DCC module base address

      - `mode`: is the selected Single-Shot operation mode

    The mode parameter can have one of two values:

    - DCC_MODE_COUNTER_ZERO - Stops counting when counter0 and valid0 both reach zero

    - DCC_MODE_COUNTER_ONE - Stops counting when counter1 reaches zero

    Return

      None.

  void `DCC_disableSingleShotMode`(uint32_t base)

    Disable DCC Single-Shot Mode

    This function disables the DCC Single-Shot operation mode

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  bool `DCC_getErrorStatus`(uint32_t base)

    Get Error Flag Status

    This function gets the error flag status.

    Parameters

      - `base`: is the DCC module base address

    Return

      Returns true if an error has occurred, false if no errors have occurred.

  bool `DCC_getSingleShotStatus`(uint32_t base)

    Get Single-Shot Done Flag Status

    This function gets the single-shot done flag status.

    Parameters

      - `base`: is the DCC module base address

    Return

      Returns true if single-shot mode has completed, false if single-shot mode has not completed.

  void `DCC_clearErrorFlag`(uint32_t base)

    Clear Error Status Flag

    This function clears the DCC error status flag.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  void `DCC_clearDoneFlag`(uint32_t base)

    Clear Single-Shot Done Status Flag

    This function clears the DCC single-shot done status flag.

    Parameters

      - `base`: is the DCC module base address

    Return

      None.

  uint32_t `DCC_getCounter0Value`(uint32_t base)

    Get Current Value of Counter 0

    This function gets current value of counter 0.

    Parameters

      - `base`: is the DCC module base address

    Note

      Reads of the counter value may not be exact since the read operation is synchronized to the vbus clock.

    Return

      Returns the current value of counter 0.

  uint16_t `DCC_getValidCounter0Value`(uint32_t base)

    Get Current Value of the Valid Duration Counter for Counter 0

    This function gets current value of the valid duration counter for counter 0.

    Parameters

      - `base`: is the DCC module base address

    Note

      Reads of the counter value may not be exact since the read operation is synchronized to the vbus clock.

    Return

      Returns the current value of the valid duration counter.

  uint32_t `DCC_getCounter1Value`(uint32_t base)

    Get Current Value of Counter 1

    This function gets current value of counter 1.

    Parameters

      - `base`: is the DCC module base address

    Note

      Reads of the counter value may not be exact since the read operation is synchronized to the vbus clock.

    Return

      Returns the current value of counter 1.

  void `DCC_setCounter1ClkSource`(uint32_t base, DCC_Count1ClockSource source)

    Set Counter 1 Clock Source

    This function sets the counter 1 clock source.

    Parameters

      - `base`: is the DCC module base address

      - `source`: is the selected clock source for counter 1

    Return

      None.

  void `DCC_setCounter0ClkSource`(uint32_t base, DCC_Count0ClockSource source)

    Set Counter 0 Clock Source

    This function sets the counter 0 clock source.

    Parameters

      - `base`: is the DCC module base address

      - `source`: is the selected clock source for counter 0

    Return

      None.

  uint16_t `DCC_getCounter1ClkSource`(uint32_t base)

    Get Counter 1 Clock Source

    This function gets the counter 1 clock source.

    Parameters

      - `base`: is the DCC module base address

    Return

      Returns Counter 1 clock source from the enum DCC_Count1ClockSource

  uint16_t `DCC_getCounter0ClkSource`(uint32_t base)

    Get Counter 0 Clock Source

    This function gets the counter 0 clock source.

    Parameters

      - `base`: is the DCC module base address

    Return

      Returns Counter 0 clock source from the enum DCC_Count0ClockSource

  void `DCC_setCounterSeeds`(uint32_t base, uint32_t counter0, uint32_t validCounter0, uint32_t counter1)

    Set the seed values

    This function sets the seed values for Counter 0, Valid Duration Counter 0, and Counter 1.

    Parameters

      - `base`: is the DCC module base address

      - `counter0`: sets the seed value that gets loaded into Counter 0

      - `validCounter0`: sets the seed value that gets loaded into the valid duration counter for Counter 0

      - `counter1`: sets the seed value that gets loaded into Counter 1

    Note

      1. Operating DCC with ‘0’ set as the seed value for Counter 0, Valid Duration Counter 0, and/or Counter 1 will result in undefined operation.

      2. The Valid Duration Counter 0 is designed to be at least four cycles wide and shouldn’t be programmed with a value less than ‘4’.

    Return

      None.

  bool `DCC_verifyClockFrequency`(uint32_t base, DCC_Count1ClockSource clock1, float32_t freq1, DCC_Count0ClockSource clock0, float32_t freq0, float32_t tolerance, float32_t freqerr, float32_t freq_sysclk)

    Verify the frequency of a clock source using a reference clock

    This function verifies the frequency of the specified clock using a reference clock.

    Parameters

      - `base`: is the DCC module base address

      - `clock1`: is the clock source to be verified

      - `freq1`: is the frequency of the clock source to be verified

      - `clock0`: is the reference clock

      - `freq0`: is the frequency of the reference clock

      - `tolerance`: is the DCC error tolerance in percentage

      - `freqerr`: is the allowable Frequency Tolerance in percentage

      - `freq_sysclk`: is the frequency of the system clock

    Note

      Make sure that the frequency of all the clocks are in the same unit

    Return

      Returns true if the actual frequency of clock1 is matching freq1, false otherwise

  float32_t `DCC_measureClockFrequency`(uint32_t base, DCC_Count1ClockSource clock1, DCC_Count0ClockSource clock0, float32_t freq0, float32_t tolerance, float32_t freqerr, float32_t freq_sysclk)

    Measure the frequency of a clock source using a reference clock

    This function measures the frequency of the specified clock using a reference clock.

    Parameters

      - `base`: is the DCC module base address

      - `clock1`: is the clock source to be measured

      - `clock0`: is the reference clock

      - `freq0`: is the frequency of the reference clock

      - `tolerance`: is the DCC error tolerance in percentage

      - `freqerr`: is the allowable Frequency Tolerance in percentage

      - `freq_sysclk`: is the frequency of the system clock

    Note

      Make sure that the frequency of all the clocks are in the same unit

    Return

      Measured clock frequency

  void `DCC_continuousMonitor`(uint32_t base, DCC_Count1ClockSource clock1, float32_t freq1, DCC_Count0ClockSource clock0, float32_t freq0, float32_t tolerance, float32_t freqerr, float32_t freq_sysclk)

    Continuously monitor the frequency of a clock source using a reference clock

    This function continuously monitors the frequency of the specified clock using a reference clock. An error signal is generated if the frequency ratio is altered.

    Parameters

      - `base`: is the DCC module base address

      - `clock1`: is the clock source to be verified

      - `freq1`: is the frequency of the clock source to be verified

      - `clock0`: is the reference clock

      - `freq0`: is the frequency of the reference clock

      - `tolerance`: is the DCC error tolerance in percentage

      - `freqerr`: is the allowable Frequency Tolerance in percentage

      - `freq_sysclk`: is the frequency of the system clock

    Note

      Make sure that the frequency of all the clocks are in the same unit

    Note

      This function does not enable the DCC interrupt. The user application must enable it to trigger an intetrupt when an error is detected.

    Return

      Returns None

The code for this module is contained in driverlib/dcc.c, with driverlib/dcc.h contcaining the API declarations for use by applications.