Interfacing FLIR Lepton I2C with Intel Edison 1V8 Logic Level

1,041 views
Skip to first unread message

McRender

unread,
Feb 22, 2015, 12:08:05 PM2/22/15
to flir-...@googlegroups.com

Has anyone succeeded accessing the FLIR Lepton over I2C (SCL/SDA) through a logic level translation? I am not able to get an ACK over the I2C bus from my Lepton when using the Intel Edison as a host (master). My setup is as follows:

  • Intel Eidson on mini breakout board
  • Using I2C1_SDA (GP20) & I2C1_SCL (GP19)
  • Pullmode of both I2C pins are disabled by SoC
  • Using of an external 5K Ohm pullup resistor on the lower level logic (Edison 1V8)
  • Using of an external 5K Ohm pullup resistor on the higher level logic (FLIR Lepton 3V3 input voltage)
  • Using of an Adafruit 4-C BI-Directional level shifter (http://www.adafruit.com/product/757)
  • Setting the I2C speed to 100 KHz (STD)

  • Raspberry PI B+
  • Using I2C1_SDA (GP8) & I2C1_SCL (GP9)
  • Using of the internal 4.7K Ohm pullup resistors
  • Using the default I2C speed of 100 KHz

As far as I am using the Raspberry PI setup, everything works like a charm. I have enabled I2C and used the default bus speed of 100 KHz. By executing “i2cdetect –y –r 1” and measuring the signals with my RIGOL DS1052E on the SCL pin yields to the following image:



One can clearly see sharp edges and values that fit to the I2C standard. As a return value of i2cdetect the FLIR Lepton get listed with the address 0x2A. Further I can make use of the Lepton SDK to read out status registers and perform a flat field correction (FFT) without any errors.

When I am using the Intel Edison the situation changes. For debugging purpose I’ve measured all the signals on the I2C bus and tried to stepwise include parts of the electronic circuit. As a starting point I’ve measured the signal on the SCL pin without the connection to the level shifter:


Again one can see not so sharp edges but values that fit to the I2C standard too. The edges and the signal LOW/HIGH value depends on the used pullup resistor. I’ve been playing with different values here and ended up by using a 5K Ohm resistor.

As a next step I have included the level shifter and connected the lower side with the 1V8 pin and the higher side with the 3V3 pin of the Edison. SCL on the higher side is also pulled up with a 5K Ohm resistor. Measuring this time on the higher logic level side of the SCL line yields to the signal in the next image:


So far so good. When I now include the FLIR Lepton and measuring the signal on the 3V3 logic level side I’ve got the following strange image:



It seems that the signal can’t reach anymore the voltage of a logic LOW. Another observation is the measured current (5.3mA) that flows through the SCL pin of the LEPTIN. Is this supposed to happen? It looks like the input has an internal resistor of about 528 Ohms (2.8V/0.0053A). I am also a bit confused about the 2V8 IO voltage of the Lepton and the breakout board from Pure Engineering. Shouldn’t there be a connector that let me connect the 2V8 IO voltage as the higher voltage of the level shifter? Could this be the problem with the shifting?

Please let me know if you have or have not successfully connected your Lepton to another logic level. I would also appreciate if you have any hints on how I could solve my issue here.

Thank you very much in advance…


McRender

unread,
Feb 25, 2015, 6:04:42 AM2/25/15
to flir-...@googlegroups.com
Quick update from my side. The images of the Edison setup from the previouse post where taken with a I2C speed of 400 KHz (my fault :-)), but changing the speed won't result in a diffrent signal.

I have followed the advise from https://groups.google.com/forum/#!topic/flir-lepton/jp8Ewr6jIR4 and tried to just add pullup resistors to my 1V8 logic without using a level translator. On the SCL pin of the Lepton I am measuring a voltage of 2V8 without the pullup connected. If I am adding a 10K Ohm pullup resistor the voltage goes down to 2V4 and the communication over I2C is still not working.

The Edison with the Adafruit level shifter (no addition external pullups) works like a charm with an ADXL345 sensor.


Edison SCL pin 1V8 lower logic side

Edison SCL pin 3V3 higher logic side



Cyrill

unread,
Feb 26, 2015, 2:36:18 PM2/26/15
to flir-...@googlegroups.com
I've experienced exactly the same behavior. Measuring 5.3mA on SCL and SDA and observing similar signals as posted by you. I just can't communicate to the lepton using i2c on the Edison (also for me: using the PI works like a charm).
Btw: I am using the Intel Edison Arduino breakout board with additional external pullups as stated in the lepton data brief (page 6 / note 1).

Seems like a systematic issue!? Or what do we overlook?

McRender

unread,
Mar 16, 2015, 3:07:59 PM3/16/15
to flir-...@googlegroups.com
Could pleas anyone else check/confirm this current of 5.3mA?

Isaac Clayton

unread,
Sep 23, 2015, 4:58:19 PM9/23/15
to Flir Lepton
Sorry for reviving this, but....5.3mA confirmed ;)

McRender

unread,
Oct 5, 2015, 10:41:06 AM10/5/15
to Flir Lepton
Thanks for the update... Did you had any luck getting the Lepton speak to your Edison over I2C?

Isaac Clayton

unread,
Oct 5, 2015, 1:03:12 PM10/5/15
to Flir Lepton

I've been hacking at it for days now, and no luck so far. I am trying out some one of these level shifters and as the image shows, the signal is not going low (enough)...

Isaac Clayton

unread,
Oct 15, 2015, 9:11:19 PM10/15/15
to Flir Lepton
An update: check out the Intel Edison/Raspberry Pi block from Sparkfun. It handles the level shifting of I2C lines correctly. I am still having difficulty running commands, but I suspect this is in the software somewhere.

Austin McElroy

unread,
Apr 29, 2016, 11:39:58 PM4/29/16
to Flir Lepton
Hey Isaac,

Any luck getting the I2C working? I added a levelshifter to my R Pi 3 to go from 3.3V to 2.5V, as it looks like the Lepton Needs 2.5V to 3.1V on the two wire bus. However, the I2C seems really flaky. I dunno if it is the PI4J interface, but it seems to work great on the SPI side.

Thanks,
Austin
Reply all
Reply to author
Forward
0 new messages