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.

TMS320F28379D: SDFM Shift Control Bit Configuration

Part Number: TMS320F28379D
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

Hi,

i am a bit confused about the *** Control Bit Configuration, maybe you can clarify.

Here the Info from the datasheet

Here also from the datasheet

The table says, that i should use 7 Bits to shift when OSR = 128 and SINC3

The text says, that 7 should be used, when OSR = 128 and SINC3

Here the confusing from example #1

C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00

#define  OSR_RATE      OSR_128


  /*******************************************************/
  /* Sinc filter Module */
  /*******************************************************/
  //Configure Data filter modules filter type, OSR value and enable / disable data filter
  // 16 bit data representation is chosen for OSR 128 using Sinc3, from the table in the TRM
  // the max value represented for OSR 128 using sinc 3 is +/-2097152 i.e. 2^21
  // to represent this in 16 bit format where the first bit is sign shift by 6 bits
  Sdfm_configureData_filter(1, FILTER1, FILTER_ENABLE, SINC3, OSR_RATE, DATA_16_BIT, SHIFT_6_BITS);
  Sdfm_configureData_filter(1, FILTER2, FILTER_ENABLE, SINC3, OSR_RATE, DATA_16_BIT, SHIFT_6_BITS);
  Sdfm_configureData_filter(1, FILTER3, FILTER_ENABLE, SINC3, OSR_RATE, DATA_16_BIT, SHIFT_6_BITS);

The code says, that 6 is used for shift, when OSR_RATE = 128 and SINC3

Next Example #2

C:\ti\c2000\C2000Ware_3_02_00_00\driverlib\f2837xd\examples\cpu1\sdfm

File: sdfm_ex1_filters.c

    //
    // Data Filter Unit
    //
    // Configure Data Filter Unit - filter type, OSR value and
    // enable / disable data filter
    //
    SDFM_configDataFilter(SDFM1_BASE, (SDFM_FILTER_1 | SDFM_FILTER_SINC_3 |
           SDFM_SET_OSR(128)), (SDFM_DATA_FORMAT_16_BIT | SDFM_FILTER_ENABLE |
           SDFM_SHIFT_VALUE(0x0008)));

The code says, that 8 is used for shift, when OSR_RATE = 128 and SINC3

Thank you !

cheers Peter

Cheers

  • Peter,

    Shift value of 8 mentioned in sdfm_ex1_filters.c is wrong. I shall file a ticket to fix this issue.

    If input voltage applied to SD-modulator is made sure to operate within recommended linear full scale range, then for Sinc3, OSR = 128 you can use Shift value of 6

    If input voltage applied to SD-modulator can go beyond recommended linear full scale range, then for Sinc3, OSR = 128 you need use Shift value of 7.

    Regards,

    Manoj