A breakout board for Microchip's highly-flexible rail-to-rail ADC
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
MCHP-S-A0003587227-1.pdfOptional 19.6608MHz OSC DatasheetAdobe Portable Document Format - 854.90 kB - 10/04/2021 at 16:58 |
|
|
MCP356x-errata (revB).pdfADC ErrataAdobe Portable Document Format - 153.93 kB - 10/04/2021 at 16:57 |
|
|
MCP356xR.pdfADC DatasheetAdobe Portable Document Format - 2.23 MB - 10/04/2021 at 16:53 |
|
|
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....
The new version is ready for testing. Tindie stock will be updated as soon as the boards pass tests.
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.
Create an account to leave a comment. Already have an account? Log In.
My apologies for my high latency reply. I finally got this stuff organized. The driver I'm using is now linked in the project.
https://github.com/jspark311/ManuvrDrivers/tree/master/src/MCP356x
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.
Thank you very much :) I will see if I can run these drivers with an Arduino board! Also if it might not be trivial to quickly implement it.
Let me know if you make any testing code in the meanwhile (whichever language/platform). Thanks!
What Arduino board are you using? I have platform shims for Teensy3x and Teensy4x.
I use to code with Arduino IDE, but I use multiple boards, like Arduino ones (i.e. the Nano), Teensy as well (I have a 3.2 and 4.0), etc...
The Arduino driver was updated today. Also, you can use the group chat for this project for support.
https://github.com/jspark311/MCP356x-Breakout/tree/master/Arduino
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.
Are your design files somewhere where I can download them?
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).
[EDIT: Correcting links. Which changed today]
This is for the revision with the external oscillator
https://oshpark.com/shared_projects/TIq4K8iz
Direct MCLK version:
https://oshpark.com/shared_projects/fjlkMb7V
Become a member to follow this project and never miss any updates
Hello, nice design! Is there any file source available? And any firmware libraries to use? Thank you very much :)