Microphone array AN00219 no sound

Technical discussions related to any XMOS development kit or reference design. Eg XK-1A, sliceKIT, etc.
mspit
New User
Posts: 2
Joined: Tue Oct 22, 2019 3:38 pm

Microphone array AN00219 no sound

Postby mspit » Tue Oct 22, 2019 3:44 pm

Hi,

Im working with the XK-USB-MIC-UF216 and got the board working as an 8 channel microphone in Audacity. Now I wanted to try AN00219 (https://www.xmos.com/download/AN00219:- ... .3rc1).pdf) to test beamforming.

I got the project running on the board and I can select the gain and the direction of the beam with the buttons, but I don't hear sound through the 3,5mm jackplug on the board. The AN stated "Once the application is started using either of the above methods there will be the output of the micro-phones through the headphones.", what am I missing?

Thanks in advance!
User avatar
mon2
XCore Legend
Posts: 1659
Joined: Thu Jun 10, 2010 11:43 am

Postby mon2 » Tue Oct 22, 2019 5:11 pm

Hi. You may have to flash the kit with some new firmware. Review this thread for details to see if it is suitable for your case:

viewtopic.php?f=47&t=5052
mspit
New User
Posts: 2
Joined: Tue Oct 22, 2019 3:38 pm

Postby mspit » Wed Oct 23, 2019 9:22 am

I don't think that is the same issue as I have.
AN00219 makes it seem like it has no connection through USB to the PC (only for power) and the processed signal from the selected beam should be played through the 3,5mm jack. Windows (usb audio) has nothing to do with it I think.
I uploaded the project of AN00219 to the devkit and it does give me the option to select gain and the beam direction, but no output on the 3,5mm jack.

The only thing i actually want is an output of the microphone array with beamforming.
User avatar
mon2
XCore Legend
Posts: 1659
Joined: Thu Jun 10, 2010 11:43 am

Postby mon2 » Wed Oct 23, 2019 3:39 pm

Hi. Not an audio developer and do not have this EVK. Now that my usual disclaimer is out of the way...can you confirm if the I2S component of the audio IP is enabled inside your project?

See the attached partial schematic which appears to be for your kit where there is an I2S based D/A by Cirrus Logic so will be interesting to view with scope or logic analyzer, if you see any activity on the I2S interface lines. This will be a good start. Also be sure that the related IP components are the latest and greatest.

Other areas to check on this D/A are:

1) is #RESET pin on the D/A high = run mode? If LOW then the D/A is parked in reset mode through R71.

2) Do check if the I2C component is active and pinging this D/A. The D/A datasheet should offer the I2C slave address for this component. Using some simple mods inside the XMOS IP, you should be able to halt the code run after the config routine for this part. Does that code run operate ok?

Summary - the XMOS IP is a blended together recipe of assorted chunks of code. It is very easy to break the proper code run which may be preventing your audio from being output at the 3.5 mm audio connector. Very curious to hear of your results after your debugging effort.

xmos_microphone_audio_jack.png
PS: Have pinged my contact @ XMOS for more advice but this staff member is out of the office till next week. Perhaps we can get you operational before then through the above review.
You do not have the required permissions to view the files attached to this post.
User avatar
mon2
XCore Legend
Posts: 1659
Joined: Thu Jun 10, 2010 11:43 am

Postby mon2 » Thu Oct 31, 2019 12:50 pm

Hi. Not sure if you have made some progress on this case but did receive a reply from our contact @ XMOS:

it should just work. The beginning of the i2s_handler sets up the DAC and PLL.
As always, debug is all about visibility. Your idea of checking the I2S signals is where I’d start.
The other thing I frequently do is inject a sine wave to the I2S pin to see if it’s upstream or downstream which is not working. Eg:

Code: Select all

#define SINE_TABLE_SIZE 100
const int32_t sine_table[SINE_TABLE_SIZE] =
{
    0x0100da00,0x0200b000,0x02fe8100,0x03f94b00,0x04f01100,
    0x05e1da00,0x06cdb200,0x07b2aa00,0x088fdb00,0x09646600,
    0x0a2f7400,0x0af03700,0x0ba5ed00,0x0c4fde00,0x0ced5f00,
    0x0d7dd100,0x0e00a100,0x0e754b00,0x0edb5a00,0x0f326700,
    0x0f7a1800,0x0fb22700,0x0fda5b00,0x0ff28a00,0x0ffa9c00,
    0x0ff28a00,0x0fda5b00,0x0fb22700,0x0f7a1800,0x0f326700,
    0x0edb5a00,0x0e754b00,0x0e00a100,0x0d7dd100,0x0ced5f00,
    0x0c4fde00,0x0ba5ed00,0x0af03700,0x0a2f7400,0x09646600,
    0x088fdb00,0x07b2aa00,0x06cdb200,0x05e1da00,0x04f01100,
    0x03f94b00,0x02fe8100,0x0200b000,0x0100da00,0x00000000,
    0xfeff2600,0xfdff5000,0xfd017f00,0xfc06b500,0xfb0fef00,
    0xfa1e2600,0xf9324e00,0xf84d5600,0xf7702500,0xf69b9a00,
    0xf5d08c00,0xf50fc900,0xf45a1300,0xf3b02200,0xf312a100,
    0xf2822f00,0xf1ff5f00,0xf18ab500,0xf124a600,0xf0cd9900,
    0xf085e800,0xf04dd900,0xf025a500,0xf00d7600,0xf0056400,
    0xf00d7600,0xf025a500,0xf04dd900,0xf085e800,0xf0cd9900,
    0xf124a600,0xf18ab500,0xf1ff5f00,0xf2822f00,0xf312a100,
    0xf3b02200,0xf45a1300,0xf50fc900,0xf5d08c00,0xf69b9a00,
    0xf7702500,0xf84d5600,0xf9324e00,0xfa1e2600,0xfb0fef00,
    0xfc06b500,0xfd017f00,0xfdff5000,0xfeff2600,0x00000000,
};
… and replace the i2s handler with following code.

Code: Select all

case i2s.send(size_t index) -> int32_t sample:
static unsigned sine_idx = 0;
if (index == 0) sine_idx = (sine_idx + 1) % SINE_TABLE_SIZE;
sample = sine_table[sine_idx];
break; 
This will tell us if the I2S and DAC is at least working.

xscope printing of the samples is GREAT idea too..

Please update this thread when convenient.

Who is online

Users browsing this forum: No registered users and 0 guests