The ADG2128 is an incredibly flexible cross-point switch. It supports 5/-5v, 3.4MHz i2c, and is unrestricted as to its connectivity options between its rows and columns.
This is a high-dollar part, and I've been designing with it for more than 5 years. So I polished my breakout board to reuse them in a project's prototyping phase.
This board has decoupling capacitors, i2c address selection jumpers, and differentiated ground layers for noise isolation or differential operation below 0v, according to the project's demands.
Components
1×
ADG2128
Switches and Multiplexers / Analog Switches and Multiplexers
A few intrepid customers keep cleaning me out of my stock of these boards. You know who you are, and thank you. :-)
In an effort to stay ahead of demand, my next restock will be for six boards, but I'll have more PCBs on-hand. That should happen a bit before Christmas. Please know that I pay attention to waitlists. So if I'm ever out of stock on anything, and you add yourself to the waitlist, I will typically have you served within 3-weeks at the outside. Sometimes faster.
I made some small changes the boards to make manufacturing them easier. So the layouts will change slightly starting with this run, but the schematic/pinouts/drivers are unaffected. But the change will make pick-and-place easier and reduce attrition if/when I send this out for mass production.
I really like OSHPark's new "After Dark" offering. So this next batch will have that as an option on Tindie.
Documentation and bug fixes
Lots of small bug fixes and improvements have been bleeding into the drivers over the past few days. So now is a good time to re-pull those. The README has also been updated with discourse on driver features.
The driver had a tremendous amount of technical debt cleared away last night. Bus references are no longer hard-coded to "Wire", but are instead passed in as an argument to init(), and is then retained by the class. This costs an extra 4 bytes of resting memory load per-instance, but paves the way for the linux TwoWire abstraction, and makes life generally easier for anyone using the board with (suppose) "Wire1".
Additionally, the driver now supports state serialization and restore. It needs some more testing, but it should allow state restore before or after init(), allowing for "profiles" and easy management of preferred settings, default states, etc. Buffers written this way are versioned so that new driver features can be gracefully migrated in. This API is essentially finished, so it is now safe to code against. The example sketch is updated, tested, committed, and pushed.
Unrelated to the above feature is another feature that is important for the linux port: preserve-on-destroy. When the driver instance for the switch is destroyed, the default behavior is to put the hardware into a known state (reset). This opens all routes. Use-cases that want the hardware state to outlive the driver's life cycle are now possible again. See the driver README for details.
Sloppy private boolean class variables were condensed into something more efficient and manageable (int member with flags).
I might decide to put the row::col cardinality checking code back in (especially if someone tells me they want it). But it won't change the API from here on out.
The latest commit to the driver repo fixes all remaining issues, includes a finished example sketch, and cleans up the remainder of the cruft from the prior driver. Please re-pull if necessary.
I am out of stock. This is on its way to being rectified. Estimated restock date is 2019.11.30. The API for my provided driver will change slightly to facilitate Viam Sonus.
I just pushed a fix for a mistake on the silk screen that had a ground pin mistakenly labled as "SDA". Nothing was damaged. That's why I make my ground pins square. ;-)
I've ordered the new boards. Despite the picture of the assembled unit (which I'll swap out when the new boards are ready), I won't be shipping anything with uncorrected silks.
There is also an 8x8 version on offer. If anyone has interest in a breakout (or driver support) for the other members of this excellent family of cross-point switches, please tell me and give me a good excuse to use more of Analog Devices' excellently-crafted sand.
There is also an 8x8 version on offer. If anyone has interest in a breakout (or driver support) for the other members of this excellent family of cross-point switches, please tell me and give me a good excuse to use more of Analog Devices' excellently-crafted sand.