nrf5340 Audio Application - I2S Slave

Dear Devzone-Team,

for my application I am trying to establish a CIS between a gateway and a headset. The gateway is getting an I2S stream input from its header pins. The audio stream is coming from an external device which can only be configured as a master, so I need the gateway to be I2S slave.

I have read in this post and this post that configuring nrf5340 Audio as I2s slave is not recommended, and doing so will mess with drift- and presentation compensation. However, for the application there is no other way but to have the ADK as I2S slave.

As Amanda has pointed out, changes need to be made in audio_i2s.c and audio_datapath.c. I already managed to configure the gateway as I2S slave, but I am struggling in bypassing the compensation mechanisms. I have followed the instructions Amanda has given (diabling drift_comp and pres_comp here), but with no luck.

The issue Max was having is now 5 months old, maybe there have been some updates from your side. I am using NCS version 2.4.2.

Could you elaborate, why the compensation mechanisms have to be avoided in this configuration? Why does disabling I2S clock output for the gateway break the application?

Your help is greatly appreciated.

Kind regards,

Martin

Parents
  • Hello Martin,

    Thank you for your patience with this.

    I have followed the instructions Amanda has given (diabling drift_comp and pres_comp here), but with no luck.

    Could you elaborate on the issue you are seeing when doing this? How does it fail, and how does it behave compared to what you would have expected? Could you share the changes/modifications you made?

    The issue Max was having is now 5 months old, maybe there have been some updates from your side. I am using NCS version 2.4.2.

    Could you elaborate, why the compensation mechanisms have to be avoided in this configuration? Why does disabling I2S clock output for the gateway break the application?

    The nRF5340 Audio application is built on some assumption about the synchronization between the NET and APP core (and more explicitly also between the I2S peripheral and the NET core), and so when these assumptions no longer holds then the application will break. I guess it comes down to that since this is not a supported feature of the nRF5340 LE Audio reference application it is not something that the LE Audio team is working to ensure is possible, or have made any tests or accommodations for.

    Could you elaborate on your use-case here, so that I may understand your situation better?

    Best regards,
    Karl

  • Hello,

    as my colleague is not returning until Wednesday I will reply instead. The reason why we would like to configure the nRF5340 as slave is because we have a 'main' DSP device that ought to receive audio from various different sources. One of these sources is the I2S interface of the nRF5340, which we use to forward and return audio from and to BLE. Since we have various different audio sources that we need to synchronize on our main device, it seems reasonable to us to configure our main device as master in terms of I2S rather than the nRF5340. Is there any supported non-application-breaking way of achieving this? Or will we have to use a workaround like it is described in the posts liked by my colleague?

    Thank you in advance!
    Kind regards,

    Gregor

  • Hello Gregor,

    Thank you for clarifying - I understand your use-case and I see how it would be beneficial to have this as an easily configurable option in the reference application. I will also discuss this possibility with the LE Audio team to potentially create a task for them to create this in the future, but if this were to happen it would be some time into the future.

    Unfortunately, there is no supported non-application-breaking way to do this, and so you would indeed have to follow the approach outlined in the two tickets referenced by your colleague here.

    Best regards,
    Karl

Reply
  • Hello Gregor,

    Thank you for clarifying - I understand your use-case and I see how it would be beneficial to have this as an easily configurable option in the reference application. I will also discuss this possibility with the LE Audio team to potentially create a task for them to create this in the future, but if this were to happen it would be some time into the future.

    Unfortunately, there is no supported non-application-breaking way to do this, and so you would indeed have to follow the approach outlined in the two tickets referenced by your colleague here.

    Best regards,
    Karl

Children
No Data
Related