Skip to first unread message

Davide Aguiari

unread,
Dec 16, 2017, 12:23:50 AM12/16/17
to BeagleBoard
I'm dealing with a thermal camera FLIR Lepton3.
I made it work with SPI0 but I'm facing some problems with I2C port.
I plugged my breakout board SDA/SCL to pins P9.20 and P9.19.

In the code there is LEP_OpenPort( mCciPort, LEP_CCI_TWI, 400, &mCciConnPort ) and CCI supposed to be I2C.
Actually the camera is detected by Linux because:

debian@beaglebone:~/Lepton3_BBB/build/opencv_demo$ i2cdetect -r 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- 2a -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

And 0x2a is the Lepton I2C, but LEP_OpenPort() returns -108 (not OK).
I already configured pins:

> config-pin P9.19 i2c
> config-pin P9.20 i2c

When I run the code my dmesg is full of:

[ 3118.287621] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3119.295640] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3120.303726] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3121.311678] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3122.319767] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3123.327715] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3124.335735] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3125.343752] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3126.351771] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3127.359789] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3128.367807] omap_i2c 4802a000.i2c: timeout waiting for bus ready
[ 3129.375826] omap_i2c 4802a000.i2c: timeout waiting for bus ready

Even if that's bus 1 but in the code I'm calling bus 2.

In boot dmesg there is:

[    1.617253] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
[    1.618196] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
[    1.619511] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz

Where could be the problem? Maybe something related to pullup resistors? 

Thank you :)

Davide Aguiari

unread,
Dec 16, 2017, 3:34:36 AM12/16/17
to BeagleBoard
Actually seems that the mCciPort (first parameter in LEP_OpenPort) doesn't stand for the I2C bus but for a user-defined id number for the camera.
So actually the problem moves to "How do tell the SDK to read from I2C-2 instead of I2C-1"?
The SDK uses libmpsse, I think.


In order to test the problem, I tested a BMP sensor that uses Adafruit_GPIO.I2C python library: it creates a Device instance where I can set Adafruit_PureIO.smbus.SMBus(busnum).
In fact if I don't set busnum=2, it uses I2C-1 and dmesg reports "timeout waiting for bus ready". If I set busnum=2 I can read values from the sensor.

Any idea?

Davide Aguiari

unread,
Dec 18, 2017, 2:46:35 AM12/18/17
to BeagleBoard
I solved this problem by editing Lepton3_BBB/grabber_lib/Lepton_SDK/src/bbb_I2C.c (or rasp_I2C.c) where it uses open("/dev/i2c-2 .... ) instead of libmpsse.

jesse...@capecodmakers.org

unread,
Apr 14, 2018, 10:31:52 PM4/14/18
to BeagleBoard
Did you find the config-pin statements in the uEnv.txt to be necessary, or just changing the I2C bus in the bbb_I2C.c file?

Davide Aguiari

unread,
Apr 16, 2018, 5:47:22 AM4/16/18
to BeagleBoard
You need to config-pin your I2C and SPI pins first, then set you i2c-X device in bbb_I2C.c so you can read data.
No need to edit uEnv.txt
Reply all
Reply to author
Forward
0 new messages