Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
adxl355.h
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>© 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
Generated on Thu Jul 14 2022 17:03:54 by
1.7.2