CYW20706 and SPH0645LM4H MEMS microphone

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
WeJi_4584096
Level 1
Level 1

Hello,

I am trying to build a Bluetooth headset with the CYW20706. I am new to PSoCs but I have been able to get the transducer output working via a DAC/AMP combo. However, we have been unable to get the our MEMS microphone to work consistently: https://media.digikey.com/pdf/Data%20Sheets/Knowles%20Acoustics%20PDFs/SPH0645LM4H-B.pdf

I found out that the I2S clock is only ~512kHz whereas the mic requires 1.024 MHz to go into active mode (even though the spec sheet says it runs at 1.5 MHz or 2.4 MHz?) I found out another potential issue is that the CYW20706 only takes 16 bits while the microphone outputs 24 bits, however we should be getting some kind of noise at all times? The microphone does not output anything even when its output pin is not connected to the eval board's I2S input pin. However, sometimes we are able to get audio SOMETIMES by first physically floating the LRC and SEL pins on the mic, which creates some noise, then plugging both into VCC. Occasionally after the noise appears it is able to pick up human audio. We are stumped as to what the issue is as we cannot repeat this phenomenon. We are using HFP. Any guidance would be greatly appreciated.

0 Likes
1 Solution
AnjanaM_61
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 5 questions asked

Hi,

As you have already noticed, our device support 16 bits  data width. So you have to choose a compatible mic.

You may also refer : PCM/I2S Clock setting in CYW20706

Thanks,

Anjana

View solution in original post

13 Replies
AnjanaM_61
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 5 questions asked

Hi,

As you have already noticed, our device support 16 bits  data width. So you have to choose a compatible mic.

You may also refer : PCM/I2S Clock setting in CYW20706

Thanks,

Anjana

We are able to get very clear audio sometimes by tinkering with the WS pin and hooking it up to VDD instead of WS. We only need one channel to work. Alternatively, can’t we just downshift the resolution just as it comes in? Do we have access to the I2S buffer in the CYW20706? The mic outputs 24 bits, but 6 of them are padded 0’s in the front, so it’s only 18 bits of resolution. We don’t mind losing 2 bits of resolution to bring it down to 16.

If my previous suggestions aren’t viable solutions, do you have any other design alternatives you could suggest?

0 Likes

Hi @WeJi_4584096 ,

I am sorry, in current SDK implementation there is no provision to access I2S buffer in application .

Regards,
Anjana

Can you recommend ANY mic or mic/codec combo that will allow me to use take in audio while in HFP mode? Do we have to use I2S_IN for input if we need I2S_OUT for output to the transducer, or can we use another port for input without having to make significant code changes, such as SPI?

0 Likes

Hi WeJi_4584096 ,

I am sorry , I have not tested any I2S mic . Have to search for a compatible one .

However following link have details on codec which we tested internally for demo purpose: WICED Studio Bluetooth Forums

Regards,

Anjana

0 Likes

Have you guys tested ANY mics at all internally? Not I2S specific ones. I just need something that would work with the HFP interface. We already have output from the MCU working. We need to take in audio to make a headset.

0 Likes

Hi,

The limitation here is that the I2S block in CYW20706 supports only 16 Bit Clock pulses per Channel. Which is 16bit audio.

In the case of SPH0645LM4H it needs 32 Bit Clock pulses per channel. Hence it kinda works when you put the WS to VDD.

Internally our use an I2S Codec that supports both Audio in & Out, thus a Analog Mic would be needed. The good thing about Codec's is that they can be configured for the 16bit per sample data format.

I tried doing a search but was not able to find a I2S Microphone with 16bit data output.

Regards

Winston

Regards
Winston

Can you please tell me what mic and codec combo you are using? I am unable to find any appropriate analog to I2S codecs on the market.

Edit: As in I am able to find an abundance of 24 bit ADCs, but on the spec sheets they don't seem to indicate that they can be set to 16 bit ADCs. If we were allowed to view the buffer, then we could just keep the upper 16 bits, but since we don't have the ability to do that, are 24 bit ADCs not viable then?

0 Likes

Any update on a codec that can actually output/configured to output 16 bits only? Most of the codecs I can find only output 24 bits.

0 Likes

Hi WeJi_4584096 ,

The codec used in the blog here (WICED Studio Bluetooth Forums ) can be configured for 16 bits.

Also WM8731  , AK4679 and CS47L35 (Cirrus) can be configured for 16 bits.

Regards,

Anjana

0 Likes

Where can I get MCLK? The CYW20706 does not have a MCLK output, only BCLK. If I use a CYBT-343026, can I use the 24 MHz oscillator as MCLK by setting it to be 256Fs?

0 Likes

According to

It says that "The PCM interface is used for full duplex bidirectional transfer of 8K or 16K voice samples while using the HFP profile." Does this mean when we are using HFP, the communication protocol is in linear PCM, instead of I2S? Does this mean we don't need an I2S microphone or codec, but instead a PCM codec?...

0 Likes

The I2S and PCM bus are very similar (bit clock, left/right word selection, Data In Data Out). So you can use the I2S codec itself.

Regards,
Anjana

0 Likes