Davide Urbano / Mbed OS microSDreader
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers adxl355.h Source File

adxl355.h

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    adxl355.h
00004   * @author  DUR
00005   * @version V1.0.0
00006   * @date    01-Aug-2017
00007   * @brief   Header file of a library for adxl355 interface.
00008   ******************************************************************************
00009   * @attention
00010   *
00011   * <h2><center>&copy; COPYRIGHT(c) 2014 TD Group</center></h2>
00012   *
00013   * The information contained herein is property of TD Group S.p.A.
00014   *
00015   * Licensees are granted free, non-transferable use of the information. NO
00016   * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
00017   * the file.
00018   * 
00019   ******************************************************************************
00020   */ 
00021   
00022 
00023 /* Define to prevent recursive inclusion -------------------------------------*/
00024 #ifndef __ADXL355_H
00025 #define __ADXL355_H
00026 
00027 
00028 /* Includes ------------------------------------------------------------------*/
00029 #include <stdint.h>
00030 #include <string.h>
00031 
00032 
00033 
00034 /* Exported define -----------------------------------------------------------*/
00035   
00036 /** @brief   ID dell'accelerometro
00037   */
00038 #define ADXL355_DEVICE_ID                0xED
00039 
00040 
00041 /** @brief   Codice per effettuare il reset sw dell'accelerometro
00042   */
00043 #define ADXL355_RESET_CODE               0x52
00044   
00045 
00046 /** @brief   Start/stop self-test
00047   */
00048 #define ADXL355_SELF_TEST_ENABLE         0x01
00049 #define ADXL355_SELF_TEST_DISABLE        0x00  
00050     
00051     
00052 /** @brief   Indirizzi registri accelerometro
00053   */
00054 #define ADXL355_DEVID_AD                 0x00
00055 #define ADXL355_DEVID_MST                0x01
00056 #define ADXL355_PARTID                   0x02
00057 #define ADXL355_REVID                    0x03
00058 #define ADXL355_STATUS                   0x04
00059 #define ADXL355_FIFO_ENTRIES             0x05
00060 #define ADXL355_TEMP2                    0x06
00061 #define ADXL355_TEMP1                    0x07
00062 #define ADXL355_XDATA3                   0x08
00063 #define ADXL355_XDATA2                   0x09
00064 #define ADXL355_XDATA1                   0x0A
00065 #define ADXL355_YDATA3                   0x0B
00066 #define ADXL355_YDATA2                   0x0C
00067 #define ADXL355_YDATA1                   0x0D
00068 #define ADXL355_ZDATA3                   0x0E
00069 #define ADXL355_ZDATA2                   0x0F
00070 #define ADXL355_ZDATA1                   0x10
00071 #define ADXL355_FIFO_DATA                0x11
00072 #define ADXL355_OFFSET_X_H               0x1E
00073 #define ADXL355_OFFSET_X_L               0x1F
00074 #define ADXL355_OFFSET_Y_H               0x20
00075 #define ADXL355_OFFSET_Y_L               0x21
00076 #define ADXL355_OFFSET_Z_H               0x22
00077 #define ADXL355_OFFSET_Z_L               0x23
00078 #define ADXL355_ACT_EN                   0x24
00079 #define ADXL355_ACT_THRESH_H             0x25
00080 #define ADXL355_ACT_THRESH_L             0x26
00081 #define ADXL355_ACT_COUNT                0x27
00082 #define ADXL355_FILTER                   0x28
00083 #define ADXL355_FIFO_SAMPLES             0x29
00084 #define ADXL355_INT_MAP                  0x2A
00085 #define ADXL355_SYNC                     0x2B
00086 #define ADXL355_RANGE                    0x2C
00087 #define ADXL355_POWER_CTL                0x2D
00088 #define ADXL355_SELF_TEST                0x2E
00089 #define ADXL355_RESET                    0x2F
00090 
00091 
00092 /** @brief   Maschere di bit 
00093   */
00094 #define ADXL355_READ_BYTE_MASK           0x01
00095 #define ADXL355_WRITE_BYTE_MASK          0xFE  
00096 
00097 #define ADXL355_20_BIT_MASK              0x000FFFFF
00098 #define ADXL355_12_BIT_MASK              0x0FFF
00099 
00100 #define ADXL355_RANGE_MASK               0x03    
00101 #define ADXL355_ODR_MASK                 0x0F
00102 #define ADXL355_INT_POL_MASK             0x40
00103 #define ADXL355_INT_1_MASK               0x0F
00104 #define ADXL355_INT_2_MASK               0xF0   
00105 #define ADXL355_MEAS_MASK                0x03  
00106 #define ADXL355_DRDY_OFF_MASK            0x04 
00107 #define ADXL355_SELF_TEST_MASK           0x03 
00108 
00109 
00110 /** @brief   Temperature parameters 
00111   */
00112 #define ADXL355_TEMP_BIAS       (float)1852.0      /* Accelerometer temperature bias(in ADC codes) at 25 Deg C */
00113 #define ADXL355_TEMP_SLOPE      (float)-9.05       /* Accelerometer temperature change from datasheet (LSB/degC) */
00114 
00115 
00116 
00117 /* Exported typedef ----------------------------------------------------------*/
00118 /** @brief   Enumerativo per le misure attive sul sensore in un determinato momento.
00119   */ 
00120 typedef enum
00121 {
00122     adxl355_acc = 0u,    //Sola misura di accelerazione attiva
00123     adxl355_both,        //Entrambe le misure attive (accelerazione e temperatura)
00124     adxl355_none         //Nessuna misura attiva
00125 }adxl355_measure_enabled;  
00126  
00127  
00128 /** @brief   Enumerativo per valori di range di misura ammissibili.
00129   */ 
00130 typedef enum
00131 {
00132     adxl355_2g = 1u,
00133     adxl355_4g,
00134     adxl355_8g
00135 }adxl355_range_value; 
00136 
00137 
00138 /** @brief   Enumerativo per valori di output data rate ammissibili.
00139   */
00140 typedef enum
00141 {
00142     adxl355_4000hz = 0u,
00143     adxl355_2000hz,
00144     adxl355_1000hz,
00145     adxl355_500hz,
00146     adxl355_250hz,
00147     adxl355_125hz,
00148     adxl355_62p5hz,
00149     adxl355_31p25hz,
00150     adxl355_15p625hz,
00151     adxl355_7p813hz,
00152     adxl355_3p906hz
00153 }adxl355_output_datarate_value;
00154 
00155 
00156 
00157 /** @brief   Enumerativo per i differenti eventi associabili ai 2 interrupt ammissibili.
00158   */ 
00159 typedef enum
00160 {
00161     adxl355_rdy_en = 0u, //DATA_RDY interrupt enable on INT1/2
00162     adxl355_full_en,     //FIFO_FULL interrupt enable on INT1/2
00163     adxl355_ovr_en,      //FIFO_OVR interrupt enable on INT1/2
00164     adxl355_act_en       //Activity interrupt enable on INT1/2
00165 }adxl355_int_event; 
00166 
00167 
00168 
00169 
00170 /** @brief   Struttura che setta i parametri degli interrupt sui 2 pin a disposizione.
00171   */ 
00172 typedef struct adxl355_gpio_config_t
00173 {
00174     adxl355_int_event   int1_evt;    //evento che scatena l'interrupt 1
00175     adxl355_int_event   int2_evt;    //evento che scatena l'interrupt 2
00176     bool                int_act_low; // se true gli interrupt sono attivi basso, altrimenti attivi alto
00177 }adxl355_int_config;
00178 
00179 
00180 
00181 /** @brief   Struttura che definisce i parametri di configurazione ed utilizzo 
00182   *          dell'accelerometro
00183   */ 
00184 typedef struct adxl355_handler_t
00185 { 
00186     /* Range di misura */
00187     adxl355_range_value               measure_range;
00188     /* Data rate di acquisizione */
00189     adxl355_output_datarate_value     out_data_rate; 
00190     /* Pin di controllo dell'accelerometro - porre a NULL se non utilizzati */
00191     uint32_t                     drdy_pin;  //output
00192     uint32_t                     int1_pin;  //output
00193     uint32_t                     int2_pin;  //output
00194     /* Configurazione interrupt */
00195     adxl355_int_config           int_config;
00196     /* Valori grezzi della accelerazione */
00197     uint32_t                     raw_acc_x_value;   
00198     uint32_t                     raw_acc_y_value;   
00199     uint32_t                     raw_acc_z_value;
00200     /* Valore grezzo della temperatura */
00201     uint16_t                     raw_temp_value;        
00202 }adxl355_handler;
00203 
00204 
00205 
00206 
00207 
00208 /* Exported types ------------------------------------------------------------*/ 
00209 
00210 /* Exported constants --------------------------------------------------------*/
00211 
00212 /* Exported macro ------------------------------------------------------------*/
00213 
00214 
00215 /* Exported function prototypes ----------------------------------------------*/
00216 /**< Funzione che restituisce i parametri identificativi del driver */
00217 void adxl355_driver_info(uint8_t * adxl355_driver_version, uint8_t * adxl355_driver_revision, uint8_t * adxl355_driver_patch);
00218 /**< Funzione che restituisce l'ID dell'accelerometro */
00219 uint16_t adxl355_who_am_i(uint8_t * adxl355_device_id);
00220 /**< Funzione di inizializzazione dell'accelerometro */
00221 uint16_t adxl355_init(adxl355_handler *adxl_init_handler);
00222 /**< Funzione di start/stop delle acquisizioni */
00223 uint16_t adxl355_start_acquisition(adxl355_measure_enabled adxl_start);
00224 /**< Funzione per la lettura del/i dato/i acquisito/i */
00225 uint16_t adxl355_get_data(adxl355_handler *adxl_data_handler);
00226 /**< Funzione che restituisce il valore grezzo di accelerazione lungo l'asse X */
00227 uint32_t adxl355_raw_x_acc(adxl355_handler *adxl_xdata_handler);
00228 /**< Funzione che restituisce il valore grezzo di accelerazione lungo l'asse Y */
00229 uint32_t adxl355_raw_y_acc(adxl355_handler *adxl_ydata_handler);
00230 /**< Funzione che restituisce il valore grezzo di accelerazione lungo l'asse Z */
00231 uint32_t adxl355_raw_z_acc(adxl355_handler *adxl_zdata_handler);
00232 /**< Funzione che restituisce il valore grezzo di temperatura */
00233 uint16_t adxl355_raw_temp(adxl355_handler *adxl_tdata_handler);
00234 /**< Funzione per il reset sw */
00235 uint16_t adxl355_sw_reset(void);
00236 /**< Funzione per il self-test */
00237 uint16_t adxl355_self_test(bool adxl_start);
00238 
00239 
00240 /* Funzione di trasferimento su bus SPI */
00241 extern uint16_t adxl355_spi_transfer(uint8_t * rbuffer, uint32_t rlen);
00242 
00243 #endif 
00244 
00245 /************************ (C) COPYRIGHT TD Group *****END OF FILE****/
00246 
00247