ICS-52000 not working properly (noisy and low-level signal)

By p3droml , 5 January 2018

Hi folks and invensense moderators,

I'm using 2x NW-AUD-ICS52000 to evaluate ICS-52000 microphones together with Teensy development micro-controller, which recently added TDM support to the Teensy Audio Library.

By now, I'm only trying to use the first channel, formatting it to Signed 24-bit little-endian PCM and storing 11 second clips in a SD card.

Beginning of RAW File example:

bc00 002d ffff 57ff ff42 0000 5cff ffb1
ffff 6eff ff5f ffff eaff ff05 ffff dffe
ffe0 ffff 34ff ff49 ffff f0ff fffb fdff

First sample: 0xbc0000 = 188
Second sample: 0x2dffff = -211
...

Then, I'm using Python to read the RAW file, visualizing the analog signal and performing frequency analysis.

x, fs = sf.read(path, dtype='int32', channels=1, samplerate=44100, format='RAW', endian='LITTLE', subtype='PCM_24')
x = x / 8388608

Recorded sound consists on loud and close bell sounds which should even overload the microphone, however, signal level remains as low as ~0.05 when normalized to [-1,1) scale.

Image removed.

Image removed.

When playing-back using Audacity, if increasing the gain to the maximum +36dB I can roughly recognize the sounds or my voice if shouting next to the microphone whole.

p3droml

8 years 2 months ago

- Clock signals have been checked using an oscilloscope
- Other channels within both boards have been tested with the same result
- If writing the low 8 zero bits of the 32 bit slots value toggles between 0x00 and 0xc0
- Microphones are powered at VDD = 3.3V using Teensy 3.3V voltage regulator

Code used to interleave the data can be found here.

void continueRecording() {
if (queue1.available() >= 2 && queue2.available() >=2) {
uint16_t buffer1[128];
uint16_t buffer2[128];
memcpy(buffer1, queue1.readBuffer(), 256);
memcpy(buffer2, queue2.readBuffer(), 256);
queue1.freeBuffer();
queue2.freeBuffer();
for(int i = 0; i < 128; i ++){
frec.write(buffer2[i]>>8); // LSB
frec.write(buffer1[i]); // Middle Byte
frec.write(buffer1[i]>>8); // MSB
//frec.write(buffer2[i]); // Zeros
}
}
}

Any help/clue on the possible issue behind this?

phpbb Post ID
36685

quaegebe

6 years 6 months ago

Hi p3droml !

I experience exactly the same problem with an ICS-52000 array on my Tegra TX2 Card... I tried different I2s channels / sampling frequencies and channels numbers...

Did you find by any chance the answer to this problem ?

Thanks a lot and have a nice day

Nicolas

phpbb Post ID
37637

chriscovariant…

6 years 4 months ago

I am having similar problems with the NW-AUD-ICS-52000 board. I was wondering if I had damaged my board, since I only get noise out and no audio signal. Any ideas? Is it easy to damage this board?

Thanks.

phpbb Post ID
37704
phpbb Topic ID
36682