0
\$\begingroup\$

I have an issue with an NXP SE95 temperature probe that has been working just fine up until now on other systems. At some point, either on boot or soon after, the probe will have some sort of meltdown and hold SDA low until power is cycled. I have a PIC microcontroller on the same bus and it is ok. I'm running at 3.3V (probe's voltage range is 2.8 - 5.5V)

I have two of them and both behave in the same way. They are connected to an OMAP4430 (Gumstix Duovero) through an isolating level shifter of this design:

enter image description here

Edit: This turned out to be a red herring and the lockup was unrelated to the level shifter.

I believe the 4.7k pull up is adequate here - it gives a rise time in the 700ns region. Not particularly fast but within spec. The Gumstix has pullups on about 1k0 so the 10ks are superfluous really.

I've used the same probe on a different ARM (at 3.3V, no level shifter) and from a PIC without issue. Is there something wrong with using a level shifter like this? I cannot see any reason why the probe should lock up. It does this without its own address ever being transmitted.

\$\endgroup\$
  • \$\begingroup\$ So, what is the difference between this and the "other" systems. If you can answer this, the real answer may pop-out at you. How are you controlling the address to the NXP SE95? \$\endgroup\$ – Andy aka Apr 11 '14 at 18:53
  • \$\begingroup\$ I'm confused. You say the problem is with the SE95, but your question seems to be totally focused on the level shifter. Which is it? \$\endgroup\$ – Dave Tweed Apr 11 '14 at 19:25
  • \$\begingroup\$ 1.8V is low even for a logic-level FET. Which FETs are you using in your level-shifting circuit? \$\endgroup\$ – Adam Lawrence Apr 11 '14 at 19:55
  • \$\begingroup\$ Try to toggle SCL at least 9 times and see if the sensor releases SDA, then send a stop bit and you should be good to go. Some I2C devices are quite a pain to power up properly. \$\endgroup\$ – Vladimir Cravero Apr 11 '14 at 20:29
  • \$\begingroup\$ The system is a Linux one so control is via /dev/i2c-2. I was including everything that was different about this one in case there was a "known issue" - maybe level shifters need smaller pullups or something. I use BSS138 FETs and they seem to be ok even though 1.8V is really low. I've used TXS0108 at this level before but I wanted the voltage isolation too. \$\endgroup\$ – carveone Apr 11 '14 at 22:51
1
\$\begingroup\$

For completeness I'll answer my own question.

This appears to be a chip problem. My revision of the datasheet does not mention lock up issues but the versions of the datasheet on the NXP website do. This is a lesson to get the datasheet from the manufacturer, not from a link on Farnell or Radionics.

Section 14. Application information now reads:

The SE95 is sensitive to power supplies with ramp-up time <2 ms and could NACK or hang the I2C-bus.

If the power supply ramp-up time is <2 ms, use an RC network with R = 300 ohms C = 10 uF, as shown in Figure 18, to add about 3 ms to the ramp-up time.

I switch the power to the chip via a MOSFET after making sure the 3.3V is stable. The chip is decoupled with 100nF and is often the only one on that line so the rise time is very fast.

There you go. Not the first time I've seen stackexchange posts which turned out to be chip errata. Microcontrollers are especially ones to check very closely.

\$\endgroup\$

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.