If I have more than one device on an I2C bus, does each one need it's own pull-up resistors on SDA and SCL? I assume the answer is no since from my understanding the pull ups just keep the lines from floating since the MCU can only pull them low, but I'd like to make sure. Also, as a side question, what is a good value for the pull ups? IIRC it said to use 4k7 somewhere. I'm running at 3.3v if it makes a difference.
Just the 2 per segment. A pretty wide variety of values will work I use 10k just because I normally have them handy most of the time 4k7's are pretty popular the answer depends on the capacitance of the buss which is pretty much determined by the length and frequency. The longer the wires and/or faster the clock rate the lower the resister value should be.
Remember i2c is an actually a fairly robust protocol it can deal with a lot of nastiness and still get the job done.
If you were to look at the signals with an oscilloscope, you would notice a very big difference betweeen 4.7k pullups and 10K pullups.
The difference in rise times from low up to high is quite noticeable.
Ok, I'll use 4k7 then since I'm going to use 400kHz.
At 3V3 you are better off using a resistor value of 2K7 to 1K8 Just one pull up per I2C line not one per device.
Ok, 2K2 it is then.