Could the arduino Due take and send image data from 5MP camera module to PC in the following condition?

  • frame rate = 1fps
  • resolution = 2592 x 1944
  • format = 10 bit bayer raw RGB
  • interface : parallel ports (DVP) between camera and Due spi between Due and PC(or SD card)
  • FIFO(frame buffer): would not be used
  • SDRAM: would not be used (But if it is needed, I would SDRAM via spi. Also I can use a frame buffer like AL422B. But if it is possible I would avoid using them.)

The camera would send 50Mbit image data per second and they will be transferred via 8 parallel lines(D0~D7) to the Due. And then they would go to PC directly or after passing SDRAM. But how can one evaluate if the 84Mhz is enough to do this job by calculation?

Arduino Due specs https://www.arduino.cc/en/Main/arduinoBoardDue

camera module example (OV5642) http://www.uctronics.com/cmos-camera-adapter-board-for-omnivision-image-sensor-p-248l.html But this is not what I want to use. In my project I need to build a camera module and it would not include FIFO unless it's highly recommended.

1 Answer 1


So a quick feasability assessment:

2592 W * 1944 H * 10 bit = 50388480 bits

50388480 bits / 8 bit data bus = 6298560 packets

84000000 clocks per second / 6298560 packets = ~13 clock cycles per packet

I think that by itself, from a purely data perspective, without looking too deep into datasheets, you could feasibly read data from a port and push it out the USB port, and clock the data in less than 13 cycles. But what this means is you'd have to get into the nitty gritty of the processor and figure out how to do that as low level as possible because DigitalRead() and Serial.print() aren't going to cut it as they won't be fast enough.

The real challenge is that the above totally depends on being able to clock the data from the sensor yourself, which if I recall correctly, these sensors can actually be pretty picky about their clock.

I would highly recommend a FIFO, that way the sensor data can be clocked to it as fast as it wants to be clocked, and then you could read from the FIFO at your own pace as it will clock data out at exactly the rate you want it. Also 1 FPS is a pretty lofty goal if you are only a beginner. Like I said, it is probably possible, but it requires a lot of optimizations and planning that are not very straightforward to implement, especially if you are just starting out.

  • Thank you for the reply. But I wonder if it is possible for the ARM to 'save' data on sdram or sd card via spin. It seems there are more factors I should care. Like interrupts in cpu causing data loss.
    – SD11
    Aug 6, 2015 at 7:31
  • There is no such thing as SPI connected SDRAM. You could write the data to an SD card, but the data throughput on that is going to be much slower than what you'll be reading the data at. In that case I would once again recommend using a FIFO, that way you can read from it at the same speed you are writing to the card.
    – Jake C
    Aug 7, 2015 at 7:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.