• Disclaimer: This Vendor's Forum is a paid-for commercial area. Unlike the rest of diyAudio, the Vendor has complete control of what may or may not be posted in this forum. If you wish to discuss technical matters outside the bounds of what is permitted by the Vendor, please use the non-commercial areas of diyAudio to do so.

Changing the onboard controller to only handle reset

So, I'm building my first DIY DAC with TPA parts, and I definitely want to use an external I2C controller, but I'd rather not have to have a separate control line and electronics or relay to control the DAC reset.

I'm wondering if there isn't a software solution to my problem. I haven't seen anyone propose this solution yet, although it's hard to catch up on many years of posts.

What I am planning is to leave the onboard controller in place, but replace the firmware with stripped down code that removes all of the support for being an I2C master on the bus, i.e. it will never talk to the DAC over I2C.

It's whole purpose in life will be to simply do the initial hardware reset sequence via gpio when power is first applied, and do nothing else.

If I decide that there is something else I want the onboard controller to do with the other GPIO's local to the DAC board, I can add code to make the controller an I2C slave, assign it an address that doesn't conflict with the DAC, and then send commands to it.

What I may do at first (during a transition to developing my own external controller code) is replace one of the current gpio switch settings to control whether or not to enable the onboard controller to be a master. That way I can keep the current code with the one difference, i.e. look at the switch at startup and only talk on the I2C bus as a master if the switch is set, otherwise have it be a reset only controller, i.e. I can still use the onboard controller for it's original purpose when I don't have my external controller being an I2C master.

Has anyone already tried this idea? Does anyone see any problems with it? The external controller (assuming it is in the same power domain) would have to wait the requisite reset time before it should attempt to talk to the DAC.
 
Brian D. sent me the necessary lines of code a long time ago but I ultimately chose a different solution. Now I can't find that information but its very doable.

At that time I didn't have a chip programmer but I had a spare Arduino so I just programmed that to do only the reset, and I removed the B3 onboard controller.

Next time I take the system apart I will remove the Arduino and install a 'supervisor chip' that runs on clean 3.3v completely isolated to the B3Pro. It will initially reset the DAC via the GPIO area of the B3Pro.

B3Pro GPIO info
Chip Info here
possible adapter for chip