I was in need of a good ADC for monitoring both single-ended and differential analog signals, and this one didn't have a breakout. So I made one.
The layout without the oscillator was a board I rolled for a problem at work. I since reworked it to include a local tight-tolerance MEMS oscillator at the ADC's maximum rated input frequency of 19.6608 MHz.
My new version of this breakout also has 1% tolerance resistors everywhere, broken-out voltage reference pins, and isolated digital and analog power planes (per Microchip's layout guidelines),
Files
MCHP-S-A0003587227-1.pdf
Optional 19.6608MHz OSC Datasheet
Adobe Portable Document Format -
854.90 kB -
10/04/2021 at 16:58
The OSHPark projects for this breakout were just updated, as was the source repository.
Note about the input filtering This board is based on Microchip's reference schematic, complete with RC low-pass filters at each input pin. This filters everything above about 16kHz.
Note about part change Microchip released a new version of the MCP356x last year. All documentation has been updated, and both the Arduino demo driver, and the non-blocking driver written around CppPotpourri have been updated to work with both versions of the part.
The new version has support for an internal Vref of 2.4V (which also outputs on the REF+ pin. To make matters worse, that internal reference is enabled out of reset. So the driver was extended in such a way as to achieve the old part's behavior (external Vref) unless the flag is passed to use the internal Vref. Why did you select a rail-to-rail ADC to throw away 33% of the range? Oh well....
This project's hardware aspect has been in my cruft pile for more than a year. I've finally eaten through the backlog. But I've been actively using the part since I originally rolled it, and the driver has been continuously improving since. Now that things are (mostly) stable with this board, I've listed it on Tindie and will be maintaining the driver.
Regarding code and support:
Trying to track comms across different projects (one for each breakout) is overwhelming, and questions might go unanswered. Please use this project's chat room for support going forward. The big topic will almost certainly be firmware.
Getting my driver to work as-written is non-trivial at this point, but should be both possible, and easier in the future. If you are willing to suffer a little and use my support libraries, I'll support those as well.
My driver is almost entirely non-commital with respect to the use-cases. So it's complicated and probably difficult to understand. Other users of this chip might sensibly decide to use my driver as a baseline for their own (less generalized) drivers. The cost of this generality is partly paid at runtime, and that's a cost you might not want to pay if you are working inside a mint-tin.
The driver will probably never support the chip's addressing scheme (multiple chips accessed with a single bus transaction and CS pin).
The supply chain sucks
It does. You know it. Almost every big project has a part that is out of stock or going EoL. Microchip itself hasn't run dry of parts, but SiliconLabs (who made the OSC on the version of the board that includes it), has. I will be sub'ing it out for an (almost) equivalent Microchip part. The new part has twice the drift, and 2mA more current draw. But at least I can still buy them. I will post updated datasheets and specs once I validate the new part. Until then, I am out-of-stock on the "with OSC" version of the board.
Getting this driver running as-is is not trivial (yet). I enabled the discussion room for this project, which will be where we should all address driver support.
I just gave a quick look at the drivers and the code looks really neat and well structured! Thank you very much :) I will see if I can buy the breakout board on Tindie and start playing with it.
My apologies for my high latency reply. I finally got this stuff organized. I have added an OshPark link to the project if you just want boards. But I don't have board source posted to github (yet).
Hello, nice design! Is there any file source available? And any firmware libraries to use? Thank you very much :)