I'm working with 8 I2C output devices in parallel and I'd like to write to them all at the same time bit banging, really though byte banging. I'm ignoring all ack and nack and just slamming the data in as fast as possible with a common clock line.
I'd go right to the ESP32, but it lacks parallel write capabilities, so far as I know. The Mega2650 will do the job, but it's just a touch too slow.
So that brings the question: without consideration for other features, what are some of the fastest Arduino compatible boards that have direct port manipulation of at least 3 x 8bit ports?
What is the max i²c clock speed for these devices? It might be faster to write to each in turn at the fastest rate, compared to slower bit-banging to all devices in parallel.
Thank you. It's a good point, and I tried it extensively, but it's a sequencing issues, they must receive the data at the same time. I'd prefer not to stray into this path further in this thread.
Indeed. It looks like the hardware is designed to worth with RTOS and as long as I don't mind ditching semaphore and atomic safety, it should work just fine. Also means I'll have to sidestep Arduino on this one.
Further questions will go to the ESP32 forum. Thank you
Why 3 x 8bit ports? You said the clock line would be shared.
What about h/w SPI to shift registers or SPI I/o extenders in place of ports? The shift registers or I/o expanders would then bit-bang the i2c signals in parallel, instead of using ports for that
The other two are for receiving data related to the output. It must be done in parallel without the use of other devices. That's simply a requirement of the problem. The MCU will eventually be replaced with hardware specialized to the task and I need to model it as best as possible for now.
I agree that there are many ways to overcome this issue and all of your recommendations are quite valid, but I am looking for a single chip parallel solution until I can replace it with a pin equivalent FPGA.
It's also important for general purpose usage. I will check out the STM32 F4, thank you @cedarlakeinstruments and the ESP32 options.
I'm changing the solution marker as the STM32 F4 has the complete Arduino compatible solution asked for. The other answer in post #2 is helpful and correct, the F4 checks off one more box.