Post Go back to editing

Question about DAI routing for SPORT

This question is related to thread http://ez.analog.com/thread/6536

I have used SPORT3 to load 2 DAC's. Here is the signal routing part

lcl_temp = *pDAI_IRPTL_H;         // read the Latch register to clear interrupts  

...

// for DAC1, switch to frame1

SRU(HIGH, PBEN14_I);                                  // enable pin buffer for output  

SRU(HIGH, DAI_PB14_I);                              // keep DAI_P14 (Frame2) at HIGH  

SRU(HIGH, PBEN12_I);                                 // enable pin buffer for output  

SRU(SPORT3_FS_O, DAI_PB12_I);          // DAI_P12 to SPORT3 Frame1 

SRU(SPORT3_FS_O, MISCA2_I);              // feed DAI_P12 (Frame1) to MISCA2  

// now write to DAC1

...

// for DAC2, switch to frame2

    SRU(HIGH, PBEN12_I);                             // enable pin buffer for output  

    SRU(HIGH, DAI_PB12_I);                         // keep DAI_P12 (Frame1) at HIGH         

    SRU(HIGH, PBEN14_I);                             // enable pin buffer for output  

    SRU(SPORT3_FS_O, DAI_PB14_I);       // DAI_P14 to SPORT3 Frame2 

    SRU(SPORT3_FS_O, MISCA2_I);           // feed DAI_P14 (Frame2) to MISCA2  

// now write to DAC2

...

I have tested the above program, it worked fine.

Now I need to add DAC3 to be controlled by SPORT3, too.

If I borrow DB_O from SPORT2, can I define it as Frame3 and still share the CLK and DA lines from SPORT3? In other words, will the follwoing additional code work?

// for DAC3, switch to frame3

    SRU(HIGH, PBEN12_I);                             // enable pin buffer for output  

    SRU(HIGH, DAI_PB12_I);                          // keep DAI_P12 (Frame1) at HIGH         

    SRU(HIGH, PBEN14_I);                             // enable pin buffer for output  

   SRU(HIGH, DAI_PB14_I);                           // keep DAI_P14 (Frame2) at HIGH  

    SRU(HIGH, PBEN10_I);                             // enable pin buffer for output  

    SRU(SPORT3_FS_O, DAI_PB10_I);       // DAI_P10 to SPORT3 Frame3

    SRU(SPORT3_FS_O, MISCA2_I);           // feed DAI_P10 (Frame3) to MISCA2  

// now write to DAC3

...

I have tried to read through chapter 9 of the ADSP-214xx hardware reference, esp. Figure 9-14, but still not sure if this is allowed.

  • Hi,

    I don't see any specific issues as such with the additional routing you mentioned. But just to make sure that I am not missing something, could you please elaborate why do you think that it may not be allowed?

    Thanks,

    Mitesh

  • Hi Mitesh,

    thanks for your reply.

    Let me try to rephrase my question.

    What is the limiting factor for using one SPORT channel to drive multiple DAC's?

    Is it limited only by the number of DAI pins? Say I use ADSP-21469 or ADSP-21489, there are 20 DAI pins. Say I pick SPORT3, and connect SPORT3_CLK and SPORT3_DA to 18 DAC's. And I use the above scheme to route the remaining 18 DAI pins as 18 Frame Sync signals, and use the same MiscA2 channel for interrupt. Then I can load different data to 18 different DAC's. So, I only need 1 SPORT channel, and 1 MiscA channel?

  • Hi,

    Thanks for the clarification. I do understand your requirements better now. I don't see any specific issues there as you are using separate DAI pins externally and each DAI pin will have it's own pin buffer. However, for precise details about the output buffer's drive capabilities, you may refer to the corresponding section in the data sheet.

    Thanks,

    Mitesh