Using a resistive differential divider as the input to a differential amplifier with a lower voltage rail than the Vin being measured is valid BUT be aware (and some simple calculations will show you) that the common mode voltage does not cooperate properly with the division and you get increased error.
AFAIR error effects due to errors in the divider resistors act on the full common mode voltage whereas the dividers themselves divide only the differential signal. So any errors in the divide resistors effectively increases by the error % of the resistors. If your common mode voltage is large compared to th edifferential signal "there will be problems".
Very approximately if you have 20:1 divide and 1% resistors you can get ~= 20% errors. Using 0.1% resistors as @The Photon suggests may seem a luxury but isn't and will probably only deliver accuracy about as good as you have said is OK if unadjusted. Note that this error may be removed by either physical calibration or software adjustment and you are then just left with the time variant effects. eg a 25 ppm/K resistor may end up looking like 500 ppm/k or perhaps 1% error at 20 K variation.
All the ab0ve is approximate as you have to see how combining worst case pars works in the circuit you use, and eg temperature effects will usually track and so partially cancel to a large extent.
If you can provide a floating high side supply you can buy isolation amps that have specs better than you need.
Here are Digikeys reasonably wide range of offerings
You can use these elegantly clever dual linear optocouplers
to form an isolated linear interface.
This is Vishay IL300 but there are others.
The circuit relies on the balance in the two receive diodes- ne being used on the send side for feedback linearisation and its (hopefully) good-twin on the receive side for output.
In simplest form
Usually done more like this, but still simple enough
I don't know what you mean by "UWB" (use standard or common abbreviations, no I'm not going to look it up, it's your job to explain), but many many micros have 10 bit A/Ds and SPI hardware. Even without the SPI hardware, SPI is simple to do in firmware by controlling the I/O lines directly.
In the Microchip line, there is a wide spectrum that meet these requirements. A low end PIC 16 can be small, cheap, and very low power. A fast dsPIC33 can run up to 40 MIPS but of course will use more power. There are various PIC 18 and PIC 24 in between.
What you need to explain is how fast you need to sample the 10 bit A/D and what the micro needs to do to these 10 bit values before passing them on via SPI.
This "answer" is more of a comment because too much important information is lacking. It can be turned into a answer if you cooperate and answer the specific questions asked, not what you feel like answering or or you think is important. As it stands, this question is too vague to be reasonably answered and should be closed. People will come by and close it as they encounter it. When 5 close votes are cast, it's over. The clock is ticking. You may have only minutes to a few hours. Do what I said exactly as I said quickly and you may get your answer. Ignore it and not cooperate and you'll be sent home without a cookie.
Added:
You have now added that the A/D sample rate is 500 kHz and that this raw A/D data is to be passed on via SPI. Since the A/D is 10 bits, this is apparently where you got the 5 Mb/s SPI data requirement from.
This is doable, but will require a reasonably high end micro. The limiting factor is the 10 bit A/D at 500 kHz sample rate. That's quite fast for a micro, so that limits the available options. Another thing to consider is that there is more to SPI than just sending the bits. Bytes may need to be transferred in chunks with chip select asserted and de-asserted per chunk. For example, how will this 10 bit data be packed into 8 bit bytes, or will it at all?
The main operating loop of the firmware will be quite simple. You probably set up the A/D to do automatic periodic conversions and interrupt every 2µs with a new value. Now you've got most of 2µs to send it out the SPI. If the device really can just accept a stream of bits, then it might be easier to do the SPI in firmware. Most SPI hardware wants to send 8 or 16 bits at a time. You'd have to buffer bits and send a 16 bit word 5 out of every 8 interrupts. It might be easier to just send 10 bits each interrupt in firmware.
Sending SPI bits in firmware if you only need to control clock and data out is pretty easy. Per bit, you have to:
- Write bit value to data line.
- Raise clock
- Lower clock
It would make sense to unroll this loop with preprocessor logic or something. A PIC 24H can run at up to 40 MIPS, so you have 80 instructions per interrupt. Obviously you can't use 8 instructions to send each bit. If you can do it in 6 it should work. There is some overhead to get into and out of each interrupt, so you might make the whole thing a polling loop waiting for the A/D, but then the processor can't do anything else. I'd probably try to cram this into the A/D interrupt routine using every possible trick so that at least a few forground cycles are left over for background tasks like knowing when to stop, etc.
Check out the Microchip PIC 24H line. I think most if not all have A/Ds that can do 500 kbit/s, and they can all run at least up to 40 MIPS. The new E series is even faster, but I'm not sure how real that is yet.
Best Answer
Since you want to convert the output from an audio mixer, it will be at the line level, which is standardized to be an AC signal with peak values defined by the standard in use. The maximum voltage that you can expect is +-2.192 V, or 4.384 Vpp.
Your ADC takes signals in the range [-0.3 ÷ AVdd+0.3], so you'll need to both amplify your signal and traslate it from centered in 0 to centered in AVdd/2. You'll need to tune your amplifier/shifter (better to use pots) to cover as well as possible the range of the ADC without distorting (consider that amps usually distort before the saturation threshold).
If you look at the datasheet of the ADC, it suggests an input buffer that you can use to condition the signal from the XLR input:
Edited out: