Accessing two channels of i2s

Hi,I am using NRF5340 AUDIO DK BOARD and Ihave been trying to access i2s mic and I want to transfer the mic data to Amplifier .Is it possible to do with single I2s ? As I observe nrf5340  has two channels.If it possible how to configure pins for mic and amplifier as I have been using SCK,SDIN,LRCK but if want to configure for Amplifier what pins can I use for it as it doesn't have other SCK,LRCK pins.And I want to know difference between MCK and SCK in i2s configuration,Ihave attached the i2s configuration below.

Parents Reply Children
  • I understand. In that case, I would recommend that you start with the audio sample, because it will be more work to add this to a barebone I2S application later.

    Try to build the broadcast source configuration, and locate where it picks up the microphone signals.

    Best regards,

    Edvin

  • Thanks Edvin,will check with that sample .Actually I am working with I2S echo saple where it have Rx and Tx using for getting audio and amplification respectively and I thought if I get raw data I can notify the data by creating service and characterstic via ble using Zephyr.Is this approach works?Will there be same working in your mentioned audio sample "broadcast source" ?

    And to mention when I am using Echo sample ,I done changes to code as per my mic and added register address and able to read values from amplifier but I couldnt listen any audio from speaker amplifier ,I can listen only noise may be due to current leckage .I can see the clocks coming correctly from SDOUT i,e to amplifier.So can you help me in his regard.

     &pinctrl {
    	i2c0_default_alt: i2c0_default_alt {
    		group1 {
    			psels = <NRF_PSEL(TWIM_SDA, 1, 2)>,
    			<NRF_PSEL(TWIM_SCL, 1, 3)>;
    		};
    	};
    
    	i2c0_sleep_alt: i2c0_sleep_alt {
    		group1 {
    			psels = <NRF_PSEL(TWIM_SDA, 1, 2)>,
    			<NRF_PSEL(TWIM_SCL, 1, 3)>;
    			low-power-enable;
    		};
    	};
    
    	i2s0_default_alt: i2s0_default_alt {
    		group1 {
    			psels =<NRF_PSEL(I2S_SCK_M, 0, 26)>,
    			<NRF_PSEL(I2S_LRCK_M, 0, 25)>,
    			<NRF_PSEL(I2S_SDOUT, 0, 6)>,
    			<NRF_PSEL(I2S_SDIN, 0, 7)>;
    		};
    	};
    	i2s0_sleep_alt: i2s0_sleep_alt {
    		group1 {
    			psels =  <NRF_PSEL(I2S_SCK_M, 0, 26)>,
    			<NRF_PSEL(I2S_LRCK_M, 0, 25)>,
    			<NRF_PSEL(I2S_SDOUT, 0, 6)>,
    			<NRF_PSEL(I2S_SDIN, 0, 7)>;
    		};
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	pinctrl-0 = <&i2c0_default_alt>;
    	pinctrl-1 = <&i2c0_sleep_alt>;
    	pinctrl-names = "default", "sleep";
    
    tas2563:tas2563@4C{
    		compatible = "i2c-device";
    		reg = <0x4C>;
    		label = "TAS2653";
    	};
    };
    
    &clock {
    	hfclkaudio-frequency = <11289600>;
    };
    
    i2s_rxtx: &i2s0 {
    	status = "okay";
    	pinctrl-0 = <&i2s0_default_alt>;
    	pinctrl-1 = <&i2s0_sleep_alt>;
    	pinctrl-names = "default","sleep";
    	clock-source = "ACLK";
    };

  • Kashyap23 said:
    and I thought if I get raw data I can notify the data by creating service and characterstic via ble using Zephyr.Is this approach works?

    Audio over BLE is quite different from "normal" BLE, so I would say that this is probably not going to work. The Audio channels in BLE are isochronous, while normal BLE is not. So please study the nrf5340_audio sample in order to get the BLE part of the audio up and running.

    What I2S echo application are you using? 

    Kashyap23 said:
    done changes to code as per my mic and added register address and able to read values from amplifier but I couldnt listen any audio from speaker amplifier ,I can listen only noise may be due to current leckage

    I don't understand. Did you manage to get sound from the microphone? And you forward it to the amplifier, but it sounds like noise only?

    Best regards,

    Edvin

  • Ok thanks Edvin .I will go through the auddio sample.

    Yes,I able to do that but I am not getting live audio .I am getting only noise

Related