8 bit data bus
I'm trying to develop an 8-bit data bus to run data to a wiznet6100 chip in order to push live video from the camera to a connected base station computer using a power-over-ethernet line. I had originally used the 40MHz SPI line to push data to the wiznet chip, but found the speed to be a major limiting factor for my project.
Implementations i've tried:
- Using the arduino libraries' digitalWrite() function for writing values on all 8 pins. I found this to take nearly 30us for writing each byte.
- Switching to the Fast I/O implementation in the recent update was a bit better at 18us for writing each byte to the bus.
If my math is right, I'll need to get down below 0.2us per byte write in order to approach the same throughput as SPI, which is writing each bit in only 25ns. I noticed that arduino has functionality for writing an entire 8 pin port at once, and I've seen that functionality with other microcontrollers i've worked with in the past (msp432). Does the spresense have any similar functionality? Or is there a better way to be implementing this 8bit bus? I'm also open divorcing the arduino IDE and moving to the SDK if it would make this easier to implement.
This is the fastest implementation I could come up with, managed to get down to switching each pin in just under 1us which puts me at just under 8us per byte write. Any advice on speeding this up, or whether speeding it up is an achievable endeavor would be greatly appreciated
Unfortunately, I don't know how to help you. As far as I know the bus I/O access is serialized and cannot be multiplexed on Spresense.
I'll try to find out about it. If I find out anything new, I will let you know.
@kamiltomaszewski so is the 40mhz SPI line the fastest interface for getting data off of the spresense then?
@andycadams2011 As far as I know, yes.