Greetings everybody.
According to the Sensirion SCD30 datasheet, the I2C input high level voltage (Vih) has a min-max range of 1.75-3.0 volt.
Is it safe to directly connect the I2C lines to the I2C bus of a 3.3 volt device, e.g. an Arduino Nano 33 IoT ?
If yes, should I add external pull-up resistors even when the SCD30 internal pull-ups are enabled ? According to an earlier post by EmielcpNL on June 27, 2019 “SCD30 in combination with Teensy 3.2 problems”, there were problems when using I2C with the Teensy 3.2 .
Thanks,
Guy
If the specified maximum voltage is 3 volts, I wouldn’t recommend using 3.3 volts. It may work for a bit and fail later on.
If you’re able to disable your boards internal pullups, do that and then use an external 3 volt source along with external pullups on the bus. You might even use a 2.9 volt source rather than 3 volts just to be safe.
You could use a resistor [voltage divider to derive your 2.9/3.0 volt source if you wanted too, the I2C bus isn’t going to consume much current.](https://learn.sparkfun.com/tutorials/voltage-dividers)
Hello TS-Chris,
Thank you very much for your quick reply. Then it seems to me that the most robust solution is to level shift the 3.3V Arduino Nano 33 IoT signals to something like 2.9V . I can use a Sparkfun logic level shifter for that purpose, isn’t it ?
But your advice seems to put into question the example of the circuit on the Sparkfun SCD30 library page on github : https://github.com/sparkfun/SparkFun_SC … no_Library , where a Sparkfun Blackboard is connected directly to a SCD30 through a Qwiic connection. The Qwiic is 3.3V isn’t it ?
Thank you,
Guy