# If a datasheet doesn't state I2C address pins have pull-up/down resistors, does that mean I must connect them?

I've got a handful of DS75S+ temperature sensors. They're SO-8 and I'm going to solder them onto prototyping boards for use with a Raspberry Pi.

I want to set the addresses sequentially so I have the option of using as many as I like on one Pi (up to 8, but I only have 5). The datasheet says nothing about internal pull-up/down resistors on the address inputs, so does this mean they're floating? Tying them high is trivial, tying them low might be a little messy. But I don't want to set it floating only to find later that I've caused a problem (especially as, once tested, I'll probably pot them in epoxy).

The "Detailed pin description" says "7 A0 Address input pin." etc., there's no typical circuit and the block diagram has nothing of any help.

I've seen how do you typically tie the address pins and WP pin of I2C device? Do these lines need a pull-up/down resistor or just tied directly (closed) which has a helpful answer that unfortunately starts "Completely dependent on the specific IC you are using, and would be listed in the data sheet. " which isn't true here

• Please can you add this text to your question Chris, not in a comment. Much easier for readers to not have to piece the question together and you'll attract better answers. Thanks. – TonyM Jan 31 '18 at 14:30
• @TonyM I have, as you're the reader and better placed to judge the clarity. However I feel that the question is clearer to read as a standalone question without this – Chris H Jan 31 '18 at 14:38
• It looks better to me Chris, all in one place, thanks very much. – TonyM Jan 31 '18 at 14:50

I had a quick check of the datasheet (No I did not read the complete sheet but looked at every instance of the text 'address').
The data sheet does not mention anything like pull-ups/downs or defaults thus you must assume the worst case: you have to tie each pin either high or low.

• I also looked for every instance of "pull" and "A0". I think "assume the worst" is probably going to be right. – Chris H Jan 31 '18 at 14:39
• It was tricky to know which answer to accept, but this was both first and clear. BTW the datasheet has some obvious errors like The six LSbs of the pointer byte (see Figure 8) are always 0 and the two LSbs correspond to the desired register (the first LSBs should be MSBs from Fig 8) – Chris H Feb 1 '18 at 10:43

The datasheet says nothing about internal pull-up/down resistors on the address inputs, so does this mean they're floating?

As explained in other answers, if the datasheet doesn't mention any defaults, then you should specifically set the address inputs as you require them. Even if there were (weak) internal pull-ups / pull-downs, if they aren't documented in the datasheet, then you can't rely on them. In this case, the address pins appear to be normal CMOS inputs with all the pros and cons that implies.

Some I2C devices have much more complicated address inputs than the DS75. For example, some devices can allow address inputs to be floating (as in that case they are essentially analog inputs and have internal bias resistors) to set a different I2C address from when it is being pulled high or low. However that behaviour would definitely be explained in such a device's datasheet.

the block diagram has nothing of any help

One source of information for the DS75 which has not been mentioned in other answers, and gives you specific confirmation in your case, is the original Dallas Semiconductor datasheet, before Maxim took over the company. Not for the first time after a takeover, the change to a "new company" datasheet format actually lost some of the original information :-(

Look at the difference in the block diagrams shown in the new and old datasheet versions.

Here is figure 1 in the Maxim DS75 datasheet:

But figure 1 in the old Dallas Semiconductor version of the DS75 datasheet showed this - see the part which I've highlighted in red:

That confirms that the DS75 address pins should be connected to 0V or VDD to set the specific address you require.

Just for completeness, there is a tiny possibility of a new company making changes to a device after a takeover, such that old datasheets don't fully apply. Whilst that can happen (e.g. when a Fab belonging to the "new company", starts to be used to manufacture a device, which was previously manufactured at a different Fab belonging to the "old company") my experience is that big functional changes are avoided, if it would cause a lack of compatibility with the original devices. The lack of any documentation to the contrary in your case, means that I'm confident the part highlighted in red above still applies to Maxim-branded DS75 devices.

• The company history is another point on which the background knowledge of experts is worth having, because I didn't know to look for a previous manufacturer. I'm not surprised at the loss of information: There's probably some sort of lowest common denominator effect. – Chris H Jan 31 '18 at 16:39

There is a clue here: -

Input current each I/O pin 0.4 < VI/O< 0.9 VDD -10 +10 μA


This tells me that there will be either a leakage into or out of the pin of up to 10 uA and therefore if you leave the pin open it might go low or it might go high (when trying to leak out 10 uA).

• That's an interesting point and a good reason for asking the experts. While these clearly are inputs, for some reason I'd considered "I/O pins" to refer only to SDA and SCL (and possibly OS, which I'm not using). – Chris H Jan 31 '18 at 14:47
• It applies to all inputs. – Andy aka Jan 31 '18 at 15:00

For completeness, having inadvertently put it to the test with my own heavy-handedness when using the heat from my hand to test my code:

The address lines in this case are internally, and very weakly, pulled high as discovered by breaking the connection to ground and scanning the bus. A floating input picks up noise and causes the address to change, leading to comms errors.