We are way beyond that stage now George
I can't just interconnect ICs. I have to intervene in software in several places. STM32F4/H7 stuff. The trouble with THAT platform is the current software examples and libraries are dubious to say the least.
Everytime I regen the HAL layer code I have to go and fix TWO bugs in the libraries. The most vunerable buffer to over-running isn't mine apparently, it's STMs library code. As an aside... I am slowly working my way behind the emperor's curtain there and looking for key points to intervene and take control of the USB packet reception myself.
Their examples are not worth using. Why? Because, a) they limit the scope of their examples to stupidly narrow use cases. b) the limit the scope of their examples to their own development boards. c) Everything useful is abstracted into BSP macros. (Board support package). So to get anywhere you have to down load that package for a board you.... nevermind, I got angry and I'm not going back there. I'm resolved to taking what I can get working with HAL and learning to intervene in the lower layers when I need.
In contrast the ICs don't really seem to care what you do with them. I have tried... not necessarily intentionally...
* unpowering and repowering them.
* shorting them out.
* dragging both GND the 3.3V pins from a uart over the top of their module.
* disconnecting and reconnecting their clock lines.
The just don't care. Obviously they stop when out of parameters, but they just start back up again like nothing happened.
The STM32 ... it's just such a "Diva". You look at it funny and it quits. Actually this I believe comes down to their USB implementation. They use an interrupt loop to fetch data.
The call PrepareReceive. In the callback for that successfully being received they call another PrepareReceive. Now you see the reason it just stops dead if you look at it funny.
You maybe understand the urge to move as much of the insanity into ICs. So your point is very valid