Thanks for your answer. Ok, so you say there only will be a delay due to the independent clocks on both camera modules. How much can this be? Given the cameras clock at about 25 MHz I guess this may be in a range of microseconds at worst?
Also, I am interested to know how the whole image capture pipeline works in detail (both software and hardware). In the stereoscopic camera capture that you implemented in C (this thread
), are the cameras actually triggered sequentially in the code (first line = first camera, second line = second camera) or is the chipset able to trigger them both by a single line of C code? And are the cameras actually read sequentially by the chipset or are there two HW imaging pipelines that will do this simultaneously? I am not technically savvy enough to be able to read this out from some datasheets...
The 25MHz oscillator for the sensor is mounted on the camera module board, not on the Pi. Therefore if you have two camera modules, you have two oscillators. With the best will in the world, they will not stay perfectly synchronised. The sensors solely use that clock (via PLLs and register settings) to determine the rate at which they produce pixel data, so the pixel rate will drift too.
Even if one is at 25.00000MHz, and the other at 25.0000000001MHz, then you still have an issue given long enough. If you want absolute lock, then you have to drive both sensors from the same clock.
The I2C commands are sent to the sensors via the same peripheral (using pin muxing to select which sensor to talk to as they share the same I2C address), so yes they are started one after the other. The delay is probably in the order of 1ms though, so not massive.
The data from the sensor is received and written into memory via two independent peripherals.
Once there, the software instructs the ISP hardware block to process the data and combine it into one output image.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
Please don't send PMs asking for support - use the forum.
I'm not interested in doing contracts for bespoke functionality - please don't ask.