2017-07-31 07:02 AM
Hi,
I have a simple question but which causes me a little headache.
Does anyone know how I might interface two STM32F7 so that I might obtain the fastest communication between the two?
Something better than 10MBytes would be the best and 20MBytes excellent.
If my question needs more info do not hesitate to ask for clarification.
All help would be appreciated.
Thanks
#speed #interface #best #fastest #communication #stm32f7Solved! Go to Solution.
2017-08-01 01:53 AM
Saving the area of the PCB - use two SPI interfaces on each chip. The first in master mode, the second in submission mode.
You can not think about clock synchronization. The delay will be minimal. It is important to understand, the chip that transmits information - uses the memory of a neighboring chip to store data. For this reason, the start of information exchange should occur by mutual synchronization of readiness. For example, on receiving / transmitting a number that increases on the other side.The data exchange works through the ring buffer, the tail / head indicators are located in different parts of the access. The head pointer is read on its own memory, the tail pointer is located on the memory of a neighboring chip.To use sets of flags is a useless occupation, tested by our own experience. Once the ideal balance is found, a new need for a fresh resource appears. This race is infinite, it just spends your time.
Without saving the PCB, an external chip, for example CY7C028-15AXC.
Work with ring buffer on external memory, without restrictions, without synchronization, without prohibitions and distortions of information. Everything is possible, except for a beautiful printed circuit board. A multi-layer printed circuit board is required - to hide the hinges.Without saving a PCB, but with saving your own time.
Use an external FPGA chip to simulate two ported sram memory. This can be a simpler solution - than you think at first glance. After all, you have the opportunity to independently assign contact connections for the FPGA chip.For debugging communication technology - use usart. When the software model is stable and fast - you can go to a faster interface. I'm not kidding.
2017-07-31 07:18 AM
Shared dual-port memory.
FIFO tied to sender FSMC and receiver DCMI.
2017-07-31 10:06 AM
Hello Clive,
This a very intresting answear and had me thinking for a while. The FMC interface has one clock and 8 to 32 lines of data. Which means I dont have to agregate other types of interfaces like the SPI or I2C to have more throughput.
But if I am not wrong, this is a transmit only interface.Whereas I need to transmit and receive on the same lines so that I may route the minium of lines between the two MCUs all the while conserving the tranmission speed.Also by shared memory, is it a question of sharing the MCU memory or an external component (ex: DPRAM)?
2017-07-31 10:57 AM
The FSMC/FMC is a bidirectional interface. Your problem is the devices don't share a common clock domain, and there isn't a DRQ/DACK method for the DMA. DCMI does provide for a method of high speed synchronous transfers (input), fill the data source, trigger a block transfer.
You'd likely need something to mitigate the ebb/flow of data, and stage the data between the two systems
Something like this could be exploited
http://www.averlogic.com/AL422B.asp
Might need to gang them up to get width and directionality required.
Ask yourself why you are even approaching the problem this way, wouldn't a multi-core device with SMP/NUMA memory architecture work better. Does all the data need to be transferred back and forth?
Shoveling data between two F7 would seem to eat a lot of processing bandwidth.
2017-07-31 10:59 AM
Whereas I need to transmit and receive on the same lines so that I may route the minium of lines between the two MCUs all the while conserving the tranmission speed.
In that case USB (High Speed) might be what you need. Another option is QUAD SPI.
2017-07-31 11:04 AM
Hello,
It is possible to have an SLAVE QUAD SPI on STM32F7 ? (Master I am pretty sure, because we can boot on an external SPI memory)
Thanks
2017-07-31 11:41 AM
I think one needs to turn the question on it's head and understand why the system needs to do this.
'It is not that the wind is blowing, it's what the wind is blowing!' ~ Ron White
2017-07-31 09:33 PM
did you look at the LVDS serializers/deserializers ? these run the data serially at 300MHz +
this will give you easily 30MHz 8 bit bus with 2/3 control lines over 4 wires for full duplex (maximum length 20cm)
LVDS chips work very well, easily, but they need some room on the PCB..
2017-08-01 01:53 AM
Saving the area of the PCB - use two SPI interfaces on each chip. The first in master mode, the second in submission mode.
You can not think about clock synchronization. The delay will be minimal. It is important to understand, the chip that transmits information - uses the memory of a neighboring chip to store data. For this reason, the start of information exchange should occur by mutual synchronization of readiness. For example, on receiving / transmitting a number that increases on the other side.The data exchange works through the ring buffer, the tail / head indicators are located in different parts of the access. The head pointer is read on its own memory, the tail pointer is located on the memory of a neighboring chip.To use sets of flags is a useless occupation, tested by our own experience. Once the ideal balance is found, a new need for a fresh resource appears. This race is infinite, it just spends your time.
Without saving the PCB, an external chip, for example CY7C028-15AXC.
Work with ring buffer on external memory, without restrictions, without synchronization, without prohibitions and distortions of information. Everything is possible, except for a beautiful printed circuit board. A multi-layer printed circuit board is required - to hide the hinges.Without saving a PCB, but with saving your own time.
Use an external FPGA chip to simulate two ported sram memory. This can be a simpler solution - than you think at first glance. After all, you have the opportunity to independently assign contact connections for the FPGA chip.For debugging communication technology - use usart. When the software model is stable and fast - you can go to a faster interface. I'm not kidding.
2017-08-01 02:41 AM
Thank you for the explanation Clive.
I am realy constrained by size and I wont be able to add other components to the board. And I dont want to complicate to much the board either. I will have to go on looking for other solutions even though the FSMC/DCMI interface was promising for throughput.