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.

Another SRC4392 Ratio Readback Register Question

Other Parts Discussed in Thread: SRC4392

Hi,

This is about the SRC4392, specifically, registers 0x32 and 0x33 (SRC Ratio Readback Register). The datasheet defines Register 32 as SRI[4:0] and SRF[10:8]. Register 33 is SRF[7:0].

In another post, someone asked and TI confirmed that it is simple to read. If the input rate is 48kHz and the output rate is 96kHz, then you should read 0.5.

In my application, I have the output rate set as 192kHz (by setting PortB as master, output data source = SRC, clock = MCLK, clock divider = 128). A 24.576MHz crystal oscillator feeds MCLK. I confirmed that this setting is correct by measuring a 192kHz clock at the LRCLK pin.

However, I am having a hard time understanding how to interpret registers 0x32 and 0x33. Here's what I get (remember output rate is 192kHz), values shown below are made by writing 0xB2 (register 0x32, auto increment enabled, read back 2 bytes).

44.1kHz = 01 D6

48kHz = 02 00

88.2kHz = 03 AC

96kHz = 04 00

For the 96kHz value for example, I'm expecting the Input-to-Output Sampling Ratio to be 96:192 = 1:2 = 0.5. SRI[4:0] = 0x00 so that is correct, but SRF[10:0] = 0x400 doesn't correspond with a "5". Since the readback values are increasing as the Input Sampling Rate goes up, it does appear to be working correctly.

Thank you.

 

 

  • John,

    The integer and fractional bits are correct, but the fractional bits are meant to be interpreted differently.  For 96kHz, the first fractional bit, or the "4" in "04" represents 1/2.  The second fractional bit represents 1/4.  The third fractional bit represents 1/8, and so on.  So for 96kHz the bit corresponding to 1/2 is set, and all other fractional bits are 0s.  For 48kHz, the 2nd fractional bit, or the bit corresponding to 1/4 is set, and all other fractional bits are 0s.

  • Hi Patrick,

    Thank you so much for your response. I agree with your interpretation. I came to a similar thought this morning.

    Since SRF[10:0] is 11 bits, that would mean at full scale (max value), it'll be decimal 2048 (well 2047 actually). So for the 96K input sampling rate, 96/192 = 0.5. SRF[10:0] = 0x400 = decimal 1024. That is 1024/2048 = 0.5.

    Similarly, for the 44.1K input sampling rate, 44.1/192 = 0.229. SRF[10:0] = 0x1D6 = decimal 470. That is 470/2048 = 0.229.

    BTW, just finished testing my SRC4392 application yesterday. Everything works. Great part.

  • I hope I'm not thread-jacking here, but I am also playing with the SRC4392's SRC ratio registers 32 and 33. On my setup (I'm using the TI SRC4392 eval module and USBSerialCommander software), I am getting some different data than what John Yap posted above.

    Here is a list of what I got:

    Input/Output Reg32 Reg33
    -------------------------------
    192k/192k 07 ff *
    176.4k/192k 07 59
    96k/192k 03 ff *
    88k/192k 03 ac
    48k/192k 01 ff *
    44.1k/192k 01 d6

    192k/96k 0f ff *
    176.4k/96k 0e b3
    96k/96k 07 ff *
    88k/96k 07 59
    48k/96k 03 ff *
    44.1k/96k 03 ac

    The entries with the asterisk (*) are the ones in question. For example, for 96k/192k John Yap got 04 00, but I got 03 ff. John's and my readings are "off by 1". Is this a bug in the chip revision that I have?
  • Could anyone answer the above question?