valeria toffoli
/
COG4050_adxrs290_adxrs453
driver for gyro
Fork of COG4050_adxl355_adxl357-ver2 by
Diff: ADXRS290/ADXRS290.h
- Revision:
- 6:45d2393ef468
- Parent:
- 4:23b53636b576
- Child:
- 9:1afd906c5ed2
--- a/ADXRS290/ADXRS290.h Wed Aug 08 12:13:05 2018 +0000 +++ b/ADXRS290/ADXRS290.h Tue Aug 14 06:49:07 2018 +0000 @@ -0,0 +1,106 @@ + +#ifndef ADXRS290_H_ +#define ADXRS290_H_ + +class ADXRS290 +{ +public: + float gyro_sens; + float t_sens; + // -------------------------- // + // REGISTERS // + // -------------------------- // + typedef enum { + DEVID_AD = 0x00, + DEVID_MST = 0x01, + PARTID = 0x02, + REVID = 0x03, + SN0 = 0x04, + SN1 = 0x05, + SN2 = 0x06, + SN3 = 0x07, + DATAX0 = 0x08, + DATAX1 = 0x09, + DATAY0 = 0x0A, + DATAY1 = 0x0B, + TEMP0 = 0x0C, + TEMP1 = 0x0D, + POWER_CTL = 0x10, + FILTER = 0x11, + DATA_READY = 0x12 + } ADXRS290_register_t; + // -------------------------- // + // REGISTERS - DEFAULT VALUES // + // -------------------------- // + // Modes - POWER_CTL + typedef enum { + TEMP_ON = 0x00, + TEMP_OFF = 0x01, + STANDBY = 0x00, + MEASUREMENT = 0x02 + } ADXL355_modes_t; + // High-Pass and Low-Pass Filter - FILTER + typedef enum { + LPF480 = 0x00, + LPF320 = 0x01, + LPF160 = 0x02, + LPF80 = 0x03, + LPF56 = 0x04, + LPF40 = 0x05, + LPF28 = 0x06, + LPF20 = 0x07, + HPFOFF = 0x00, + HPF001 = 0x10, + HPF002 = 0x20, + HPF004 = 0x30, + HPF008 = 0x40, + HPF017 = 0x50, + HPF035 = 0x60, + HPF070 = 0x70, + HPF140 = 0x80, + HPF280 = 0x90, + HPF1130 = 0xA0 + } ADXRS290_filter_ctl_t; + // External timing register - INT_MAP + typedef enum { + OVR_EN = 0x04, + FULL_EN = 0x02, + RDY_EN = 0x01 + } ADXRS290_intmap_ctl_t; + // External timing register - SYNC + typedef enum { + ANAL_SYNC = 0x00, + DIGI_SYNC = 0x01 + } ADXRS290_dataready_ctl_t; + + // -------------------------- // + // FUNCTIONS // + // -------------------------- // + // SPI configuration & constructor + ADXRS290(PinName cs_pin , PinName MOSI , PinName MISO , PinName SCK ); + void frequency(int hz); + // SPI configuration & constructor + void write_reg(ADXRS290_register_t reg, uint8_t data); + uint8_t read_reg(ADXRS290_register_t reg); + uint16_t read_reg_u16(ADXRS290_register_t reg); + // ADXRS general register R/W methods + void set_power_ctl_reg(uint8_t data); + void set_filter_ctl_reg(ADXRS290_filter_ctl_t hpf, ADXRS290_filter_ctl_t odr); + void set_sync(ADXRS290_dataready_ctl_t data); + // ADXRS X/Y/T scanning methods + uint16_t scanx(); + uint16_t scany(); + uint16_t scant(); + // ADXRS tilt methods and calibration + // TBD +private: + // SPI adxl355; ///< SPI instance of the ADXL + SPI adxrs290; DigitalOut cs; + const static uint8_t _DEVICE_AD = 0x92; // contect of DEVID_AD (only-read) register + const static uint8_t _DUMMY_BYTE = 0xAA; // 10101010 + const static uint8_t _WRITE_REG_CMD = 0x00; // write register + const static uint8_t _READ_REG_CMD = 0x80; // read register + const static uint8_t _SPI_MODE = 4; // timing scheme +}; + +#endif \ No newline at end of file