Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Community Manager
1,292 Views

I2C sensor problem.. Please give me any help.

Jump to solution

Hi. I am using Intel Edison and arduino expansion board and sparkfun's I2C breakout block(https://learn.sparkfun.com/tutorials/sparkfun-blocks-for-intel-edison---i2c-breakout-block?_ga=1.111... SparkFun Blocks for Intel® Edison - I2C Breakout Block - learn.sparkfun.com) and sparkfun's MPL3115A2(https://www.sparkfun.com/products/11084 SparkFun Altitude/Pressure Sensor Breakout - MPL3115A2 - SEN-11084 - SparkFun Electronics).

I want to get sensor data but when I upload some source code(https://github.com/sparkfun/MPL3115A2_Breakout sparkfun/MPL3115A2_Breakout · GitHub), I get just garbage values

such as Altitude(m):-999.00Pressure(Pa):-999.00 Temp(c):-999.00.

So I've searched the reason and I understand that the problem is because of wrong I2C connection.

I typed i2cdetect -y -r 1 in console but the message show up like below picture.

the error is "i2c-designware-pci 0000:00:08.0: i2c_dw_handle_tx_abort : lost arbitration". and I've searched the other forums in this intel communities,

but I can't get precise solution.

Does anyone solve this problem? please give me any help.

Thanks in advance.

Regard,

JaeHyuk


Accepted Solutions
Highlighted
Employee
27 Views

Hi JaeHyuk,

The http://www.i2c-bus.org/i2c-primer/analysing-obscure-problems/master-reports-arbitration-lost/ lost arbitration error can occur when the I2C slave doesn't receive a stop signal so it starts sending random data or can lost the control of data. I suggest you to check the datasheet of the shield and verify you are following the communication protocol for this shield. Also verify you are using the right address of the shield when you use the I2C protocol.

I checked the http://download.intel.com/support/Galileo-Edison_ShieldTestReport_330937-002.pdf Shields Test Report and I found that there are tests with the Adafruit* MPL115A2. Take a look at it and let me know if that code works for your SparkFun-shield too.

Regards,

Charlie

View solution in original post

6 Replies
Highlighted
Employee
27 Views

Hi JaeHyuk,

Which image are you using (run configure_edison --version)?

Are you checking the lines from the devices?

What is the output of running i2cdetec -l?

Are you powering the shield with 3.3V or 5V?

Regards,

Charlie

Highlighted
Community Manager
27 Views

Hi, Charlie.

When I run configure_edison --version, result is 159.

Yes, the line is no problem because when I upload it into Arduino Uno, It works very well.

When I run i2cdetect -l, result is below

i2c-1 i2c i2c-designware-1 I2C adapter

i2c-2 i2c i2c-designware-2 I2C adapter

i2c-3 i2c i2c-designware-3 I2C adapter

i2c-4 i2c i2c-designware-4 I2C adapter

i2c-5 i2c i2c-designware-5 I2C adapter

i2c-6 i2c i2c-designware-6 I2C adapter

i2c-7 i2c i2c-designware-7 I2C adapter

 

I am powering my board with 3.3V.

Could you give me any help?

Thanks.

0 Kudos
Highlighted
Employee
27 Views

Hi JaeHyuk,

The 3.3V you are using to power the MPL3115A2 are from the SparkFun block or from another supply? If you are using the Sparkfun and Edison as source for the MPL3115A2, I suggest you to use another power supply for this shield.

Also, the SparkFun and the MPL3115A2 have both Pull-Up resistors, are you measuring the voltage in both VCC in order to check that the voltage is not dropping?

Have you checked the SDA and SCL lines with a logic analyzer or oscilloscope? I know it worked with an Arduino but we could check in the signals if the problem is related to noise, to the SCL, if the Edison is writing as it should or the amplitude of the signals. I think it could helps to determine what we are missing to make it work

Regards,

Charlie

0 Kudos
Highlighted
Community Manager
27 Views

Hi. I am powering 3.3V into sensor by USB port. I have arduino breakout board and when I check between VCC and Ground of sensor, It is 3.3V.

And I don't have logic anlyzer and oscilloscople..

0 Kudos
Highlighted
Employee
28 Views

Hi JaeHyuk,

The http://www.i2c-bus.org/i2c-primer/analysing-obscure-problems/master-reports-arbitration-lost/ lost arbitration error can occur when the I2C slave doesn't receive a stop signal so it starts sending random data or can lost the control of data. I suggest you to check the datasheet of the shield and verify you are following the communication protocol for this shield. Also verify you are using the right address of the shield when you use the I2C protocol.

I checked the http://download.intel.com/support/Galileo-Edison_ShieldTestReport_330937-002.pdf Shields Test Report and I found that there are tests with the Adafruit* MPL115A2. Take a look at it and let me know if that code works for your SparkFun-shield too.

Regards,

Charlie

View solution in original post

Highlighted
Community Manager
27 Views

Hi. CMata. sorry for my late response. I had car accident so I've stopped my working. I bought Adafruit MPL3115A2 and It work very well with Edison now. I think the problem was maybe the compatibility between Edison and Spark-fun sensor.

Thank you so much.

Regards,

JaeHyuk

0 Kudos