2
\$\begingroup\$

I have an I2C circuit with a 4.7 kohm pull-up resistor for each line. I think it might be a too strong (too small in value) resistor and the data isn't read properly. The processor I'm using has the option to set a pull up/down on the pins so I want to try to pull down the lines. What will the pull value be? Is it the absolute value of the difference? Will it short out?

enter image description here

enter image description here

I2C clock, every square up is 3v

I2C data, every square up is 3v

That is how the clock looks up close

The bus on the circuit

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Why do you think it might be too strong - have you calculated a resistor current that exceeds a connected device's sink capability (unlikely) or made some oscilloscope measurements that somehow lead you to this conclusion? Connecting a pulldown forms a voltage divider with your bus in the middle, almost certainly not what you want. \$\endgroup\$
    – TypeIA
    Jun 23 at 15:07
  • \$\begingroup\$ I looked at the scope and saw the signal reaches 3v3 but not fully reaching GND(reaching about 1v1) \$\endgroup\$
    – Eyal Porat
    Jun 23 at 15:14
  • 2
    \$\begingroup\$ Please edit your question to include a picture of the scope trace. Your logical process seems reasonable, but based on experience, 4.7 k would not be too strong, so I suspect there is something else going on. I encourage you to try other values and see what happens, though. That could lead us to guess what is really going on. \$\endgroup\$
    – mkeith
    Jun 23 at 18:15

1 Answer 1

5
\$\begingroup\$

The pull down value depends on your MCU and it reads in the data sheet. Open the data sheet and find the value. It might be tens of kilo-ohms.

However it will likely change nothing. Pulling down internally is weak compared to external reaistor and it will only make the idle bus voltage lower. The impedance change is so low will likely make no difference.

4k7 is not too strong for standard I2C compliant devices. It might even be too weak in some cases. Likely the problem is elsewhere, maybe in the software.

Based on your added info that low voltage only goes down to one volt indicates something is driving the bus with push pull output while all devices must be open drain. Likely MCU software problem configuring the IO pins incorrectly.

\$\endgroup\$
16
  • \$\begingroup\$ Thanks for the response! The datasheet says it is 40k so that's pretty weak. When I look at the signal on the scope it reaches 3v3 on top but doesn't get to GND(gets to about 1v). \$\endgroup\$
    – Eyal Porat
    Jun 23 at 15:11
  • 3
    \$\begingroup\$ @EyalPorat, that sounds like some other device is actively driving the line high when it ought to be in high-Z state. Some programmable device (microcontroller or FPGA for example) is the most likely culprit. An additional 40k pull-down will not fix this. The more of your schematic and BOM that you can share, the better chance we have to be able to help you. \$\endgroup\$
    – The Photon
    Jun 23 at 15:52
  • \$\begingroup\$ added the sch, Thanks! \$\endgroup\$
    – Eyal Porat
    Jun 23 at 16:09
  • \$\begingroup\$ Also, what is a culprit? \$\endgroup\$
    – Eyal Porat
    Jun 23 at 16:10
  • \$\begingroup\$ culprit /ˈkʌlprɪt/ noun 1. a person who is responsible for a crime or other misdeed. 2. the cause of a problem or defect. \$\endgroup\$
    – Transistor
    Jun 23 at 17:35

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.