The I2C protocol uses open collector outputs. The ATMega328 does not
toggle quoted messageShow quoted text
pull them up to any voltage; it only pulls them down to ground. The
high voltage is determined by the external pullup resistors, which in
this case is the supply voltage of the Si5351A. It's possible to use
the internal pullups in the 328 for I2C rather than external resistors
(though the external resistors are the recommended practice), but you
don't do that in an application where a voltage other than the supply
voltage of the 328 will be used on the I2C bus. So yes, quite safe.
No compliant I2C device will ever pull up its outputs. It is safe to
connect other devices to the bus so long as they all pull the I2C bus
up to the same voltage, which (as is the case with the ATMega328 on
the QCX) may not match the supply voltage of the device.
The only other catch is that if the voltage levels of the I2C bus is
too low, things running at a higher supply voltage might not recognize
the signals. Mixing 1.8V and 5V devices on an I2C bus would not work
because the 1.8V signals on the I2C bus would not be at a high enough
voltage to be recognized by 5V logic. (The required voltage is around
60% to 70% of Vdd on most CMOS devices.) However, some 1.8V devices
will tolerate higher voltages on some I/O pins, so it might be
possible to use one with the I2C bus pulled up to 3.3V or 5V.
On Tue, Dec 4, 2018 at 3:31 PM Richard G4TGJ <email@example.com> wrote:
I've started experimenting with the si5351a for my own projects. I have a few questions and observations for Hans, but I think they will be of interest to anyone else using the chip.
1. I discovered my chip's I2C address is 0x62 and not 0x60. I realised I have bought the SI5351A-B04486-GT instead of the vanilla SI5351A-B-GT. I chose this one as Farnell said it was the newer version and they have far more of this one in stock so I just assumed it was the latest version. Next time I will make sure I fully understand the manufacturer's part number. It's not a big deal as it is for my own project so I can use any I2C address I want. At power up it outputs 49.152MHz, 24MHz and 45.1584Mhz. I am curious as to what this device is for - it is very widely available.
2. Did you have the 27MHz crystals specially made? The only off-the-shelf crystals I can find that meet the spec are surface mount. This was almost as much fun to solder as the MSOP, especially since the Farnell datasheet has the crystal and ground pins swapped! It took me a while to work out why it wasn't oscillating.
3. In your notes you say that it is necessary to use an integer divider to get low jitter. According to AN619 you have to set the MSx_INT bit to put the multisynth into integer mode but that fractional mode is required if you want to specify a delay offset. Your example code sets this bit for integer mode but I have still managed to get quadrature output. Another data sheet error?
4. In the QCX the I2C SDA and SCL lines are connected directly between the si5351a and the ATMega even though they run at different voltages. Is this safe? The pull-up resistor is to 3V3 so I guess this means that the ATMega doesn't ever pull the line high, but just goes high-impedance. Presumably it wouldn't be safe to connect other devices to the bus in case they do actively pull the lines high. I am using two 2N7000 FETs as level shifters.
Thanks again Hans for all your projects. I have a 30m QCX which I have enjoyed using. Your personal website is also an inspiration.