library for MPU6050 and MPU9250, supports both I2C and SPI

Dependents:   Seeed_nRF51822_MPU9250

Committer:
yihui
Date:
Thu Dec 10 07:39:48 2015 +0000
Revision:
0:972f3778c19c
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 0:972f3778c19c 1
yihui 0:972f3778c19c 2 #include <stdio.h>
yihui 0:972f3778c19c 3 #include "spi_api.h"
yihui 0:972f3778c19c 4 #include "gpio_api.h"
yihui 0:972f3778c19c 5 #include "nrf_delay.h"
yihui 0:972f3778c19c 6 #include "nrf51.h"
yihui 0:972f3778c19c 7
yihui 0:972f3778c19c 8 static spi_t mbed_i2c_object = {0,};
yihui 0:972f3778c19c 9 static gpio_t mbed_spi_cs;
yihui 0:972f3778c19c 10
yihui 0:972f3778c19c 11 void mbed_spi_init(PinName mosi, PinName miso, PinName sclk, PinName cs)
yihui 0:972f3778c19c 12 {
yihui 0:972f3778c19c 13 spi_init(&mbed_i2c_object, mosi, miso, sclk, NC);
yihui 0:972f3778c19c 14 spi_format(&mbed_i2c_object, 8, 0, 0);
yihui 0:972f3778c19c 15 spi_frequency(&mbed_i2c_object, 1000000);
yihui 0:972f3778c19c 16
yihui 0:972f3778c19c 17 gpio_init_out(&mbed_spi_cs, cs);
yihui 0:972f3778c19c 18 gpio_write(&mbed_spi_cs, 1);
yihui 0:972f3778c19c 19 }
yihui 0:972f3778c19c 20
yihui 0:972f3778c19c 21 int mbed_spi_write(unsigned char reg_addr,
yihui 0:972f3778c19c 22 unsigned char length,
yihui 0:972f3778c19c 23 unsigned char const *data)
yihui 0:972f3778c19c 24 {
yihui 0:972f3778c19c 25 int i;
yihui 0:972f3778c19c 26
yihui 0:972f3778c19c 27 gpio_write(&mbed_spi_cs, 0);
yihui 0:972f3778c19c 28 spi_master_write(&mbed_i2c_object, reg_addr);
yihui 0:972f3778c19c 29 for (i = 0; i < length; i++) {
yihui 0:972f3778c19c 30 spi_master_write(&mbed_i2c_object, data[i]);
yihui 0:972f3778c19c 31 }
yihui 0:972f3778c19c 32 gpio_write(&mbed_spi_cs, 1);
yihui 0:972f3778c19c 33 nrf_delay_us(50);
yihui 0:972f3778c19c 34 return 0;
yihui 0:972f3778c19c 35 }
yihui 0:972f3778c19c 36
yihui 0:972f3778c19c 37 int mbed_spi_read(unsigned char reg_addr,
yihui 0:972f3778c19c 38 unsigned char length,
yihui 0:972f3778c19c 39 unsigned char *data)
yihui 0:972f3778c19c 40 {
yihui 0:972f3778c19c 41 int i;
yihui 0:972f3778c19c 42
yihui 0:972f3778c19c 43 gpio_write(&mbed_spi_cs, 0);
yihui 0:972f3778c19c 44 spi_master_write(&mbed_i2c_object, reg_addr | 0x80);
yihui 0:972f3778c19c 45 for (i = 0; i < length; i++) {
yihui 0:972f3778c19c 46 data[i] = spi_master_write(&mbed_i2c_object, 0xff);
yihui 0:972f3778c19c 47 }
yihui 0:972f3778c19c 48
yihui 0:972f3778c19c 49 gpio_write(&mbed_spi_cs, 1);
yihui 0:972f3778c19c 50 nrf_delay_us(50);
yihui 0:972f3778c19c 51 return 0;
yihui 0:972f3778c19c 52 }
yihui 0:972f3778c19c 53
yihui 0:972f3778c19c 54 void mbed_spi_enable(void)
yihui 0:972f3778c19c 55 {
yihui 0:972f3778c19c 56
yihui 0:972f3778c19c 57 }
yihui 0:972f3778c19c 58
yihui 0:972f3778c19c 59 void mbed_spi_disable(void)
yihui 0:972f3778c19c 60 {
yihui 0:972f3778c19c 61
yihui 0:972f3778c19c 62 }