Electronic – I2C camera not working 100% of the time

camerafpgapcb-designpower supplysoldering

This is my stereoscopic system:

enter image description here
enter image description here
enter image description here
enter image description here

I'm using a zedboard to pilot two i2c-camera MT9D111:
http://www.dragonwake.com/download/camera/MT9D111/mt9d111_rev5.pdf

Camera PCB Information:
https://drive.google.com/file/d/0B2_rhDNAxM4sMWM2MmQ5MWMtNTFjMS00Y2YzLTgzNGUtYjEwMWZlMDg1NjM2/view

I'm encountering problem using i2c-cadence driver on an ArchLinux Distro.

The two i2c cameras are always detected by i2cdetect tool, but if i try to write to them sometimes they work correctly, but other times i get:

Something went wrong with write()! Error: 11 - Resource temporarily unavailable (addr:93)

or worst:

Something went wrong with write()! Error: 6 - No such device or address (addr:93)

I do not know why this error are popping out totally randomly, can someone explain this weird behaviour? Are the wire to long for I2C protocol (400KHz)? Is something related to the power supply?

I'm going crazy about this issue, any help will be useful.

Best Answer

Despite the fact that Vivado assure a PULL UP on the selected pins it is a WEAK PULL UP, adding an external PULL UP resistor has solved the problem.