ADCs and DACs for audio instrumentation applications

At the other end: MS maximal 384kHz SR, if more you need (or DSD native) to use ASIO and related MS ASIO driver validated by :santa3:

The MS WASAPI UAC2 driver runs bitperfect at any samplerate in exclusive mode.

512kHz/32bits: https://www.diyaudio.com/forums/pc-based/342070-linux-usb-audio-gadget-rpi4-otg-5.html#post6719353

768/32: https://www.diyaudio.com/forums/pc-based/342070-linux-usb-audio-gadget-rpi4-otg-5.html#post6725023

3.9MHz/16bits (limited by max isochronous bitrate for USB2 without multipackets): https://www.diyaudio.com/forums/pc-based/342070-linux-usb-audio-gadget-rpi4-otg-5.html#post6725714
 
Last edited:
STM32F7 has much lower power consumption compared to XMOS
It depends about what we are talking - chip power consumption or total board.
Let say - from 5V USB.
XMOS problem is 1.0v power supply, if linear regulator used, input current is high. But most STM als has internal 1-1.3V LDO for Vcore.

If to see to the chip itself, F7 has comparable with XMOS power consumption, while H7 has up to twice higher(!) than XMOS (XS1 and X200).
 
Yeah but F7 cpu should be doing almost nothing

USB stack?

so it'll just be the current draw of peripherals, DMA, etc... should be quite low, if you use WFI sleep mode. Could also set CPU clock to a very low frequency...

Will be the problems with peripherals.
But for what in this case you need F7?
I can understand F723 (because it has internal HS USB PHY), but other F7 - why not to use F3 or F4, with it's lower power consumption, if you in any case wants to run F7 with a lower clock?
 
USB stack?

During isochronous transfer, USB stack doesn't do much... there's only endpoint I/O and the occasional feedback packet for asynchronous mode. STM32F7 doesn't seem to support scatter/gather DMA, but it has a FIFO, so all the CPU should do is one interrupt per microframe, setup DMA to transfer from USB FIFO to RAM and from RAM to I2S peripheral...

I got negligible cpu use on cortex-M4 even at 8ch 192k 32 bit.

If it has to use a lot of CPU, then either it has the wrong hardware architecture and the CPU has to copy all the data, or it has the wrong software architecture like a dumb HAL layer that needlessly copies all the data, but at least that can be fixed going bare metal.

However... DMA on the M7 seems to be... problematic...
 
YES (after MS learned), thank you, while did not had yet any real UAC2 setup! 384kHz may in shared mode only do the resampling load.

Yes the wasapi shared mode must provide resampling, offer samplerate selection to the user (thus hard-coded set of rates), etc. But the exclusive mode behaves closer to linux alsa hw device than to the rather inflexible ASIO.

IMO most UAC2 devices could be configured to support the MS stock driver, it takes "just" setting parameters in the USB descriptor in line with the very strict requirements of the driver (mostly undocumented, learnt by trial/error). And using explicit feedback endpoint (not implicit feedback like e.g. RTX6001 does) but that one is documented by MS.
 
The ST HAL is almost always the bottleneck, in any application that requires high speed. A certain performance hit is to be expected for any HAL implementation, but ST went IMO way too far in dumbing down their HAL at a hefty performance cost. To the point it is good only for demo code.

Actually the USB related HAL stack is quite thin. I would not expext huge performance benefits if it was left out.
 
During isochronous transfer, USB stack doesn't do much... there's only endpoint I/O and the occasional feedback packet for asynchronous mode. STM32F7 doesn't seem to support scatter/gather DMA, but it has a FIFO, so all the CPU should do is one interrupt per microframe, setup DMA to transfer from USB FIFO to RAM and from RAM to I2S peripheral...

There are some applications where this is not exactly possible. One is SPDIF TX where the application needs to align the data with MSB at bit23.
 
From the diyink USB board link:

"5) Extreme diyer can use the onboard full size XSYS connector to program the xmos with their customized firmware to add more feature and function. (Please notes the item price includes only the hardware. For programming support, please refer to the xmos official website and xcore.com for question about xmos programming, the PCB portmap is shown in the item image)"


Also:

"*The usb audio source code can be downloaded from xmos.com and xcore.com."
 
Last edited:
If the device source code is available, why not modifying it to support the stock wasapi driver and no third-party driver is required?

It is not, on both ends. The windows end is Thesys licensed, the XMOS end is available as binary only, not sure if access to the source code can be licensed. As far as I know, the diyhk source code is also not available. The statement is pretty vague, things may not be that simple, through that connector.
 
Last edited: