MPU6050 library
Dependents: CSSE4011_BLE_IMU_Project_rev2 Seeed_Tiny_BLE_Get_Started nrf51822_fix_i2c_spi_conflict balanceboard ... more
mbed_i2c.c@0:1b6dab73c06b, 2015-02-07 (annotated)
- 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?
User | Revision | Line number | New 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, ®_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 | } |