Mpu9250 I2C, why not SPI?

Hi, I have experimented with building a beagleboneblack cape board last year with similar peripheral as the one on the AVIO+ except I I did not put a ublox module and I have added a stm32f4.
First good job on getting the AVIO+ out of the door and available in stock.
I am part of the openpilot core dev team ( and we had a history of not getting HW meeting the demand.

I have a question regarding the mpu9250 sample rate. After a quick look at the driver it looks like it is using the I2C interface.

I was wondering why using the I2C rather than the SPI bus?
I was able to get way better sample rate using the SPI since registers can be then read at

I am thinking of getting one AVIO+ and using an external mpu on the spi to give the RPI2 an additional feed of higher sample rate of the sensor.

Are you planing another version using SPI for the mpu?
I could not find any schematic so I am assuming this is closed HW, correct?
I will continue digging to find information on the pins description that connects to the RPI2.

Thanks and keep up the good work.


Hi Mathieu,

Thank you! It is indeed a very challenging task.

We actually have all connections to the sensors explained here. It is for Navio, but in Navio+ they are the same.

MPU9250 uses SPI, it uses internal I2C to talk to the built-in compass.

It would be interesting to talk to you about your OpenPilot experience, shoot me a PM if you are interested :smile:

Hi Igor,

Thanks for the pointer to the connections to the sensors.
That is really helpful and clarify the mpu connection to the SPI bus.

I am glad I was wrong :smile:

I will PM you regarding OP.