Self test boot program for testing icarus sensors
Dependencies: BLE_API mbed nRF51822
Fork of BLE_UARTConsole by
MPU9250Sensor.cpp@10:3a24c970db40, 2015-01-27 (annotated)
- Committer:
- smigielski
- Date:
- Tue Jan 27 13:25:37 2015 +0000
- Revision:
- 10:3a24c970db40
- Child:
- 11:70359785c2a7
Change namespace;
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 | 10:3a24c970db40 | 27 | //Device id is 0xAD |
smigielski | 10:3a24c970db40 | 28 | //Device mems id is 0x1D |
smigielski | 10:3a24c970db40 | 29 | //Part id is 0xF2 |
smigielski | 10:3a24c970db40 | 30 | // uint32_t sensorId = readRegister32(DEVID_AD); |
smigielski | 10:3a24c970db40 | 31 | |
smigielski | 10:3a24c970db40 | 32 | // if (sensorId >> 8 !=0xAD1DF2){ |
smigielski | 10:3a24c970db40 | 33 | // errorResult[errors++] = ERROR_WRONG_DEVICE_ID; |
smigielski | 10:3a24c970db40 | 34 | // LOG("Wrong sensorId: %X",sensorId); |
smigielski | 10:3a24c970db40 | 35 | // } |
smigielski | 10:3a24c970db40 | 36 | |
smigielski | 10:3a24c970db40 | 37 | //check status registry |
smigielski | 10:3a24c970db40 | 38 | // uint8_t status = readRegister(STATUS); |
smigielski | 10:3a24c970db40 | 39 | |
smigielski | 10:3a24c970db40 | 40 | //indicate that SEU error was detetcted |
smigielski | 10:3a24c970db40 | 41 | // if (status & (1 << 7)){ |
smigielski | 10:3a24c970db40 | 42 | // errorResult[errors++] = ERROR_SEU_ERROR_DETECT; |
smigielski | 10:3a24c970db40 | 43 | // LOG("SEU error detected: %X",status); |
smigielski | 10:3a24c970db40 | 44 | // } |
smigielski | 10:3a24c970db40 | 45 | //check that chip is in awaken state |
smigielski | 10:3a24c970db40 | 46 | //if (!(status & (1 << 6))){ |
smigielski | 10:3a24c970db40 | 47 | // errorResult[errors++] = ERROR_DEVICE_SLEEPING; |
smigielski | 10:3a24c970db40 | 48 | // LOG("Chip not awaken: %X",status); |
smigielski | 10:3a24c970db40 | 49 | // } |
smigielski | 10:3a24c970db40 | 50 | |
smigielski | 10:3a24c970db40 | 51 | //perform self test |
smigielski | 10:3a24c970db40 | 52 | // errors+=selfTest(&errorResult[errors]); |
smigielski | 10:3a24c970db40 | 53 | |
smigielski | 10:3a24c970db40 | 54 | return errors; |
smigielski | 10:3a24c970db40 | 55 | } |
smigielski | 10:3a24c970db40 | 56 | |
smigielski | 10:3a24c970db40 | 57 | void MPU9250Sensor::getSensorDetails(sensor_t* sensorDetails) { |
smigielski | 10:3a24c970db40 | 58 | |
smigielski | 10:3a24c970db40 | 59 | } |