MPU6050 library

Dependents:   CSSE4011_BLE_IMU_Project_rev2 Seeed_Tiny_BLE_Get_Started nrf51822_fix_i2c_spi_conflict balanceboard ... more

Committer:
yihui
Date:
Sat Feb 07 08:09:26 2015 +0000
Revision:
0:1b6dab73c06b
Child:
1:6aedb937cb38
official driver ported to mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 0:1b6dab73c06b 1
yihui 0:1b6dab73c06b 2 #include "i2c_api.h"
yihui 0:1b6dab73c06b 3
yihui 0:1b6dab73c06b 4 static i2c_t mbed_i2c_object;
yihui 0:1b6dab73c06b 5
yihui 0:1b6dab73c06b 6 void mbed_i2c_init(PinName sda, PinName scl)
yihui 0:1b6dab73c06b 7 {
yihui 0:1b6dab73c06b 8 i2c_init(&mbed_i2c_object, sda, scl);
yihui 0:1b6dab73c06b 9 i2c_frequency(&mbed_i2c_object, 100000);
yihui 0:1b6dab73c06b 10 }
yihui 0:1b6dab73c06b 11
yihui 0:1b6dab73c06b 12 int mbed_i2c_write(unsigned char slave_addr,
yihui 0:1b6dab73c06b 13 unsigned char reg_addr,
yihui 0:1b6dab73c06b 14 unsigned char length,
yihui 0:1b6dab73c06b 15 unsigned char const *data)
yihui 0:1b6dab73c06b 16 {
yihui 0:1b6dab73c06b 17 int i;
yihui 0:1b6dab73c06b 18 slave_addr = slave_addr << 1;
yihui 0:1b6dab73c06b 19 i2c_start(&mbed_i2c_object);
yihui 0:1b6dab73c06b 20 i2c_byte_write(&mbed_i2c_object, slave_addr);
yihui 0:1b6dab73c06b 21 i2c_byte_write(&mbed_i2c_object, reg_addr);
yihui 0:1b6dab73c06b 22 for (i = 0; i < length; i++) {
yihui 0:1b6dab73c06b 23 i2c_byte_write(&mbed_i2c_object, data[i]);
yihui 0:1b6dab73c06b 24 }
yihui 0:1b6dab73c06b 25 i2c_stop(&mbed_i2c_object);
yihui 0:1b6dab73c06b 26 return 0;
yihui 0:1b6dab73c06b 27 }
yihui 0:1b6dab73c06b 28
yihui 0:1b6dab73c06b 29 int mbed_i2c_read(unsigned char slave_addr,
yihui 0:1b6dab73c06b 30 unsigned char reg_addr,
yihui 0:1b6dab73c06b 31 unsigned char length,
yihui 0:1b6dab73c06b 32 unsigned char *data)
yihui 0:1b6dab73c06b 33 {
yihui 0:1b6dab73c06b 34 slave_addr = slave_addr << 1;
yihui 0:1b6dab73c06b 35 i2c_write(&mbed_i2c_object, slave_addr, &reg_addr, 1, 0);
yihui 0:1b6dab73c06b 36 return (i2c_read(&mbed_i2c_object, slave_addr, data, length, 1) == length) ? 0 : 1;
yihui 0:1b6dab73c06b 37 }