I try to detect a rtc device on an i2c bus, with the i2cdetect utility from the i2ctools package. As I cannot see anything when scanning the i2c bus, I use an oscilloscope and on the 9th SCL's rising edge (ACK bit), I get a half amplitude on the SDA signal.
Further details:
What voltage are your measuring normally, and what in the unusual case?
normal voltage: 0V for a 0 logical, 3.3V for a 1 logical. In the unusual case I measure 1.4V (almost the half voltage of an 1 logical in the normal case)
Do you have a pullup resistor and open collector drivers the way you should?
Yes, the SDA and SCL lines are pulled up with a 4k7 resistor and the rtc device is configured as open drain (CMOS).
Do both the master and slave operate at the same voltage?
Yes, at 3.3V
@Martin Thompson: Thanks. So, here is the schematic of my i2c bus (actually, only a rtc device is connected on).
3.3V 3.3V 3.3V 3.3V
____ ____ ____ ____
| | | |
| +--+ +--+ |
| 4k7 | | 4k7 | | |
+-----------------+ | | | | +--------------+
| | +--+ +--+ | |
| FPGA Cyclone 4 | | | | Real time |
| (Altera) | | | | clock |
| GPIO | ---SDA----------------+-------------------|-------------| ST m41t83 |
| | | | |
| | ---SCL------------------------------------+-------------| |
| | | |
| | | |
+-----------------+ +--------------+
| |
| |
_____ ______
0V 0V
and this is the screenshot of the oscilloscope, which picks up the SDA and SCL signals:
SDA
________ ______________ _________________________________ __ ___________
| | | | | | | | |
| | | | | | | | |
| | | | | _____| | | |
| | | | | | | | |
|______| |_______| |________________________________| |_____| |_______________
SCL
____________ ___ ___ ___ ___ ___ ___ ___ ___ ___ _______________________________
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
|___| |___| |___| |___| |_______________________________| |___| |___| |___| |___| |___|
These signals are obtained when I send a request to my rtc device at address 0x68 with the i2cdetect utility (i2cdetect 0 0x68 0x68) from a linux shell.
By the way, excuse me for the poor ascii design, but as I am new on the forum I cannot post images. Hope it will be understandable ;-)
Clarification about the "screenshot": the SCL's and SDA's amplitude is about 3.5V and on the unusual case (on the 9th scl's rising edge) it is 1.4V