Self test boot program for testing icarus sensors
Dependencies: BLE_API mbed nRF51822
Fork of BLE_UARTConsole by
MPU9250Sensor.cpp@11:70359785c2a7, 2015-01-29 (annotated)
- Committer:
- smigielski
- Date:
- Thu Jan 29 12:24:01 2015 +0000
- Revision:
- 11:70359785c2a7
- Parent:
- 10:3a24c970db40
- Child:
- 13:ef0ce8fa871f
Changing pin numbers
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
smigielski | 10:3a24c970db40 | 1 | #include "MPU9250Sensor.h" |
smigielski | 10:3a24c970db40 | 2 | #include "mbed.h" |
smigielski | 10:3a24c970db40 | 3 | |
smigielski | 10:3a24c970db40 | 4 | #ifndef LOG |
smigielski | 10:3a24c970db40 | 5 | #define LOG(...) do printf(__VA_ARGS__); while (0) |
smigielski | 10:3a24c970db40 | 6 | #endif |
smigielski | 10:3a24c970db40 | 7 | |
smigielski | 10:3a24c970db40 | 8 | MPU9250Sensor::MPU9250Sensor(SPI* spi_,DigitalOut* cs_) : BaseSensor() { |
smigielski | 10:3a24c970db40 | 9 | this->spi=spi_; |
smigielski | 10:3a24c970db40 | 10 | this->cs=cs_; |
smigielski | 10:3a24c970db40 | 11 | *cs = UP; |
smigielski | 10:3a24c970db40 | 12 | //To prevent switching into I2C mode when using SPI, the I2C interface should be disabled by setting the I2C_IF_DIS |
smigielski | 10:3a24c970db40 | 13 | //configuration bit. Setting this bit should be performed immediately after waiting for the time specified by the |
smigielski | 10:3a24c970db40 | 14 | //“Start-Up Time for Register Read/Write” in Section 6.3. |
smigielski | 10:3a24c970db40 | 15 | |
smigielski | 10:3a24c970db40 | 16 | |
smigielski | 10:3a24c970db40 | 17 | } |
smigielski | 10:3a24c970db40 | 18 | |
smigielski | 10:3a24c970db40 | 19 | char* MPU9250Sensor::getSimpleName() { |
smigielski | 10:3a24c970db40 | 20 | return "MPU9250"; |
smigielski | 10:3a24c970db40 | 21 | } |
smigielski | 10:3a24c970db40 | 22 | |
smigielski | 10:3a24c970db40 | 23 | |
smigielski | 10:3a24c970db40 | 24 | uint32_t MPU9250Sensor::verifyIntegrity(uint32_t* errorResult) { |
smigielski | 10:3a24c970db40 | 25 | LOG("Start verfication of MPU9250 Sensor"); |
smigielski | 10:3a24c970db40 | 26 | uint32_t errors = 0; |
smigielski | 11:70359785c2a7 | 27 | //who am I register value is 0x71 |
smigielski | 11:70359785c2a7 | 28 | // uint8_t sensorId = readRegister(MPU9250_WHOAMI); |
smigielski | 10:3a24c970db40 | 29 | |
smigielski | 11:70359785c2a7 | 30 | // if (sensorId !=0x71){ |
smigielski | 10:3a24c970db40 | 31 | // errorResult[errors++] = ERROR_WRONG_DEVICE_ID; |
smigielski | 10:3a24c970db40 | 32 | // LOG("Wrong sensorId: %X",sensorId); |
smigielski | 10:3a24c970db40 | 33 | // } |
smigielski | 10:3a24c970db40 | 34 | |
smigielski | 10:3a24c970db40 | 35 | //check status registry |
smigielski | 10:3a24c970db40 | 36 | // uint8_t status = readRegister(STATUS); |
smigielski | 10:3a24c970db40 | 37 | |
smigielski | 10:3a24c970db40 | 38 | //indicate that SEU error was detetcted |
smigielski | 10:3a24c970db40 | 39 | // if (status & (1 << 7)){ |
smigielski | 10:3a24c970db40 | 40 | // errorResult[errors++] = ERROR_SEU_ERROR_DETECT; |
smigielski | 10:3a24c970db40 | 41 | // LOG("SEU error detected: %X",status); |
smigielski | 10:3a24c970db40 | 42 | // } |
smigielski | 10:3a24c970db40 | 43 | //check that chip is in awaken state |
smigielski | 10:3a24c970db40 | 44 | //if (!(status & (1 << 6))){ |
smigielski | 10:3a24c970db40 | 45 | // errorResult[errors++] = ERROR_DEVICE_SLEEPING; |
smigielski | 10:3a24c970db40 | 46 | // LOG("Chip not awaken: %X",status); |
smigielski | 10:3a24c970db40 | 47 | // } |
smigielski | 10:3a24c970db40 | 48 | |
smigielski | 10:3a24c970db40 | 49 | //perform self test |
smigielski | 10:3a24c970db40 | 50 | // errors+=selfTest(&errorResult[errors]); |
smigielski | 10:3a24c970db40 | 51 | |
smigielski | 10:3a24c970db40 | 52 | return errors; |
smigielski | 10:3a24c970db40 | 53 | } |
smigielski | 10:3a24c970db40 | 54 | |
smigielski | 10:3a24c970db40 | 55 | void MPU9250Sensor::getSensorDetails(sensor_t* sensorDetails) { |
smigielski | 10:3a24c970db40 | 56 | |
smigielski | 10:3a24c970db40 | 57 | } |
smigielski | 11:70359785c2a7 | 58 | |
smigielski | 11:70359785c2a7 | 59 | //uint8_t MPU9250Sensor::readRegister( uint8_t reg){ |
smigielski | 11:70359785c2a7 | 60 | // cs->write(DOWN); |
smigielski | 11:70359785c2a7 | 61 | // spi->write(reg| MPU9250_READ_FLAG); |
smigielski | 11:70359785c2a7 | 62 | // uint8_t val = spi->write(0x00); |
smigielski | 11:70359785c2a7 | 63 | // cs->write(UP); |
smigielski | 11:70359785c2a7 | 64 | // return (val); |
smigielski | 11:70359785c2a7 | 65 | //} |
smigielski | 11:70359785c2a7 | 66 | // |
smigielski | 11:70359785c2a7 | 67 | //void MPU9250Sensor::writeRegister( uint8_t reg, uint8_t cmd ){ |
smigielski | 11:70359785c2a7 | 68 | // cs->write(DOWN); |
smigielski | 11:70359785c2a7 | 69 | // spi->write(reg); |
smigielski | 11:70359785c2a7 | 70 | // spi->write(cmd); |
smigielski | 11:70359785c2a7 | 71 | // cs->write(UP); |
smigielski | 11:70359785c2a7 | 72 | //} |