Self test boot program for testing icarus sensors
Dependencies: BLE_API mbed nRF51822
Fork of BLE_UARTConsole by
ADXL362Sensor.h@14:cb369746225d, 2015-04-15 (annotated)
- Committer:
- smigielski
- Date:
- Wed Apr 15 20:01:16 2015 +0000
- Revision:
- 14:cb369746225d
- Parent:
- 13:ef0ce8fa871f
ADXL362 self test working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
smigielski | 8:e9ae7a01d866 | 1 | #ifndef MBED_ADXL362_SENSOR_H |
smigielski | 8:e9ae7a01d866 | 2 | #define MBED_ADXL362_SENSOR_H |
smigielski | 8:e9ae7a01d866 | 3 | |
smigielski | 8:e9ae7a01d866 | 4 | #include "mbed.h" |
smigielski | 8:e9ae7a01d866 | 5 | |
smigielski | 8:e9ae7a01d866 | 6 | #include "BaseSensor.h" |
smigielski | 8:e9ae7a01d866 | 7 | |
smigielski | 8:e9ae7a01d866 | 8 | // ACC Registers |
smigielski | 10:3a24c970db40 | 9 | #define ADXL362_DEVID_AD 0x00 |
smigielski | 10:3a24c970db40 | 10 | #define ADXL362_DEVID_MST 0x01 |
smigielski | 10:3a24c970db40 | 11 | #define ADXL362_PART_ID 0x02 |
smigielski | 10:3a24c970db40 | 12 | #define ADXL362_REV_ID 0x03 |
smigielski | 8:e9ae7a01d866 | 13 | |
smigielski | 8:e9ae7a01d866 | 14 | //Three following addresses |
smigielski | 10:3a24c970db40 | 15 | #define ADXL362_DATA 0x08 |
smigielski | 8:e9ae7a01d866 | 16 | |
smigielski | 10:3a24c970db40 | 17 | #define ADXL362_STATUS 0x0b |
smigielski | 10:3a24c970db40 | 18 | #define ADXL362_FIFO_ENTRIES_L 0x0c |
smigielski | 10:3a24c970db40 | 19 | #define ADXL362_FIFO_ENTRIES_H 0x0d |
smigielski | 8:e9ae7a01d866 | 20 | |
smigielski | 8:e9ae7a01d866 | 21 | //Six following address as L & H |
smigielski | 10:3a24c970db40 | 22 | #define ADXL362_DATA_12 0x0E |
smigielski | 8:e9ae7a01d866 | 23 | |
smigielski | 8:e9ae7a01d866 | 24 | //Two following bytes |
smigielski | 10:3a24c970db40 | 25 | #define ADXL362_TEMP_12 0x14 |
smigielski | 8:e9ae7a01d866 | 26 | |
smigielski | 8:e9ae7a01d866 | 27 | |
smigielski | 10:3a24c970db40 | 28 | #define ADXL362_SOFT_RESET 0x1f |
smigielski | 10:3a24c970db40 | 29 | #define ADXL362_THRESH_ACT_11 0x20 |
smigielski | 10:3a24c970db40 | 30 | #define ADXL362_TIME_ACT 0x22 |
smigielski | 10:3a24c970db40 | 31 | #define ADXL362_THRESH_INACT_11 0x20 |
smigielski | 10:3a24c970db40 | 32 | #define ADXL362_TIME_INACT_16 0x22 |
smigielski | 10:3a24c970db40 | 33 | #define ADXL362_ACT_INACT_CTL 0x27 |
smigielski | 10:3a24c970db40 | 34 | #define ADXL362_FIFO_CONTROL 0x28 |
smigielski | 10:3a24c970db40 | 35 | #define ADXL362_FIFO_SAMPLES 0x29 |
smigielski | 10:3a24c970db40 | 36 | #define ADXL362_INTMAP1 0x2a |
smigielski | 10:3a24c970db40 | 37 | #define ADXL362_INTMAP2 0x2b |
smigielski | 10:3a24c970db40 | 38 | #define ADXL362_FILTER_CTL 0x2c |
smigielski | 10:3a24c970db40 | 39 | #define ADXL362_POWER_CTL 0x2d |
smigielski | 10:3a24c970db40 | 40 | #define ADXL362_SELF_TEST 0x2e |
smigielski | 8:e9ae7a01d866 | 41 | |
smigielski | 8:e9ae7a01d866 | 42 | /**The ADXL362 command set is |
smigielski | 8:e9ae7a01d866 | 43 | • 0x0A: write register |
smigielski | 8:e9ae7a01d866 | 44 | • 0x0B: read register |
smigielski | 8:e9ae7a01d866 | 45 | • 0x0D: read FIFO |
smigielski | 8:e9ae7a01d866 | 46 | */ |
smigielski | 10:3a24c970db40 | 47 | #define ADXL362_WRITE_REGISTER 0x0a |
smigielski | 10:3a24c970db40 | 48 | #define ADXL362_READ_REGISTER 0x0b |
smigielski | 10:3a24c970db40 | 49 | #define ADXL362_READ_FIFO 0x0d |
smigielski | 9:ed3636e1873f | 50 | |
smigielski | 14:cb369746225d | 51 | #define ADXL362_SELF_TEST_SCALE_FACTOR 2.4f |
smigielski | 10:3a24c970db40 | 52 | #define ADXL362_MG2G_MULTIPLIER 0.002f |
smigielski | 14:cb369746225d | 53 | #define ADXL362_ODR 100.0f |
smigielski | 9:ed3636e1873f | 54 | |
smigielski | 8:e9ae7a01d866 | 55 | |
smigielski | 8:e9ae7a01d866 | 56 | class ADXL362Sensor : public BaseSensor { |
smigielski | 12:9076e6453115 | 57 | |
smigielski | 8:e9ae7a01d866 | 58 | public: |
smigielski | 8:e9ae7a01d866 | 59 | //The recommended SPI clock speeds are 1 MHz to 5 MHz, with 12 pF maximum loading. |
smigielski | 13:ef0ce8fa871f | 60 | ADXL362Sensor(SPI&,DigitalOut&, void (*debug_)(const char* format, ...)=0); |
smigielski | 8:e9ae7a01d866 | 61 | virtual char* getSimpleName(); |
smigielski | 8:e9ae7a01d866 | 62 | virtual void getSensorDetails(sensor_t*); |
smigielski | 8:e9ae7a01d866 | 63 | //verify basic integrity of underlining hardware |
smigielski | 9:ed3636e1873f | 64 | virtual uint32_t verifyIntegrity(uint32_t*); |
smigielski | 12:9076e6453115 | 65 | private: |
smigielski | 12:9076e6453115 | 66 | SPI& spi; |
smigielski | 12:9076e6453115 | 67 | DigitalOut& cs; |
smigielski | 13:ef0ce8fa871f | 68 | |
smigielski | 9:ed3636e1873f | 69 | uint32_t selfTest(uint32_t* errorResult); |
smigielski | 9:ed3636e1873f | 70 | void refreshAcceleration12(int16_t* x, int16_t* y, int16_t* z); |
smigielski | 9:ed3636e1873f | 71 | uint32_t readRegister32(uint8_t reg); |
smigielski | 9:ed3636e1873f | 72 | uint8_t readRegister( uint8_t reg); |
smigielski | 9:ed3636e1873f | 73 | void writeRegister( uint8_t reg, uint8_t cmd ); |
smigielski | 9:ed3636e1873f | 74 | |
smigielski | 8:e9ae7a01d866 | 75 | }; |
smigielski | 8:e9ae7a01d866 | 76 | |
smigielski | 8:e9ae7a01d866 | 77 | #endif |