Dear Stephen Just 1 minute before reading your message I tryed increasing the pullup on SDA from 2.2k to 5.6K and the communication started working good!!! Thank you .. Thank you .. Thank you Gabriele ☺
Da: Stephen Berry [mailto:[EMAIL PROTECTED] Inviato: venerdì 3 ottobre 2008 12.46 A: Gabriele Filosofi Cc: [email protected] Oggetto: Re: I: How to interface to OV7670 The pullup on SDA is probably too strong. A lot of the omnivision sensors don't like the traditional pullup values (4.7k) and require you to use something more like 10K. The 'xxxx' is where your slave should ACK the address sequence - and there really shouldn't be a conflict here, unless you have more than one sensor... Steve Gabriele Filosofi wrote: Hi. My CCDC camera chip OV7670 is connected onto the I2C bus by mean a voltage translator PCA9306, because DM644x has 1.8V level I/O, while OV7670 uses 2.8V. Following Darius’s suggestions I’ve tryed to read OV7670’s internal registers using this function: static u8 reg_read(struct i2c_client *client, const u8 reg) { u8 i2c_buf[2]; i2c_buf[0] = reg; i2c_master_send(client, i2c_buf, 1); i2c_master_recv(client, i2c_buf, 1); return i2c_buf[0]; } Using the following convention: "___" for 0V level "xxx" for 1V level "---" for 2.8V level on the oscilloscope I always see: SCL ---__--__--__--__--__--__--__--__--__--____________ ... ___________------- SDA --_____----________________----____xxxx------------ ... ----------__------ i.e. START 0 1 0 0 0 0 1 W X ... STOP In other words, the i2c master (DM644x) puts only the I2C address (0x21) onto the bus, and nothing more! I suppose "xxx" it is due to a conflict condition on the SDA line, and this conflict condition prevents the first i2c_master_send() call to be completed. Otherwise, could the device be damaged? Any comment will be appreciated. Gabriele _____________________________________________ Da: Gabriele Filosofi Inviato: mercoledì 1 ottobre 2008 12.11 A: '[email protected]<mailto:[email protected]>' Oggetto: How to interface to OV7670 Hi, I need to write a loadable module to drive a CCDC device OMNIVISION OV7670 on the I2C bus. I found a guy who came across a problem similar to mine: http://article.gmane.org/gmane.comp.video.video4linux/38082 Also, he told to me that there is no support for multi-message for this device, as confirmed by Omnivision technical guy, and that I must use 8bit I2C commands to communicate with OV7670. However, there are a lot of functions (i2c_transfer, i2c_master_send/recv, i2c_smbus_write/read_byte) and I don’t know which I should use. In brief, I’m wondering if anybody knows how to access this device (or a similar one) onto the I2C bus. A code implementation example it would be greatly appreciated. Thanks in advance, Gabriele ________________________________ _______________________________________________ Davinci-linux-open-source mailing list [email protected]<mailto:[email protected]> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
