1

I want to connect MCP4725 breakout to Rpi. The datasheet of MCP4725 says that "the SDA and SCL pins are open drain N channel drivers. Therefore they need pull-up resistors from the Vdd line." The raspberry pi pins 3,5 have their own pull-ups so i must connect them directly to the SDA and SCL pins of the MCP4725 (by cutting the traces on the breakout to disconnect the pull-ups on the breakout). But these means that I have to power the MCP4725 using the internal 3.3V supply of raspberry pi. I don't like doing this since I would like to connect many 3.3V devices to Rpi, and I don't want to load the pi's internal power supply. I want to connect these devices using external 3.3 volt power supply. I don't know how to keep this external power supply from interfering with the pi's internal one. Please advice.

1
  • Your Raspberry Pi already has pull-up resistors on pin#3 (GPIO2/SDA) & pin#5(GPIO3/SCL). Snip off any resistors on your MCP4725 breakout board. You have no other option because resistors in parallel have reduced resistance and that could destroy your RPI. – Dougie Jun 21 at 10:28
2

I don't see how disabling pullups would cause any problems.

In general you can access an I²C device powered by 5V provided there are no pullup to 5V.

How much current do these unnamed devices use?

I doubt it would exceed the ~800mA the Pi can safely supply.

0

Answer

I would suggest the following workaround:

  1. Power MCP4715 and other I2C devices with an external 3V3 power supply.

  2. It is true that MCP4725 SDA and SCL pins need pull up resistors, BUT since RPI SDA and SCL pins already have on board pull ups (strong 1k8 pullups), then MCP4725 now shares Rpi's built in pullups.

    In other words, there is no need for any redundant pullups at the MCP4725 side.

  3. The external 3V3 PSU would NOT interfere with Rpi's 3V3 power rail.

  4. You might like to draw a schematic to make 100% sure you do understand my suggestion.

  5. One more thing - your MCP4725 breaqkout/module/board usually already has on board SMD pullups (usually 4k7, not so usually 10k), then it is a good idea to remove them, so not to load the I2C bus with too much impedance/capacitance and exceed the standard I2C bus's 400pF limit, causing instability. (6) Yes, ALL on bus's modules pullbups can be removed.


References

(1) 12-Bit Digital-to-Analog Converter with EEPROM Memory in SOT-23-6 - MicroChip

(2) How can Rpi3/4 interface multiple ADS1015/ADS1115 ADCs? - Asked 2019apr12, Viewed 544 times

(3) Change I2C address for ADS1015 (with example on how to remove I2C devices's SMD on board pull up resistor - RpiSE 2011jun10

(4) Rpi3 Interfacing MCP4725 12-bit DAC Problem - Asked 2018apr28, Viewed 836 times


Appendices

Appendix A - How to remove the on board pullups of an I2C device breakout module.

removing on board pullup


Appendix B - MCP4725 Wiring Example

mcp4725-1


mcp4725-2


Appendix C - MCP4725 Demo Program

MCP4725 Demo Program V0.1


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.