This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

I2S strange behaviour

Hi,

I am developing a device that uses a custom nRF52840 module. This module is assembled on a mainboard that contains an ICS-43432.

We are developing the firmware using nRF SDK v17.1.0 and the nrfx drivers.

After assembling the module in a mainboard, we found out that the I2S bus stops working.

From my debugging sessions, I can see that the signals are all OK, including the data signal from the microphone. On the firmware side, the I2S IRQ is not triggered, so my callback is never called after the first request for buffers.

The strange thing is that the same code works flawlessly while using the module standalone connected to a development board of the ICS-43432 using some wires. I even tested the loopback example without success.

On the mainboard we only have a level shifter (SN74AXCH4T245RSVR) between the nRF52840 (1.8V) and the ICS-43432 (3.3V).

Any idea of what might be happening, or how can I debug this issue further?

 

   

Parents
  • Are you sure the level shifters are connected the correct way? As far as I can see, the SN74AXCH4T245RSVR have directional level shifters. 

    Can you post a schematic?

  • I validated the signals before and after the shifter. Everything seems fine, I can see the SCK, LRCK and the output from the microphone but we do not get any output from the I2S driver.

    Another strange thing is that when I do not have anything connected to the I2S pins, the driver would give out zeros, as expected. When I assemble the device in the mainboard, this behaviour stops happening, even if we do not have the microphone connected,

    Nevertheless, you can find a screenshot of the shifter configuration below:

    The SCK and SDIN of the I2S are connected to TX2 and RX2 respectively. The nRF pins 1.00 and 0.24 are connected to nRFTX2 and nRFRX2.

    The LRCK pin is connected to CS2 and CS2nRF is connected to pin 0.16.

    I checked with the hardware designer but we could not find anything wrong with this configuration.

  • We were able to get this working by changing R29 to a higher value.

    Somehow, the switching of Q6 with such a low value resistor was interfering with the I2S block.

Reply Children
No Data
Related