3 Replies Latest reply on Nov 10, 2016 12:22 AM by himam_31

    DMA of USB Multiple Channel Audio


      Using the demo CY8CKIT_046_USB_Audio as an example, I am trying to create a 4 channel USB audio adapter. 


      USBFS and I2S components both support the extra channels, but the data for 4 channels is interleaved in a frame according to http://www.usb.org/developers/docs/devclass_docs/frmts10.pdf Section 2.2.3


      How the audio stream data is formatted to and from USBFS is not well documented but I am assuming it is still interleaved. So for example, each frame would be 6 bytes to I2S0, and then 6 bytes to I2S1. 


      Since the data has to go to different I2S FIFO registers I2S_RX_CHn_F0_PTR, it is unclear how to use DMA to accomplish it. Ideas?

        • 1. Re: DMA of USB Multiple Channel Audio

          Presently,the left and right channels are interleaved with a sample for the left channel first, followed by the right channel in a single FIFO (FIFO 0)


          Data interleaving must be set to Interleaved for the I2S direction which requires byte

          • 2. Re: DMA of USB Multiple Channel Audio

            The issue is not the for left and right, but the second or third pair, or channels 3-6 respectively. Since they have to be moved to/from different FIFO locations like  I2S_RX_CHn_F1_PTR and  I2S_RX_CHn_F2_PTR which are different for the additional channels.  It seems like each pair will need it own DMA. But even the existing USB DMA will be broken by adding channels because the USB_FS will put them all in contiguous memory.  Can anyone provide an example of more than 2 channels of I2S with USB?

            • 3. Re: DMA of USB Multiple Channel Audio



              Multiple channel audio requires indexed DMA approach. The current DMA architecture of PSoC4L is not suitable for this architecture. you may have to use PSoC5LP for this application.





              1 of 1 people found this helpful