In reference to the VS1010 Development board:
I am looking at the feasibility of adding the microphone end point to the USB Audio driver.
It seems that there is an available endpoint that have not been used.
The mems microphone seems like a good data source for the audio but it seems line-in could be routed as well (mono left or right)
It seems that this type is driver was available as part of the VS1000 Dev kit but was not implemented on the VS1010 dev kit.
Was there a hardware limitation/size constraint that kept the driver as only supporting DAC out?
It also seems that USB Sound card was a desired software implementation but I can't find any links to code.
Thanks,
VS1010 USB Audio with Mic
Re: VS1010 USB Audio with Mic
Hello and welcome to the forum.
The mems mic interface is digital interface and the microphone on the developer board is indeed very good. When it was tested for the first time, the audio quality surprised me pleasantly.
Let's think about the inputting audio to VS1010. The available sources are mems mic, spdif, SAR and i2s. For USB application spdif is incompatible due clocking reasons. SAR is only 12 bits which may or may not be enough with some signal processing. And mems mic is for ambient audio input. The only real high quality solution for line input would be external i2s ADC.
Here is solution for USB audio: viewtopic.php?f=15&t=2284&p=12123 if you haven't already found it.
For developing more inputs and outputs some careful USB descriptor writing is needed and also some programming. But anyway totally doable and the DAC out was used for simplicity as there is huge matrix of possible bitrates and bit depths and not all systems support all combinations.
The mems mic interface is digital interface and the microphone on the developer board is indeed very good. When it was tested for the first time, the audio quality surprised me pleasantly.
Let's think about the inputting audio to VS1010. The available sources are mems mic, spdif, SAR and i2s. For USB application spdif is incompatible due clocking reasons. SAR is only 12 bits which may or may not be enough with some signal processing. And mems mic is for ambient audio input. The only real high quality solution for line input would be external i2s ADC.
Here is solution for USB audio: viewtopic.php?f=15&t=2284&p=12123 if you haven't already found it.
For developing more inputs and outputs some careful USB descriptor writing is needed and also some programming. But anyway totally doable and the DAC out was used for simplicity as there is huge matrix of possible bitrates and bit depths and not all systems support all combinations.
Re: VS1010 USB Audio with Mic
I have started working with the i2s input/ouput of the 2.0 version of the vs1010 development board. I looks like I could use this as a line input and forward it as such on the USB with the right code update to the usb descriptors. I am working with the line in/ line out example and there is no audio by from the Codec (AK5720). Any thoughts? It look like the example is pretty old and for rev vs1010b and the note is for a AK5358B
viewtopic.php?f=15&t=2155&p=11335&hilit ... 010#p11335
viewtopic.php?f=15&t=2155&p=11335&hilit ... 010#p11335
Re: VS1010 USB Audio with Mic
Hi!
Here is simple i2s -> DAC copy solution. FIFO fill is done in interrupt and playing is done in main loop. Enter exits.
Here is simple i2s -> DAC copy solution. FIFO fill is done in interrupt and playing is done in main loop. Enter exits.
- Attachments
-
- i2scopy.zip
- Devboard I2S AD to VS1010 DAC copy
- (34.14 KiB) Downloaded 14 times
Re: VS1010 USB Audio with Mic
Thanks Hannu!
This is a good example but it does not work with the V2.0 vs1010 development board that has the AK5720 codec.
FYI - The datasheet for AK5720 indicates:
The AK5720 should be reset once by bringing the PDN pin to “L” after power-up. In slave mode, reset and
power-down are released on the rising edge (falling edge in I2C compatible mode) of LRCK after setting the
PDN pin = “H”. In master mode, reset and power-down are released by MCLK input after setting the PDN pin
= “H”.
There is no independent control of PDN because it is tied to the power rail so I think it is power rail timing luck if this circuit worked.
This is a good example but it does not work with the V2.0 vs1010 development board that has the AK5720 codec.

FYI - The datasheet for AK5720 indicates:
The AK5720 should be reset once by bringing the PDN pin to “L” after power-up. In slave mode, reset and
power-down are released on the rising edge (falling edge in I2C compatible mode) of LRCK after setting the
PDN pin = “H”. In master mode, reset and power-down are released by MCLK input after setting the PDN pin
= “H”.
There is no independent control of PDN because it is tied to the power rail so I think it is power rail timing luck if this circuit worked.
Re: VS1010 USB Audio with Mic
Interesting. I wrote that code on V2 developer board and sampled two more boards and had no issues. But as you mentioned, reality and datasheet differs. Someone has decided to call reset pin as PDN.
I even opened and put back the JP3 jumper a few. The ADC survived the power cycle which makes me think that the ADC isn't really sensitive to PDN.
Just to be sure, do you have JP3 (near USB-A connector) connected and your audio source is outputting signal?
I even opened and put back the JP3 jumper a few. The ADC survived the power cycle which makes me think that the ADC isn't really sensitive to PDN.
Just to be sure, do you have JP3 (near USB-A connector) connected and your audio source is outputting signal?
Re: VS1010 USB Audio with Mic
I got it working!
I had to pull all power from the board and the disconnect the uart to get a full power cycle. I did not notice that there was a 4.5v source being provided by JP3. Once I put on JP3 and JP16. I got a constant values on both channels of zeroes for left and right. I then pulled all power and I came up working. I was able to get it to lock up again by pulling JP3 on and off and pushing reset but I think if you start from no power connected and everything jumper correctly it works.
I had to pull all power from the board and the disconnect the uart to get a full power cycle. I did not notice that there was a 4.5v source being provided by JP3. Once I put on JP3 and JP16. I got a constant values on both channels of zeroes for left and right. I then pulled all power and I came up working. I was able to get it to lock up again by pulling JP3 on and off and pushing reset but I think if you start from no power connected and everything jumper correctly it works.