Interfacing an DVP image sensor with 1.8V to an Atmel ARM MCU with 3.3V - Page 1
Forum section: electronics / beginners

author: pschuster
author_rank: Contributor
timestamp: January 22, 2015, 09:03:57 am
content: Hi all,I am working on a project that uses the Atmel SAMA5D31 MCU implemented on a SoM (Acmesystems Acqua A5). I want to interface an Omnivision OV5640 camera sensor with this MCU using Atmels Image Sensor Interface running on Embedded Linux 3.10 Kernel and a Buildroot RootFS.The SAMA5D31 has two power rails with 1.8V and 3.3V but as I did not implement the Atmel MCU myself (just using the SoM with a few headers) I cannot change that (as far as I know or is it possible in software?).The OV5640 is officially supported by Atmel on Embedded Linux (http://www.at91.com/linux4sam/bin/view/Linux4SAM/UsingIsi). I want to use this small camera device:http://www.kailaptech.com/Product.aspx?id=828&l1=712.Reading the data sheets I noticed that OV5640 runs a Logic Level of 1.8V and as said before I cannot change the logic level of the Atmel MCU (although it should be possible for two separate power rails) which is currently 3.3V.The typical logic high of OV5640s digital output (standard parallel interface with 8-10 bits) is minimum 1.62V (no typical or maximum specified in the data sheet, but i should not exceed 1.8V, right?)In total I have- 8-10 digital output lines (I want to use 8-bit but I am unsure at the moment if that's possible, perhaps I have to interface to all 10 lines)- 2 lines for SCCB (Omnivisions I2C Version)- 2 lines for states (Reset and Power Down)- 2 lines for clock (one input, one output)- 2 lines for sync (frame and line)In total that means I have to logic level translate 16-18 lines. What is the best way to do it. I have been surfing around all day reading data sheets, blog posts and application notes about Logic Level Translators.OV5640 can run VGA at 90 FPS and Pixel clock (digital output port) of 48 MHz. I plan on using a 16 Bit color format. So, at VGA digital output line has to send (640*480*2)/1024/1024=0,58 Mega Bits per Second, with 90 FPS that's a whopping 52,5 MBPS for each line.So Speed is very important here. I have seen bidirectional logic level translators (http://www.analog.com/en/interface-isolation/level-translators/adg3308/products/product.html) with that serve 60 MBPS according to the data sheet. But does it mean 60 MBPS for all 10 Bits together or each line?Is a logic level translator the right choice? PCDuino3 features a camera interface and there are PCDuino 3 camera sensors with the same sensor I want to use. Looking at the schematics of PCDuino3 (http://learn.linksprite.com/wp-content/uploads/2014/04/pcDuino-3-Circuit-Diagram.pdf) does not show any logic level translator. They just added a few series resistors (I cannot see a voltage divider that would make sense to me) between the digital output lines (22 Ohm). Did I miss something (perhaps the MCU-GPIOS on the PCDuino runs with 1.8V?).What I want to achieve is:I want my device to be able to stream live video feed to the web. I don't need high quality full hd full color quality. It's more an observation thing.Thanks very much for your help. I bought a lot of stuff lately to prototype my device, I don't want to buy another few logic level translators and DIP-Breakout-boards to just find out that a series resistor is enough. So I thought I give EEVBlog-Forum a try ;-).Phillip

author: Paul Price
author_rank: Super Contributor
timestamp: January 22, 2015, 10:38:06 pm
content: This will do the job.