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

Post by mspit »

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: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

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:

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

Post by mspit »

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: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

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: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

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.
User avatar
aclassifier
Respected Member
Posts: 507
Joined: Wed Apr 25, 2012 8:52 pm

Post by aclassifier »

I have had similar problems with AN00219 running on the mic array board. Input always ok, DAC output worked on every so and so debug download.

I have reasons to believe that it was fixed when moving from i2c_lib 4.0.0 to 5.0.0. There may be timing issues since I2C requires SDA not to change while SCL is high - and there are margins to it. It's problematic if SDA more or less follows SCL down.

I also had the 480 Hz sine output from @mon2 work, but not exactly as shown.

I also had an issue with .xn files and a "null" assignment.

Full details at https://www.teigfam.net/oyvind/home/tec ... nd_an00219 - Standard disclaimer: only fun ad expenses
--
Øyvind Teig
Trondheim (Norway)
https://www.teigfam.net/oyvind/home/