Self test boot program for testing icarus sensors

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_UARTConsole by Bluetooth Low Energy

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?

UserRevisionLine numberNew 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