This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR6047: What is the clock of DTC in SDHS?

Part Number: MSP430FR6047

There is the following paragraph in the user's manual

22.2.4 Data Transfer Controller (DTC) and Internal Data Buffer
The SDHS supports output data rates up to 8 Msps, which is faster than the system DMA can support, so
the SDHS has a dedicated Data Transfer Controller (DTC) and an internal data buffer to support up to 8-
MHz data transfer speed to the target memory.
Figure 22-14 shows the block diagram of the output data path. A conversion result from digital filter goes
first to the internal data buffer. The buffer has 64-word depth. As soon as a new data is available in the
buffer, the data is latched with the system clock (called synchronization to the system clock) and is written
to SDHSDT register. Then the DTC reads the data from SDHSDT register and transfers to the destination
memory location.

The DTC may require more than one sample period to transfer the data to system memory. Thus, the
buffer depth is selected to achieve the 8-MHz data transfer speed when the system clock is equal to or
higher than the SDHS output data rate. Take care when selecting SDHSCTL1.OSR bits or the system
clock frequency. The system clock frequency must be equal to or greater than the SDHS output data rate,
or a data overflow may occur.
System clock frequency ≥ SDHS output data rate
SDHS output data rate = PLL output frequency / SDHSCTL1.OSR

Question:

How to understand System clock frequency?

System clock frequency means MCLK or SMCLK or something else.

If I use DTC or CPU to read the data from SDHSDT register, are there any differences in frequency settings between MCLK and SMCLK?

Is Internal Data Buffer a FIFO buffer?

If I don't read SDHSDT register, will the newly generated data be in the buffer (when there are less than 64 16bits data in the buffer) instead of in SDHSDT register?

  • Hello,

    The system clock frequency is MCLK. If using DTC or CPU, the MCLK should be used.

    The internal data buffer operates as a FIFO.

    There are 2 ways to obtain the data from the buffer, DTC(preferred) and CPU read from SDHSDT. Figure 22-15 has a good block diagram showing this. As soon as new data is obtained in the buffer, it is written to the SDHSDT register. If you have more than 64 sample periods, the internal buffer is full and will set the overflow interrupt.
  • There is the following paragraph in the user's manual

    SDHSRIS.OVF

    SDHS Data Overflow Raw Interrupt Status bit. Read Only. This bit is
    not automatically de-asserted by hardware.
    Reset type: PUC
    0h (R) = No OVF event
    1h (R) = When DTC is enabled (SDHSCTL2.DTCOFF = 0), DTC has
    dropped at least one sample. This indicates that the system clock
    needs to be increased.
    When DTC is disabled (SDHSCTL2.DTCOFF = 1), At least one new
    sample has been overwritten to SDHSDT register before the
    previous value is read.

    The DTC is enabled by default but can be disabled when SDHSCTL2.DTCOFF = 1. When the DTC is
    disabled, the data in the SDHSDT register must be ready by CPU. If the SDHSDT register has not been
    read by CPU over 64 sample periods, the internal buffer becomes full and does not take any more new
    data. In the case, newly generated data is lost and causes the overflow interrupt (SDHSRIS.OVF).

    Questions:

    1. What causes SDHSRIS.OVF to set 1,
    At least one new sample has been overwritten to SDHSDT register before the previous value is read
    or
    the SDHSDT register has not been read by CPU over 64 sample periods, the internal buffer becomes full and does not take any more new data?

    2. If I set the parameters as follows (SDHSCTL2.DTCOFF = 1; SDHSCTL2.SMPCTLOFF = 0; and SDHSCTL2.SMPSZ = 5) and the CPU does not read SDHSDT, When SDHS completes sampling do I get six data in the internal buffer and do not overflow(SDHSRIS.OVF = 0)?

    3. If I set the parameters as follows (SDHSCTL2.DTCOFF = 1; SDHSCTL2.SMPCTLOFF = 0; and SDHSCTL2.SMPSZ = 5), the process of sampling and CPU reading SDHSDT is as follows:
    Sample 1. Sample data is 10
    Sample 2. Sample data is 20
    Sample 3. Sample data is 30
    CPU reading SDHSDT 1 times, stored in temp[0]
    Sample 4. Sample data is 40
    Sample 5. Sample data is 50
    Sample 6. Sample data is 60
    CPU reading SDHSDT 1 times, stored in temp[1]
    CPU reading SDHSDT 1 times, stored in temp[2]
    CPU reading SDHSDT 1 times, stored in temp[3]
    CPU reading SDHSDT 1 times, stored in temp[4]
    CPU reading SDHSDT 1 times, stored in temp[5].

    Sampling 6 times, less than 64 sample.
    Where can I see SDHSRIS.OVF = 1 and what are the temp[] content.
    temp[0] = 30, temp[1] = 60, temp[2] = 10, temp[3] = 20, temp[4] = 40, temp[5] = 50?

**Attention** This is a public forum