Most Microcontrollers (uC) have an Analog to Digital Converter (ADC) as part of their peripheral set, which is phenomenal as this integrates two components into a single package. These ADCs are usually register mapped as well, which allows the data to be extracted quickly and easily.
In spite of this tight integration, you can still purchase external ADCs. I can see several cases for these:
- The ADC needs to be isolated from the uC.
- The bit depth of the ADC samples needs to be higher than the uC's ADC.
- The voltage to sense is far from the microcontroller and long analog lines are not acceptable.
- The voltage to sense is in a harsh environment not suited for the uC.
- The external ADC samples much faster than the uC's ADC.
- The reference voltage for some sample is different than for others, requiring multiple Vref pins (and thus multiple external ADCs).
- The current uC doesn't have enough ADC channels and the cost of putting a new uC is prohibitive.
- The external ADC consume less power than the uC's ADC (I would need an example to believe it).
- The ADC channels must be sampled simultaneously (rare scenario).
- The cost of programming firmware at manufacturing time outweighs the cost of the more expensive ADC part (unlikely).
- The PCB has space constraint and no uC can fit (unlikely).
This is all well and good, but what strikes me as odd is that external ADCs are usually quite a bit pricier than their uC counterparts, yet provide equivalent functionality. For instance, you can purchase a EFM32Z part with a 12bit 1Msps ADC (with internal reference) for about $1, or you could purchase an equivalent 12bit 200ksps ADC for about $3.50 (same speeds(ish), relatively same power numbers, etc) and perform the same task (extracting ADC data).
The question then becomes: are there compelling reasons an engineer would favor an external ADC over a uC's ADC when the latter can perform the same functionality?
If the internal ADC of your microcontroller performs the job you need it to then no, there is no need for external ADCs. But then, that's not who they're aimed at.
You have covered most of the reasons for an external ADC, but there are a few more, and in my opinion, they are some of the most important reasons:
For point 3, take the Raspberry Pi for example. That has no ADC available at all, you have to add an external one to do any analog work at all.