SparkFunLSM6DS3.h 75 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086
  1. /******************************************************************************
  2. SparkFunLSM6DS3.h
  3. LSM6DS3 Arduino and Teensy Driver
  4. Marshall Taylor @ SparkFun Electronics
  5. May 20, 2015
  6. https://github.com/sparkfun/LSM6DS3_Breakout
  7. https://github.com/sparkfun/SparkFun_LSM6DS3_Arduino_Library
  8. Resources:
  9. Uses Wire.h for i2c operation
  10. Uses SPI.h for SPI operation
  11. Either can be omitted if not used
  12. Development environment specifics:
  13. Arduino IDE 1.6.4
  14. Teensy loader 1.23
  15. This code is released under the [MIT License](http://opensource.org/licenses/MIT).
  16. Please review the LICENSE.md file included with this example. If you have any questions
  17. or concerns with licensing, please contact techsupport@sparkfun.com.
  18. Distributed as-is; no warranty is given.
  19. ******************************************************************************/
  20. #ifndef __LSM6DS3IMU_H__
  21. #define __LSM6DS3IMU_H__
  22. #include "stdint.h"
  23. #define I2C_MODE 0
  24. #define SPI_MODE 1
  25. // Return values
  26. typedef enum
  27. {
  28. IMU_SUCCESS,
  29. IMU_HW_ERROR,
  30. IMU_NOT_SUPPORTED,
  31. IMU_GENERIC_ERROR,
  32. IMU_OUT_OF_BOUNDS,
  33. IMU_ALL_ONES_WARNING,
  34. //...
  35. } status_t;
  36. //This is the core operational class of the driver.
  37. // LSM6DS3Core contains only read and write operations towards the IMU.
  38. // To use the higher level functions, use the class LSM6DS3 which inherits
  39. // this class.
  40. class LSM6DS3Core
  41. {
  42. public:
  43. LSM6DS3Core( uint8_t );
  44. LSM6DS3Core( uint8_t, uint8_t );
  45. ~LSM6DS3Core() = default;
  46. status_t beginCore( void );
  47. //The following utilities read and write to the IMU
  48. //ReadRegisterRegion takes a uint8 array address as input and reads
  49. // a chunk of memory into that array.
  50. status_t readRegisterRegion(uint8_t*, uint8_t, uint8_t );
  51. //readRegister reads one 8-bit register
  52. status_t readRegister(uint8_t*, uint8_t);
  53. //Reads two 8-bit regs, LSByte then MSByte order, and concatenates them.
  54. // Acts as a 16-bit read operation
  55. status_t readRegisterInt16(int16_t*, uint8_t offset );
  56. //Writes an 8-bit byte;
  57. status_t writeRegister(uint8_t, uint8_t);
  58. //Change to embedded page
  59. status_t embeddedPage( void );
  60. //Change to base page
  61. status_t basePage( void );
  62. private:
  63. //Communication stuff
  64. uint8_t commInterface;
  65. uint8_t I2CAddress;
  66. uint8_t chipSelectPin;
  67. };
  68. //This struct holds the settings the driver uses to do calculations
  69. struct SensorSettings {
  70. public:
  71. //Gyro settings
  72. uint8_t gyroEnabled;
  73. uint16_t gyroRange;
  74. uint16_t gyroSampleRate;
  75. uint16_t gyroBandWidth;
  76. uint8_t gyroFifoEnabled;
  77. uint8_t gyroFifoDecimation;
  78. //Accelerometer settings
  79. uint8_t accelEnabled;
  80. uint8_t accelODROff;
  81. uint16_t accelRange;
  82. uint16_t accelSampleRate;
  83. uint16_t accelBandWidth;
  84. uint8_t accelFifoEnabled;
  85. uint8_t accelFifoDecimation;
  86. //Temperature settings
  87. uint8_t tempEnabled;
  88. //Non-basic mode settings
  89. uint8_t commMode;
  90. //FIFO control data
  91. uint16_t fifoThreshold;
  92. int16_t fifoSampleRate;
  93. uint8_t fifoModeWord;
  94. };
  95. //This is the highest level class of the driver.
  96. //
  97. // class LSM6DS3 inherits the core and makes use of the beginCore()
  98. //method through it's own begin() method. It also contains the
  99. //settings struct to hold user settings.
  100. class LSM6DS3 : public LSM6DS3Core
  101. {
  102. public:
  103. //IMU settings
  104. SensorSettings settings;
  105. //Error checking
  106. uint16_t allOnesCounter;
  107. uint16_t nonSuccessCounter;
  108. //Constructor generates default SensorSettings.
  109. //(over-ride after construction if desired)
  110. LSM6DS3( uint8_t busType = I2C_MODE, uint8_t inputArg = 0x6A );
  111. ~LSM6DS3() = default;
  112. //Call to apply SensorSettings
  113. status_t begin(void);
  114. //Returns the raw bits from the sensor cast as 16-bit signed integers
  115. int16_t readRawAccelX( void );
  116. int16_t readRawAccelY( void );
  117. int16_t readRawAccelZ( void );
  118. int16_t readRawGyroX( void );
  119. int16_t readRawGyroY( void );
  120. int16_t readRawGyroZ( void );
  121. //Returns the values as floats. Inside, this calls readRaw___();
  122. float readFloatAccelX( void );
  123. float readFloatAccelY( void );
  124. float readFloatAccelZ( void );
  125. float readFloatGyroX( void );
  126. float readFloatGyroY( void );
  127. float readFloatGyroZ( void );
  128. //Temperature related methods
  129. int16_t readRawTemp( void );
  130. float readTempC( void );
  131. float readTempF( void );
  132. //FIFO stuff
  133. void fifoBegin( void );
  134. void fifoClear( void );
  135. int16_t fifoRead( void );
  136. uint16_t fifoGetStatus( void );
  137. void fifoEnd( void );
  138. float calcGyro( int16_t );
  139. float calcAccel( int16_t );
  140. private:
  141. };
  142. /************** Device Register *******************/
  143. #define LSM6DS3_ACC_GYRO_TEST_PAGE 0X00
  144. #define LSM6DS3_ACC_GYRO_RAM_ACCESS 0X01
  145. #define LSM6DS3_ACC_GYRO_SENSOR_SYNC_TIME 0X04
  146. #define LSM6DS3_ACC_GYRO_SENSOR_SYNC_EN 0X05
  147. #define LSM6DS3_ACC_GYRO_FIFO_CTRL1 0X06
  148. #define LSM6DS3_ACC_GYRO_FIFO_CTRL2 0X07
  149. #define LSM6DS3_ACC_GYRO_FIFO_CTRL3 0X08
  150. #define LSM6DS3_ACC_GYRO_FIFO_CTRL4 0X09
  151. #define LSM6DS3_ACC_GYRO_FIFO_CTRL5 0X0A
  152. #define LSM6DS3_ACC_GYRO_ORIENT_CFG_G 0X0B
  153. #define LSM6DS3_ACC_GYRO_REFERENCE_G 0X0C
  154. #define LSM6DS3_ACC_GYRO_INT1_CTRL 0X0D
  155. #define LSM6DS3_ACC_GYRO_INT2_CTRL 0X0E
  156. #define LSM6DS3_ACC_GYRO_WHO_AM_I_REG 0X0F
  157. #define LSM6DS3_ACC_GYRO_CTRL1_XL 0X10
  158. #define LSM6DS3_ACC_GYRO_CTRL2_G 0X11
  159. #define LSM6DS3_ACC_GYRO_CTRL3_C 0X12
  160. #define LSM6DS3_ACC_GYRO_CTRL4_C 0X13
  161. #define LSM6DS3_ACC_GYRO_CTRL5_C 0X14
  162. #define LSM6DS3_ACC_GYRO_CTRL6_G 0X15
  163. #define LSM6DS3_ACC_GYRO_CTRL7_G 0X16
  164. #define LSM6DS3_ACC_GYRO_CTRL8_XL 0X17
  165. #define LSM6DS3_ACC_GYRO_CTRL9_XL 0X18
  166. #define LSM6DS3_ACC_GYRO_CTRL10_C 0X19
  167. #define LSM6DS3_ACC_GYRO_MASTER_CONFIG 0X1A
  168. #define LSM6DS3_ACC_GYRO_WAKE_UP_SRC 0X1B
  169. #define LSM6DS3_ACC_GYRO_TAP_SRC 0X1C
  170. #define LSM6DS3_ACC_GYRO_D6D_SRC 0X1D
  171. #define LSM6DS3_ACC_GYRO_STATUS_REG 0X1E
  172. #define LSM6DS3_ACC_GYRO_OUT_TEMP_L 0X20
  173. #define LSM6DS3_ACC_GYRO_OUT_TEMP_H 0X21
  174. #define LSM6DS3_ACC_GYRO_OUTX_L_G 0X22
  175. #define LSM6DS3_ACC_GYRO_OUTX_H_G 0X23
  176. #define LSM6DS3_ACC_GYRO_OUTY_L_G 0X24
  177. #define LSM6DS3_ACC_GYRO_OUTY_H_G 0X25
  178. #define LSM6DS3_ACC_GYRO_OUTZ_L_G 0X26
  179. #define LSM6DS3_ACC_GYRO_OUTZ_H_G 0X27
  180. #define LSM6DS3_ACC_GYRO_OUTX_L_XL 0X28
  181. #define LSM6DS3_ACC_GYRO_OUTX_H_XL 0X29
  182. #define LSM6DS3_ACC_GYRO_OUTY_L_XL 0X2A
  183. #define LSM6DS3_ACC_GYRO_OUTY_H_XL 0X2B
  184. #define LSM6DS3_ACC_GYRO_OUTZ_L_XL 0X2C
  185. #define LSM6DS3_ACC_GYRO_OUTZ_H_XL 0X2D
  186. #define LSM6DS3_ACC_GYRO_SENSORHUB1_REG 0X2E
  187. #define LSM6DS3_ACC_GYRO_SENSORHUB2_REG 0X2F
  188. #define LSM6DS3_ACC_GYRO_SENSORHUB3_REG 0X30
  189. #define LSM6DS3_ACC_GYRO_SENSORHUB4_REG 0X31
  190. #define LSM6DS3_ACC_GYRO_SENSORHUB5_REG 0X32
  191. #define LSM6DS3_ACC_GYRO_SENSORHUB6_REG 0X33
  192. #define LSM6DS3_ACC_GYRO_SENSORHUB7_REG 0X34
  193. #define LSM6DS3_ACC_GYRO_SENSORHUB8_REG 0X35
  194. #define LSM6DS3_ACC_GYRO_SENSORHUB9_REG 0X36
  195. #define LSM6DS3_ACC_GYRO_SENSORHUB10_REG 0X37
  196. #define LSM6DS3_ACC_GYRO_SENSORHUB11_REG 0X38
  197. #define LSM6DS3_ACC_GYRO_SENSORHUB12_REG 0X39
  198. #define LSM6DS3_ACC_GYRO_FIFO_STATUS1 0X3A
  199. #define LSM6DS3_ACC_GYRO_FIFO_STATUS2 0X3B
  200. #define LSM6DS3_ACC_GYRO_FIFO_STATUS3 0X3C
  201. #define LSM6DS3_ACC_GYRO_FIFO_STATUS4 0X3D
  202. #define LSM6DS3_ACC_GYRO_FIFO_DATA_OUT_L 0X3E
  203. #define LSM6DS3_ACC_GYRO_FIFO_DATA_OUT_H 0X3F
  204. #define LSM6DS3_ACC_GYRO_TIMESTAMP0_REG 0X40
  205. #define LSM6DS3_ACC_GYRO_TIMESTAMP1_REG 0X41
  206. #define LSM6DS3_ACC_GYRO_TIMESTAMP2_REG 0X42
  207. #define LSM6DS3_ACC_GYRO_STEP_COUNTER_L 0X4B
  208. #define LSM6DS3_ACC_GYRO_STEP_COUNTER_H 0X4C
  209. #define LSM6DS3_ACC_GYRO_FUNC_SRC 0X53
  210. #define LSM6DS3_ACC_GYRO_TAP_CFG1 0X58
  211. #define LSM6DS3_ACC_GYRO_TAP_THS_6D 0X59
  212. #define LSM6DS3_ACC_GYRO_INT_DUR2 0X5A
  213. #define LSM6DS3_ACC_GYRO_WAKE_UP_THS 0X5B
  214. #define LSM6DS3_ACC_GYRO_WAKE_UP_DUR 0X5C
  215. #define LSM6DS3_ACC_GYRO_FREE_FALL 0X5D
  216. #define LSM6DS3_ACC_GYRO_MD1_CFG 0X5E
  217. #define LSM6DS3_ACC_GYRO_MD2_CFG 0X5F
  218. /************** Access Device RAM *******************/
  219. #define LSM6DS3_ACC_GYRO_ADDR0_TO_RW_RAM 0x62
  220. #define LSM6DS3_ACC_GYRO_ADDR1_TO_RW_RAM 0x63
  221. #define LSM6DS3_ACC_GYRO_DATA_TO_WR_RAM 0x64
  222. #define LSM6DS3_ACC_GYRO_DATA_RD_FROM_RAM 0x65
  223. #define LSM6DS3_ACC_GYRO_RAM_SIZE 4096
  224. /************** Embedded functions register mapping *******************/
  225. #define LSM6DS3_ACC_GYRO_SLV0_ADD 0x02
  226. #define LSM6DS3_ACC_GYRO_SLV0_SUBADD 0x03
  227. #define LSM6DS3_ACC_GYRO_SLAVE0_CONFIG 0x04
  228. #define LSM6DS3_ACC_GYRO_SLV1_ADD 0x05
  229. #define LSM6DS3_ACC_GYRO_SLV1_SUBADD 0x06
  230. #define LSM6DS3_ACC_GYRO_SLAVE1_CONFIG 0x07
  231. #define LSM6DS3_ACC_GYRO_SLV2_ADD 0x08
  232. #define LSM6DS3_ACC_GYRO_SLV2_SUBADD 0x09
  233. #define LSM6DS3_ACC_GYRO_SLAVE2_CONFIG 0x0A
  234. #define LSM6DS3_ACC_GYRO_SLV3_ADD 0x0B
  235. #define LSM6DS3_ACC_GYRO_SLV3_SUBADD 0x0C
  236. #define LSM6DS3_ACC_GYRO_SLAVE3_CONFIG 0x0D
  237. #define LSM6DS3_ACC_GYRO_DATAWRITE_SRC_MODE_SUB_SLV0 0x0E
  238. #define LSM6DS3_ACC_GYRO_CONFIG_PEDO_THS_MIN 0x0F
  239. #define LSM6DS3_ACC_GYRO_CONFIG_TILT_IIR 0x10
  240. #define LSM6DS3_ACC_GYRO_CONFIG_TILT_ACOS 0x11
  241. #define LSM6DS3_ACC_GYRO_CONFIG_TILT_WTIME 0x12
  242. #define LSM6DS3_ACC_GYRO_SM_STEP_THS 0x13
  243. #define LSM6DS3_ACC_GYRO_MAG_SI_XX 0x24
  244. #define LSM6DS3_ACC_GYRO_MAG_SI_XY 0x25
  245. #define LSM6DS3_ACC_GYRO_MAG_SI_XZ 0x26
  246. #define LSM6DS3_ACC_GYRO_MAG_SI_YX 0x27
  247. #define LSM6DS3_ACC_GYRO_MAG_SI_YY 0x28
  248. #define LSM6DS3_ACC_GYRO_MAG_SI_YZ 0x29
  249. #define LSM6DS3_ACC_GYRO_MAG_SI_ZX 0x2A
  250. #define LSM6DS3_ACC_GYRO_MAG_SI_ZY 0x2B
  251. #define LSM6DS3_ACC_GYRO_MAG_SI_ZZ 0x2C
  252. #define LSM6DS3_ACC_GYRO_MAG_OFFX_L 0x2D
  253. #define LSM6DS3_ACC_GYRO_MAG_OFFX_H 0x2E
  254. #define LSM6DS3_ACC_GYRO_MAG_OFFY_L 0x2F
  255. #define LSM6DS3_ACC_GYRO_MAG_OFFY_H 0x30
  256. #define LSM6DS3_ACC_GYRO_MAG_OFFZ_L 0x31
  257. #define LSM6DS3_ACC_GYRO_MAG_OFFZ_H 0x32
  258. /*******************************************************************************
  259. * Register : TEST_PAGE
  260. * Address : 0X00
  261. * Bit Group Name: FLASH_PAGE
  262. * Permission : RW
  263. *******************************************************************************/
  264. #define FLASH_PAGE 0x40
  265. /*******************************************************************************
  266. * Register : RAM_ACCESS
  267. * Address : 0X01
  268. * Bit Group Name: PROG_RAM1
  269. * Permission : RW
  270. *******************************************************************************/
  271. typedef enum {
  272. LSM6DS3_ACC_GYRO_PROG_RAM1_DISABLED = 0x00,
  273. LSM6DS3_ACC_GYRO_PROG_RAM1_ENABLED = 0x01,
  274. } LSM6DS3_ACC_GYRO_PROG_RAM1_t;
  275. /*******************************************************************************
  276. * Register : RAM_ACCESS
  277. * Address : 0X01
  278. * Bit Group Name: CUSTOMROM1
  279. * Permission : RW
  280. *******************************************************************************/
  281. typedef enum {
  282. LSM6DS3_ACC_GYRO_CUSTOMROM1_DISABLED = 0x00,
  283. LSM6DS3_ACC_GYRO_CUSTOMROM1_ENABLED = 0x04,
  284. } LSM6DS3_ACC_GYRO_CUSTOMROM1_t;
  285. /*******************************************************************************
  286. * Register : RAM_ACCESS
  287. * Address : 0X01
  288. * Bit Group Name: RAM_PAGE
  289. * Permission : RW
  290. *******************************************************************************/
  291. typedef enum {
  292. LSM6DS3_ACC_GYRO_RAM_PAGE_DISABLED = 0x00,
  293. LSM6DS3_ACC_GYRO_RAM_PAGE_ENABLED = 0x80,
  294. } LSM6DS3_ACC_GYRO_RAM_PAGE_t;
  295. /*******************************************************************************
  296. * Register : SENSOR_SYNC_TIME
  297. * Address : 0X04
  298. * Bit Group Name: TPH
  299. * Permission : RW
  300. *******************************************************************************/
  301. #define LSM6DS3_ACC_GYRO_TPH_MASK 0xFF
  302. #define LSM6DS3_ACC_GYRO_TPH_POSITION 0
  303. /*******************************************************************************
  304. * Register : SENSOR_SYNC_EN
  305. * Address : 0X05
  306. * Bit Group Name: SYNC_EN
  307. * Permission : RW
  308. *******************************************************************************/
  309. typedef enum {
  310. LSM6DS3_ACC_GYRO_SYNC_EN_DISABLED = 0x00,
  311. LSM6DS3_ACC_GYRO_SYNC_EN_ENABLED = 0x01,
  312. } LSM6DS3_ACC_GYRO_SYNC_EN_t;
  313. /*******************************************************************************
  314. * Register : SENSOR_SYNC_EN
  315. * Address : 0X05
  316. * Bit Group Name: HP_RST
  317. * Permission : RW
  318. *******************************************************************************/
  319. typedef enum {
  320. LSM6DS3_ACC_GYRO_HP_RST_RST_OFF = 0x00,
  321. LSM6DS3_ACC_GYRO_HP_RST_RST_ON = 0x02,
  322. } LSM6DS3_ACC_GYRO_HP_RST_t;
  323. /*******************************************************************************
  324. * Register : FIFO_CTRL1
  325. * Address : 0X06
  326. * Bit Group Name: WTM_FIFO
  327. * Permission : RW
  328. *******************************************************************************/
  329. #define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL1_MASK 0xFF
  330. #define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL1_POSITION 0
  331. #define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL2_MASK 0x0F
  332. #define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL2_POSITION 0
  333. /*******************************************************************************
  334. * Register : FIFO_CTRL2
  335. * Address : 0X07
  336. * Bit Group Name: TIM_PEDO_FIFO_DRDY
  337. * Permission : RW
  338. *******************************************************************************/
  339. typedef enum {
  340. LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_DRDY_DISABLED = 0x00,
  341. LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_DRDY_ENABLED = 0x40,
  342. } LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t;
  343. /*******************************************************************************
  344. * Register : FIFO_CTRL2
  345. * Address : 0X07
  346. * Bit Group Name: TIM_PEDO_FIFO_EN
  347. * Permission : RW
  348. *******************************************************************************/
  349. typedef enum {
  350. LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_EN_DISABLED = 0x00,
  351. LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_EN_ENABLED = 0x80,
  352. } LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_EN_t;
  353. /*******************************************************************************
  354. * Register : FIFO_CTRL3
  355. * Address : 0X08
  356. * Bit Group Name: DEC_FIFO_XL
  357. * Permission : RW
  358. *******************************************************************************/
  359. typedef enum {
  360. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DATA_NOT_IN_FIFO = 0x00,
  361. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_NO_DECIMATION = 0x01,
  362. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_2 = 0x02,
  363. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_3 = 0x03,
  364. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_4 = 0x04,
  365. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_8 = 0x05,
  366. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_16 = 0x06,
  367. LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_32 = 0x07,
  368. } LSM6DS3_ACC_GYRO_DEC_FIFO_XL_t;
  369. /*******************************************************************************
  370. * Register : FIFO_CTRL3
  371. * Address : 0X08
  372. * Bit Group Name: DEC_FIFO_G
  373. * Permission : RW
  374. *******************************************************************************/
  375. typedef enum {
  376. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DATA_NOT_IN_FIFO = 0x00,
  377. LSM6DS3_ACC_GYRO_DEC_FIFO_G_NO_DECIMATION = 0x08,
  378. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_2 = 0x10,
  379. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_3 = 0x18,
  380. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_4 = 0x20,
  381. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_8 = 0x28,
  382. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_16 = 0x30,
  383. LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_32 = 0x38,
  384. } LSM6DS3_ACC_GYRO_DEC_FIFO_G_t;
  385. /*******************************************************************************
  386. * Register : FIFO_CTRL4
  387. * Address : 0X09
  388. * Bit Group Name: DEC_FIFO_SLV0
  389. * Permission : RW
  390. *******************************************************************************/
  391. typedef enum {
  392. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DATA_NOT_IN_FIFO = 0x00,
  393. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_NO_DECIMATION = 0x01,
  394. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_2 = 0x02,
  395. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_3 = 0x03,
  396. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_4 = 0x04,
  397. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_8 = 0x05,
  398. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_16 = 0x06,
  399. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_32 = 0x07,
  400. } LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_t;
  401. /*******************************************************************************
  402. * Register : FIFO_CTRL4
  403. * Address : 0X09
  404. * Bit Group Name: DEC_FIFO_SLV1
  405. * Permission : RW
  406. *******************************************************************************/
  407. typedef enum {
  408. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DATA_NOT_IN_FIFO = 0x00,
  409. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_NO_DECIMATION = 0x08,
  410. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_2 = 0x10,
  411. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_3 = 0x18,
  412. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_4 = 0x20,
  413. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_8 = 0x28,
  414. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_16 = 0x30,
  415. LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_32 = 0x38,
  416. } LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_t;
  417. /*******************************************************************************
  418. * Register : FIFO_CTRL4
  419. * Address : 0X09
  420. * Bit Group Name: HI_DATA_ONLY
  421. * Permission : RW
  422. *******************************************************************************/
  423. typedef enum {
  424. LSM6DS3_ACC_GYRO_HI_DATA_ONLY_DISABLED = 0x00,
  425. LSM6DS3_ACC_GYRO_HI_DATA_ONLY_ENABLED = 0x40,
  426. } LSM6DS3_ACC_GYRO_HI_DATA_ONLY_t;
  427. /*******************************************************************************
  428. * Register : FIFO_CTRL5
  429. * Address : 0X0A
  430. * Bit Group Name: FIFO_MODE
  431. * Permission : RW
  432. *******************************************************************************/
  433. typedef enum {
  434. LSM6DS3_ACC_GYRO_FIFO_MODE_BYPASS = 0x00,
  435. LSM6DS3_ACC_GYRO_FIFO_MODE_FIFO = 0x01,
  436. LSM6DS3_ACC_GYRO_FIFO_MODE_STREAM = 0x02,
  437. LSM6DS3_ACC_GYRO_FIFO_MODE_STF = 0x03,
  438. LSM6DS3_ACC_GYRO_FIFO_MODE_BTS = 0x04,
  439. LSM6DS3_ACC_GYRO_FIFO_MODE_DYN_STREAM = 0x05,
  440. LSM6DS3_ACC_GYRO_FIFO_MODE_DYN_STREAM_2 = 0x06,
  441. LSM6DS3_ACC_GYRO_FIFO_MODE_BTF = 0x07,
  442. } LSM6DS3_ACC_GYRO_FIFO_MODE_t;
  443. /*******************************************************************************
  444. * Register : FIFO_CTRL5
  445. * Address : 0X0A
  446. * Bit Group Name: ODR_FIFO
  447. * Permission : RW
  448. *******************************************************************************/
  449. typedef enum {
  450. LSM6DS3_ACC_GYRO_ODR_FIFO_10Hz = 0x08,
  451. LSM6DS3_ACC_GYRO_ODR_FIFO_25Hz = 0x10,
  452. LSM6DS3_ACC_GYRO_ODR_FIFO_50Hz = 0x18,
  453. LSM6DS3_ACC_GYRO_ODR_FIFO_100Hz = 0x20,
  454. LSM6DS3_ACC_GYRO_ODR_FIFO_200Hz = 0x28,
  455. LSM6DS3_ACC_GYRO_ODR_FIFO_400Hz = 0x30,
  456. LSM6DS3_ACC_GYRO_ODR_FIFO_800Hz = 0x38,
  457. LSM6DS3_ACC_GYRO_ODR_FIFO_1600Hz = 0x40,
  458. LSM6DS3_ACC_GYRO_ODR_FIFO_3300Hz = 0x48,
  459. LSM6DS3_ACC_GYRO_ODR_FIFO_6600Hz = 0x50,
  460. LSM6DS3_ACC_GYRO_ODR_FIFO_13300Hz = 0x58,
  461. } LSM6DS3_ACC_GYRO_ODR_FIFO_t;
  462. /*******************************************************************************
  463. * Register : ORIENT_CFG_G
  464. * Address : 0X0B
  465. * Bit Group Name: ORIENT
  466. * Permission : RW
  467. *******************************************************************************/
  468. typedef enum {
  469. LSM6DS3_ACC_GYRO_ORIENT_XYZ = 0x00,
  470. LSM6DS3_ACC_GYRO_ORIENT_XZY = 0x01,
  471. LSM6DS3_ACC_GYRO_ORIENT_YXZ = 0x02,
  472. LSM6DS3_ACC_GYRO_ORIENT_YZX = 0x03,
  473. LSM6DS3_ACC_GYRO_ORIENT_ZXY = 0x04,
  474. LSM6DS3_ACC_GYRO_ORIENT_ZYX = 0x05,
  475. } LSM6DS3_ACC_GYRO_ORIENT_t;
  476. /*******************************************************************************
  477. * Register : ORIENT_CFG_G
  478. * Address : 0X0B
  479. * Bit Group Name: SIGN_Z_G
  480. * Permission : RW
  481. *******************************************************************************/
  482. typedef enum {
  483. LSM6DS3_ACC_GYRO_SIGN_Z_G_POSITIVE = 0x00,
  484. LSM6DS3_ACC_GYRO_SIGN_Z_G_NEGATIVE = 0x08,
  485. } LSM6DS3_ACC_GYRO_SIGN_Z_G_t;
  486. /*******************************************************************************
  487. * Register : ORIENT_CFG_G
  488. * Address : 0X0B
  489. * Bit Group Name: SIGN_Y_G
  490. * Permission : RW
  491. *******************************************************************************/
  492. typedef enum {
  493. LSM6DS3_ACC_GYRO_SIGN_Y_G_POSITIVE = 0x00,
  494. LSM6DS3_ACC_GYRO_SIGN_Y_G_NEGATIVE = 0x10,
  495. } LSM6DS3_ACC_GYRO_SIGN_Y_G_t;
  496. /*******************************************************************************
  497. * Register : ORIENT_CFG_G
  498. * Address : 0X0B
  499. * Bit Group Name: SIGN_X_G
  500. * Permission : RW
  501. *******************************************************************************/
  502. typedef enum {
  503. LSM6DS3_ACC_GYRO_SIGN_X_G_POSITIVE = 0x00,
  504. LSM6DS3_ACC_GYRO_SIGN_X_G_NEGATIVE = 0x20,
  505. } LSM6DS3_ACC_GYRO_SIGN_X_G_t;
  506. /*******************************************************************************
  507. * Register : REFERENCE_G
  508. * Address : 0X0C
  509. * Bit Group Name: REF_G
  510. * Permission : RW
  511. *******************************************************************************/
  512. #define LSM6DS3_ACC_GYRO_REF_G_MASK 0xFF
  513. #define LSM6DS3_ACC_GYRO_REF_G_POSITION 0
  514. /*******************************************************************************
  515. * Register : INT1_CTRL
  516. * Address : 0X0D
  517. * Bit Group Name: INT1_DRDY_XL
  518. * Permission : RW
  519. *******************************************************************************/
  520. typedef enum {
  521. LSM6DS3_ACC_GYRO_INT1_DRDY_XL_DISABLED = 0x00,
  522. LSM6DS3_ACC_GYRO_INT1_DRDY_XL_ENABLED = 0x01,
  523. } LSM6DS3_ACC_GYRO_INT1_DRDY_XL_t;
  524. /*******************************************************************************
  525. * Register : INT1_CTRL
  526. * Address : 0X0D
  527. * Bit Group Name: INT1_DRDY_G
  528. * Permission : RW
  529. *******************************************************************************/
  530. typedef enum {
  531. LSM6DS3_ACC_GYRO_INT1_DRDY_G_DISABLED = 0x00,
  532. LSM6DS3_ACC_GYRO_INT1_DRDY_G_ENABLED = 0x02,
  533. } LSM6DS3_ACC_GYRO_INT1_DRDY_G_t;
  534. /*******************************************************************************
  535. * Register : INT1_CTRL
  536. * Address : 0X0D
  537. * Bit Group Name: INT1_BOOT
  538. * Permission : RW
  539. *******************************************************************************/
  540. typedef enum {
  541. LSM6DS3_ACC_GYRO_INT1_BOOT_DISABLED = 0x00,
  542. LSM6DS3_ACC_GYRO_INT1_BOOT_ENABLED = 0x04,
  543. } LSM6DS3_ACC_GYRO_INT1_BOOT_t;
  544. /*******************************************************************************
  545. * Register : INT1_CTRL
  546. * Address : 0X0D
  547. * Bit Group Name: INT1_FTH
  548. * Permission : RW
  549. *******************************************************************************/
  550. typedef enum {
  551. LSM6DS3_ACC_GYRO_INT1_FTH_DISABLED = 0x00,
  552. LSM6DS3_ACC_GYRO_INT1_FTH_ENABLED = 0x08,
  553. } LSM6DS3_ACC_GYRO_INT1_FTH_t;
  554. /*******************************************************************************
  555. * Register : INT1_CTRL
  556. * Address : 0X0D
  557. * Bit Group Name: INT1_OVR
  558. * Permission : RW
  559. *******************************************************************************/
  560. typedef enum {
  561. LSM6DS3_ACC_GYRO_INT1_OVR_DISABLED = 0x00,
  562. LSM6DS3_ACC_GYRO_INT1_OVR_ENABLED = 0x10,
  563. } LSM6DS3_ACC_GYRO_INT1_OVR_t;
  564. /*******************************************************************************
  565. * Register : INT1_CTRL
  566. * Address : 0X0D
  567. * Bit Group Name: INT1_FSS5
  568. * Permission : RW
  569. *******************************************************************************/
  570. typedef enum {
  571. LSM6DS3_ACC_GYRO_INT1_FSS5_DISABLED = 0x00,
  572. LSM6DS3_ACC_GYRO_INT1_FSS5_ENABLED = 0x20,
  573. } LSM6DS3_ACC_GYRO_INT1_FSS5_t;
  574. /*******************************************************************************
  575. * Register : INT1_CTRL
  576. * Address : 0X0D
  577. * Bit Group Name: INT1_SIGN_MOT
  578. * Permission : RW
  579. *******************************************************************************/
  580. typedef enum {
  581. LSM6DS3_ACC_GYRO_INT1_SIGN_MOT_DISABLED = 0x00,
  582. LSM6DS3_ACC_GYRO_INT1_SIGN_MOT_ENABLED = 0x40,
  583. } LSM6DS3_ACC_GYRO_INT1_SIGN_MOT_t;
  584. /*******************************************************************************
  585. * Register : INT1_CTRL
  586. * Address : 0X0D
  587. * Bit Group Name: INT1_PEDO
  588. * Permission : RW
  589. *******************************************************************************/
  590. typedef enum {
  591. LSM6DS3_ACC_GYRO_INT1_PEDO_DISABLED = 0x00,
  592. LSM6DS3_ACC_GYRO_INT1_PEDO_ENABLED = 0x80,
  593. } LSM6DS3_ACC_GYRO_INT1_PEDO_t;
  594. /*******************************************************************************
  595. * Register : INT2_CTRL
  596. * Address : 0X0E
  597. * Bit Group Name: INT2_DRDY_XL
  598. * Permission : RW
  599. *******************************************************************************/
  600. typedef enum {
  601. LSM6DS3_ACC_GYRO_INT2_DRDY_XL_DISABLED = 0x00,
  602. LSM6DS3_ACC_GYRO_INT2_DRDY_XL_ENABLED = 0x01,
  603. } LSM6DS3_ACC_GYRO_INT2_DRDY_XL_t;
  604. /*******************************************************************************
  605. * Register : INT2_CTRL
  606. * Address : 0X0E
  607. * Bit Group Name: INT2_DRDY_G
  608. * Permission : RW
  609. *******************************************************************************/
  610. typedef enum {
  611. LSM6DS3_ACC_GYRO_INT2_DRDY_G_DISABLED = 0x00,
  612. LSM6DS3_ACC_GYRO_INT2_DRDY_G_ENABLED = 0x02,
  613. } LSM6DS3_ACC_GYRO_INT2_DRDY_G_t;
  614. /*******************************************************************************
  615. * Register : INT2_CTRL
  616. * Address : 0X0E
  617. * Bit Group Name: INT2_FTH
  618. * Permission : RW
  619. *******************************************************************************/
  620. typedef enum {
  621. LSM6DS3_ACC_GYRO_INT2_FTH_DISABLED = 0x00,
  622. LSM6DS3_ACC_GYRO_INT2_FTH_ENABLED = 0x08,
  623. } LSM6DS3_ACC_GYRO_INT2_FTH_t;
  624. /*******************************************************************************
  625. * Register : INT2_CTRL
  626. * Address : 0X0E
  627. * Bit Group Name: INT2_OVR
  628. * Permission : RW
  629. *******************************************************************************/
  630. typedef enum {
  631. LSM6DS3_ACC_GYRO_INT2_OVR_DISABLED = 0x00,
  632. LSM6DS3_ACC_GYRO_INT2_OVR_ENABLED = 0x10,
  633. } LSM6DS3_ACC_GYRO_INT2_OVR_t;
  634. /*******************************************************************************
  635. * Register : INT2_CTRL
  636. * Address : 0X0E
  637. * Bit Group Name: INT2_FSS5
  638. * Permission : RW
  639. *******************************************************************************/
  640. typedef enum {
  641. LSM6DS3_ACC_GYRO_INT2_FSS5_DISABLED = 0x00,
  642. LSM6DS3_ACC_GYRO_INT2_FSS5_ENABLED = 0x20,
  643. } LSM6DS3_ACC_GYRO_INT2_FSS5_t;
  644. /*******************************************************************************
  645. * Register : INT2_CTRL
  646. * Address : 0X0E
  647. * Bit Group Name: INT2_SIGN_MOT
  648. * Permission : RW
  649. *******************************************************************************/
  650. typedef enum {
  651. LSM6DS3_ACC_GYRO_INT2_SIGN_MOT_DISABLED = 0x00,
  652. LSM6DS3_ACC_GYRO_INT2_SIGN_MOT_ENABLED = 0x40,
  653. } LSM6DS3_ACC_GYRO_INT2_SIGN_MOT_t;
  654. /*******************************************************************************
  655. * Register : INT2_CTRL
  656. * Address : 0X0E
  657. * Bit Group Name: INT2_PEDO
  658. * Permission : RW
  659. *******************************************************************************/
  660. typedef enum {
  661. LSM6DS3_ACC_GYRO_INT2_PEDO_DISABLED = 0x00,
  662. LSM6DS3_ACC_GYRO_INT2_PEDO_ENABLED = 0x80,
  663. } LSM6DS3_ACC_GYRO_INT2_PEDO_t;
  664. /*******************************************************************************
  665. * Register : WHO_AM_I
  666. * Address : 0X0F
  667. * Bit Group Name: WHO_AM_I_BIT
  668. * Permission : RO
  669. *******************************************************************************/
  670. #define LSM6DS3_ACC_GYRO_WHO_AM_I_BIT_MASK 0xFF
  671. #define LSM6DS3_ACC_GYRO_WHO_AM_I_BIT_POSITION 0
  672. /*******************************************************************************
  673. * Register : CTRL1_XL
  674. * Address : 0X10
  675. * Bit Group Name: BW_XL
  676. * Permission : RW
  677. *******************************************************************************/
  678. typedef enum {
  679. LSM6DS3_ACC_GYRO_BW_XL_400Hz = 0x00,
  680. LSM6DS3_ACC_GYRO_BW_XL_200Hz = 0x01,
  681. LSM6DS3_ACC_GYRO_BW_XL_100Hz = 0x02,
  682. LSM6DS3_ACC_GYRO_BW_XL_50Hz = 0x03,
  683. } LSM6DS3_ACC_GYRO_BW_XL_t;
  684. /*******************************************************************************
  685. * Register : CTRL1_XL
  686. * Address : 0X10
  687. * Bit Group Name: FS_XL
  688. * Permission : RW
  689. *******************************************************************************/
  690. typedef enum {
  691. LSM6DS3_ACC_GYRO_FS_XL_2g = 0x00,
  692. LSM6DS3_ACC_GYRO_FS_XL_16g = 0x04,
  693. LSM6DS3_ACC_GYRO_FS_XL_4g = 0x08,
  694. LSM6DS3_ACC_GYRO_FS_XL_8g = 0x0C,
  695. } LSM6DS3_ACC_GYRO_FS_XL_t;
  696. /*******************************************************************************
  697. * Register : CTRL1_XL
  698. * Address : 0X10
  699. * Bit Group Name: ODR_XL
  700. * Permission : RW
  701. *******************************************************************************/
  702. typedef enum {
  703. LSM6DS3_ACC_GYRO_ODR_XL_POWER_DOWN = 0x00,
  704. LSM6DS3_ACC_GYRO_ODR_XL_13Hz = 0x10,
  705. LSM6DS3_ACC_GYRO_ODR_XL_26Hz = 0x20,
  706. LSM6DS3_ACC_GYRO_ODR_XL_52Hz = 0x30,
  707. LSM6DS3_ACC_GYRO_ODR_XL_104Hz = 0x40,
  708. LSM6DS3_ACC_GYRO_ODR_XL_208Hz = 0x50,
  709. LSM6DS3_ACC_GYRO_ODR_XL_416Hz = 0x60,
  710. LSM6DS3_ACC_GYRO_ODR_XL_833Hz = 0x70,
  711. LSM6DS3_ACC_GYRO_ODR_XL_1660Hz = 0x80,
  712. LSM6DS3_ACC_GYRO_ODR_XL_3330Hz = 0x90,
  713. LSM6DS3_ACC_GYRO_ODR_XL_6660Hz = 0xA0,
  714. LSM6DS3_ACC_GYRO_ODR_XL_13330Hz = 0xB0,
  715. } LSM6DS3_ACC_GYRO_ODR_XL_t;
  716. /*******************************************************************************
  717. * Register : CTRL2_G
  718. * Address : 0X11
  719. * Bit Group Name: FS_125
  720. * Permission : RW
  721. *******************************************************************************/
  722. typedef enum {
  723. LSM6DS3_ACC_GYRO_FS_125_DISABLED = 0x00,
  724. LSM6DS3_ACC_GYRO_FS_125_ENABLED = 0x02,
  725. } LSM6DS3_ACC_GYRO_FS_125_t;
  726. /*******************************************************************************
  727. * Register : CTRL2_G
  728. * Address : 0X11
  729. * Bit Group Name: FS_G
  730. * Permission : RW
  731. *******************************************************************************/
  732. typedef enum {
  733. LSM6DS3_ACC_GYRO_FS_G_245dps = 0x00,
  734. LSM6DS3_ACC_GYRO_FS_G_500dps = 0x04,
  735. LSM6DS3_ACC_GYRO_FS_G_1000dps = 0x08,
  736. LSM6DS3_ACC_GYRO_FS_G_2000dps = 0x0C,
  737. } LSM6DS3_ACC_GYRO_FS_G_t;
  738. /*******************************************************************************
  739. * Register : CTRL2_G
  740. * Address : 0X11
  741. * Bit Group Name: ODR_G
  742. * Permission : RW
  743. *******************************************************************************/
  744. typedef enum {
  745. LSM6DS3_ACC_GYRO_ODR_G_POWER_DOWN = 0x00,
  746. LSM6DS3_ACC_GYRO_ODR_G_13Hz = 0x10,
  747. LSM6DS3_ACC_GYRO_ODR_G_26Hz = 0x20,
  748. LSM6DS3_ACC_GYRO_ODR_G_52Hz = 0x30,
  749. LSM6DS3_ACC_GYRO_ODR_G_104Hz = 0x40,
  750. LSM6DS3_ACC_GYRO_ODR_G_208Hz = 0x50,
  751. LSM6DS3_ACC_GYRO_ODR_G_416Hz = 0x60,
  752. LSM6DS3_ACC_GYRO_ODR_G_833Hz = 0x70,
  753. LSM6DS3_ACC_GYRO_ODR_G_1660Hz = 0x80,
  754. } LSM6DS3_ACC_GYRO_ODR_G_t;
  755. /*******************************************************************************
  756. * Register : CTRL3_C
  757. * Address : 0X12
  758. * Bit Group Name: SW_RESET
  759. * Permission : RW
  760. *******************************************************************************/
  761. typedef enum {
  762. LSM6DS3_ACC_GYRO_SW_RESET_NORMAL_MODE = 0x00,
  763. LSM6DS3_ACC_GYRO_SW_RESET_RESET_DEVICE = 0x01,
  764. } LSM6DS3_ACC_GYRO_SW_RESET_t;
  765. /*******************************************************************************
  766. * Register : CTRL3_C
  767. * Address : 0X12
  768. * Bit Group Name: BLE
  769. * Permission : RW
  770. *******************************************************************************/
  771. typedef enum {
  772. LSM6DS3_ACC_GYRO_BLE_LSB = 0x00,
  773. LSM6DS3_ACC_GYRO_BLE_MSB = 0x02,
  774. } LSM6DS3_ACC_GYRO_BLE_t;
  775. /*******************************************************************************
  776. * Register : CTRL3_C
  777. * Address : 0X12
  778. * Bit Group Name: IF_INC
  779. * Permission : RW
  780. *******************************************************************************/
  781. typedef enum {
  782. LSM6DS3_ACC_GYRO_IF_INC_DISABLED = 0x00,
  783. LSM6DS3_ACC_GYRO_IF_INC_ENABLED = 0x04,
  784. } LSM6DS3_ACC_GYRO_IF_INC_t;
  785. /*******************************************************************************
  786. * Register : CTRL3_C
  787. * Address : 0X12
  788. * Bit Group Name: SIM
  789. * Permission : RW
  790. *******************************************************************************/
  791. typedef enum {
  792. LSM6DS3_ACC_GYRO_SIM_4_WIRE = 0x00,
  793. LSM6DS3_ACC_GYRO_SIM_3_WIRE = 0x08,
  794. } LSM6DS3_ACC_GYRO_SIM_t;
  795. /*******************************************************************************
  796. * Register : CTRL3_C
  797. * Address : 0X12
  798. * Bit Group Name: PP_OD
  799. * Permission : RW
  800. *******************************************************************************/
  801. typedef enum {
  802. LSM6DS3_ACC_GYRO_PP_OD_PUSH_PULL = 0x00,
  803. LSM6DS3_ACC_GYRO_PP_OD_OPEN_DRAIN = 0x10,
  804. } LSM6DS3_ACC_GYRO_PP_OD_t;
  805. /*******************************************************************************
  806. * Register : CTRL3_C
  807. * Address : 0X12
  808. * Bit Group Name: INT_ACT_LEVEL
  809. * Permission : RW
  810. *******************************************************************************/
  811. typedef enum {
  812. LSM6DS3_ACC_GYRO_INT_ACT_LEVEL_ACTIVE_HI = 0x00,
  813. LSM6DS3_ACC_GYRO_INT_ACT_LEVEL_ACTIVE_LO = 0x20,
  814. } LSM6DS3_ACC_GYRO_INT_ACT_LEVEL_t;
  815. /*******************************************************************************
  816. * Register : CTRL3_C
  817. * Address : 0X12
  818. * Bit Group Name: BDU
  819. * Permission : RW
  820. *******************************************************************************/
  821. typedef enum {
  822. LSM6DS3_ACC_GYRO_BDU_CONTINUOS = 0x00,
  823. LSM6DS3_ACC_GYRO_BDU_BLOCK_UPDATE = 0x40,
  824. } LSM6DS3_ACC_GYRO_BDU_t;
  825. /*******************************************************************************
  826. * Register : CTRL3_C
  827. * Address : 0X12
  828. * Bit Group Name: BOOT
  829. * Permission : RW
  830. *******************************************************************************/
  831. typedef enum {
  832. LSM6DS3_ACC_GYRO_BOOT_NORMAL_MODE = 0x00,
  833. LSM6DS3_ACC_GYRO_BOOT_REBOOT_MODE = 0x80,
  834. } LSM6DS3_ACC_GYRO_BOOT_t;
  835. /*******************************************************************************
  836. * Register : CTRL4_C
  837. * Address : 0X13
  838. * Bit Group Name: STOP_ON_FTH
  839. * Permission : RW
  840. *******************************************************************************/
  841. typedef enum {
  842. LSM6DS3_ACC_GYRO_STOP_ON_FTH_DISABLED = 0x00,
  843. LSM6DS3_ACC_GYRO_STOP_ON_FTH_ENABLED = 0x01,
  844. } LSM6DS3_ACC_GYRO_STOP_ON_FTH_t;
  845. /*******************************************************************************
  846. * Register : CTRL4_C
  847. * Address : 0X13
  848. * Bit Group Name: MODE3_EN
  849. * Permission : RW
  850. *******************************************************************************/
  851. typedef enum {
  852. LSM6DS3_ACC_GYRO_MODE3_EN_DISABLED = 0x00,
  853. LSM6DS3_ACC_GYRO_MODE3_EN_ENABLED = 0x02,
  854. } LSM6DS3_ACC_GYRO_MODE3_EN_t;
  855. /*******************************************************************************
  856. * Register : CTRL4_C
  857. * Address : 0X13
  858. * Bit Group Name: I2C_DISABLE
  859. * Permission : RW
  860. *******************************************************************************/
  861. typedef enum {
  862. LSM6DS3_ACC_GYRO_I2C_DISABLE_I2C_AND_SPI = 0x00,
  863. LSM6DS3_ACC_GYRO_I2C_DISABLE_SPI_ONLY = 0x04,
  864. } LSM6DS3_ACC_GYRO_I2C_DISABLE_t;
  865. /*******************************************************************************
  866. * Register : CTRL4_C
  867. * Address : 0X13
  868. * Bit Group Name: DRDY_MSK
  869. * Permission : RW
  870. *******************************************************************************/
  871. typedef enum {
  872. LSM6DS3_ACC_GYRO_DRDY_MSK_DISABLED = 0x00,
  873. LSM6DS3_ACC_GYRO_DRDY_MSK_ENABLED = 0x08,
  874. } LSM6DS3_ACC_GYRO_DRDY_MSK_t;
  875. /*******************************************************************************
  876. * Register : CTRL4_C
  877. * Address : 0X13
  878. * Bit Group Name: FIFO_TEMP_EN
  879. * Permission : RW
  880. *******************************************************************************/
  881. typedef enum {
  882. LSM6DS3_ACC_GYRO_FIFO_TEMP_EN_DISABLED = 0x00,
  883. LSM6DS3_ACC_GYRO_FIFO_TEMP_EN_ENABLED = 0x10,
  884. } LSM6DS3_ACC_GYRO_FIFO_TEMP_EN_t;
  885. /*******************************************************************************
  886. * Register : CTRL4_C
  887. * Address : 0X13
  888. * Bit Group Name: INT2_ON_INT1
  889. * Permission : RW
  890. *******************************************************************************/
  891. typedef enum {
  892. LSM6DS3_ACC_GYRO_INT2_ON_INT1_DISABLED = 0x00,
  893. LSM6DS3_ACC_GYRO_INT2_ON_INT1_ENABLED = 0x20,
  894. } LSM6DS3_ACC_GYRO_INT2_ON_INT1_t;
  895. /*******************************************************************************
  896. * Register : CTRL4_C
  897. * Address : 0X13
  898. * Bit Group Name: SLEEP_G
  899. * Permission : RW
  900. *******************************************************************************/
  901. typedef enum {
  902. LSM6DS3_ACC_GYRO_SLEEP_G_DISABLED = 0x00,
  903. LSM6DS3_ACC_GYRO_SLEEP_G_ENABLED = 0x40,
  904. } LSM6DS3_ACC_GYRO_SLEEP_G_t;
  905. /*******************************************************************************
  906. * Register : CTRL4_C
  907. * Address : 0X13
  908. * Bit Group Name: BW_SCAL_ODR
  909. * Permission : RW
  910. *******************************************************************************/
  911. typedef enum {
  912. LSM6DS3_ACC_GYRO_BW_SCAL_ODR_DISABLED = 0x00,
  913. LSM6DS3_ACC_GYRO_BW_SCAL_ODR_ENABLED = 0x80,
  914. } LSM6DS3_ACC_GYRO_BW_SCAL_ODR_t;
  915. /*******************************************************************************
  916. * Register : CTRL5_C
  917. * Address : 0X14
  918. * Bit Group Name: ST_XL
  919. * Permission : RW
  920. *******************************************************************************/
  921. typedef enum {
  922. LSM6DS3_ACC_GYRO_ST_XL_NORMAL_MODE = 0x00,
  923. LSM6DS3_ACC_GYRO_ST_XL_POS_SIGN_TEST = 0x01,
  924. LSM6DS3_ACC_GYRO_ST_XL_NEG_SIGN_TEST = 0x02,
  925. LSM6DS3_ACC_GYRO_ST_XL_NA = 0x03,
  926. } LSM6DS3_ACC_GYRO_ST_XL_t;
  927. /*******************************************************************************
  928. * Register : CTRL5_C
  929. * Address : 0X14
  930. * Bit Group Name: ST_G
  931. * Permission : RW
  932. *******************************************************************************/
  933. typedef enum {
  934. LSM6DS3_ACC_GYRO_ST_G_NORMAL_MODE = 0x00,
  935. LSM6DS3_ACC_GYRO_ST_G_POS_SIGN_TEST = 0x04,
  936. LSM6DS3_ACC_GYRO_ST_G_NA = 0x08,
  937. LSM6DS3_ACC_GYRO_ST_G_NEG_SIGN_TEST = 0x0C,
  938. } LSM6DS3_ACC_GYRO_ST_G_t;
  939. /*******************************************************************************
  940. * Register : CTRL6_G
  941. * Address : 0X15
  942. * Bit Group Name: LP_XL
  943. * Permission : RW
  944. *******************************************************************************/
  945. typedef enum {
  946. LSM6DS3_ACC_GYRO_LP_XL_DISABLED = 0x00,
  947. LSM6DS3_ACC_GYRO_LP_XL_ENABLED = 0x10,
  948. } LSM6DS3_ACC_GYRO_LP_XL_t;
  949. /*******************************************************************************
  950. * Register : CTRL6_G
  951. * Address : 0X15
  952. * Bit Group Name: DEN_LVL2_EN
  953. * Permission : RW
  954. *******************************************************************************/
  955. typedef enum {
  956. LSM6DS3_ACC_GYRO_DEN_LVL2_EN_DISABLED = 0x00,
  957. LSM6DS3_ACC_GYRO_DEN_LVL2_EN_ENABLED = 0x20,
  958. } LSM6DS3_ACC_GYRO_DEN_LVL2_EN_t;
  959. /*******************************************************************************
  960. * Register : CTRL6_G
  961. * Address : 0X15
  962. * Bit Group Name: DEN_LVL_EN
  963. * Permission : RW
  964. *******************************************************************************/
  965. typedef enum {
  966. LSM6DS3_ACC_GYRO_DEN_LVL_EN_DISABLED = 0x00,
  967. LSM6DS3_ACC_GYRO_DEN_LVL_EN_ENABLED = 0x40,
  968. } LSM6DS3_ACC_GYRO_DEN_LVL_EN_t;
  969. /*******************************************************************************
  970. * Register : CTRL6_G
  971. * Address : 0X15
  972. * Bit Group Name: DEN_EDGE_EN
  973. * Permission : RW
  974. *******************************************************************************/
  975. typedef enum {
  976. LSM6DS3_ACC_GYRO_DEN_EDGE_EN_DISABLED = 0x00,
  977. LSM6DS3_ACC_GYRO_DEN_EDGE_EN_ENABLED = 0x80,
  978. } LSM6DS3_ACC_GYRO_DEN_EDGE_EN_t;
  979. /*******************************************************************************
  980. * Register : CTRL7_G
  981. * Address : 0X16
  982. * Bit Group Name: HPM_G
  983. * Permission : RW
  984. *******************************************************************************/
  985. typedef enum {
  986. LSM6DS3_ACC_GYRO_HPM_G_NORMAL_MODE = 0x00,
  987. LSM6DS3_ACC_GYRO_HPM_G_REF_SIGNAL = 0x10,
  988. LSM6DS3_ACC_GYRO_HPM_G_NORMAL_MODE_2 = 0x20,
  989. LSM6DS3_ACC_GYRO_HPM_G_AUTO_RESET_ON_INT = 0x30,
  990. } LSM6DS3_ACC_GYRO_HPM_G_t;
  991. /*******************************************************************************
  992. * Register : CTRL7_G
  993. * Address : 0X16
  994. * Bit Group Name: HP_EN
  995. * Permission : RW
  996. *******************************************************************************/
  997. typedef enum {
  998. LSM6DS3_ACC_GYRO_HP_EN_DISABLED = 0x00,
  999. LSM6DS3_ACC_GYRO_HP_EN_ENABLED = 0x40,
  1000. } LSM6DS3_ACC_GYRO_HP_EN_t;
  1001. /*******************************************************************************
  1002. * Register : CTRL7_G
  1003. * Address : 0X16
  1004. * Bit Group Name: LP_EN
  1005. * Permission : RW
  1006. *******************************************************************************/
  1007. typedef enum {
  1008. LSM6DS3_ACC_GYRO_LP_EN_DISABLED = 0x00,
  1009. LSM6DS3_ACC_GYRO_LP_EN_ENABLED = 0x80,
  1010. } LSM6DS3_ACC_GYRO_LP_EN_t;
  1011. /*******************************************************************************
  1012. * Register : CTRL8_XL
  1013. * Address : 0X17
  1014. * Bit Group Name: FDS
  1015. * Permission : RW
  1016. *******************************************************************************/
  1017. typedef enum {
  1018. LSM6DS3_ACC_GYRO_FDS_FILTER_OFF = 0x00,
  1019. LSM6DS3_ACC_GYRO_FDS_FILTER_ON = 0x04,
  1020. } LSM6DS3_ACC_GYRO_FDS_t;
  1021. /*******************************************************************************
  1022. * Register : CTRL9_XL
  1023. * Address : 0X18
  1024. * Bit Group Name: XEN_XL
  1025. * Permission : RW
  1026. *******************************************************************************/
  1027. typedef enum {
  1028. LSM6DS3_ACC_GYRO_XEN_XL_DISABLED = 0x00,
  1029. LSM6DS3_ACC_GYRO_XEN_XL_ENABLED = 0x08,
  1030. } LSM6DS3_ACC_GYRO_XEN_XL_t;
  1031. /*******************************************************************************
  1032. * Register : CTRL9_XL
  1033. * Address : 0X18
  1034. * Bit Group Name: YEN_XL
  1035. * Permission : RW
  1036. *******************************************************************************/
  1037. typedef enum {
  1038. LSM6DS3_ACC_GYRO_YEN_XL_DISABLED = 0x00,
  1039. LSM6DS3_ACC_GYRO_YEN_XL_ENABLED = 0x10,
  1040. } LSM6DS3_ACC_GYRO_YEN_XL_t;
  1041. /*******************************************************************************
  1042. * Register : CTRL9_XL
  1043. * Address : 0X18
  1044. * Bit Group Name: ZEN_XL
  1045. * Permission : RW
  1046. *******************************************************************************/
  1047. typedef enum {
  1048. LSM6DS3_ACC_GYRO_ZEN_XL_DISABLED = 0x00,
  1049. LSM6DS3_ACC_GYRO_ZEN_XL_ENABLED = 0x20,
  1050. } LSM6DS3_ACC_GYRO_ZEN_XL_t;
  1051. /*******************************************************************************
  1052. * Register : CTRL10_C
  1053. * Address : 0X19
  1054. * Bit Group Name: SIGN_MOTION_EN
  1055. * Permission : RW
  1056. *******************************************************************************/
  1057. typedef enum {
  1058. LSM6DS3_ACC_GYRO_SIGN_MOTION_EN_DISABLED = 0x00,
  1059. LSM6DS3_ACC_GYRO_SIGN_MOTION_EN_ENABLED = 0x01,
  1060. } LSM6DS3_ACC_GYRO_SIGN_MOTION_EN_t;
  1061. /*******************************************************************************
  1062. * Register : CTRL10_C
  1063. * Address : 0X19
  1064. * Bit Group Name: PEDO_RST_STEP
  1065. * Permission : RW
  1066. *******************************************************************************/
  1067. typedef enum {
  1068. LSM6DS3_ACC_GYRO_PEDO_RST_STEP_DISABLED = 0x00,
  1069. LSM6DS3_ACC_GYRO_PEDO_RST_STEP_ENABLED = 0x02,
  1070. } LSM6DS3_ACC_GYRO_PEDO_RST_STEP_t;
  1071. /*******************************************************************************
  1072. * Register : CTRL10_C
  1073. * Address : 0X19
  1074. * Bit Group Name: XEN_G
  1075. * Permission : RW
  1076. *******************************************************************************/
  1077. typedef enum {
  1078. LSM6DS3_ACC_GYRO_XEN_G_DISABLED = 0x00,
  1079. LSM6DS3_ACC_GYRO_XEN_G_ENABLED = 0x08,
  1080. } LSM6DS3_ACC_GYRO_XEN_G_t;
  1081. /*******************************************************************************
  1082. * Register : CTRL10_C
  1083. * Address : 0X19
  1084. * Bit Group Name: YEN_G
  1085. * Permission : RW
  1086. *******************************************************************************/
  1087. typedef enum {
  1088. LSM6DS3_ACC_GYRO_YEN_G_DISABLED = 0x00,
  1089. LSM6DS3_ACC_GYRO_YEN_G_ENABLED = 0x10,
  1090. } LSM6DS3_ACC_GYRO_YEN_G_t;
  1091. /*******************************************************************************
  1092. * Register : CTRL10_C
  1093. * Address : 0X19
  1094. * Bit Group Name: ZEN_G
  1095. * Permission : RW
  1096. *******************************************************************************/
  1097. typedef enum {
  1098. LSM6DS3_ACC_GYRO_ZEN_G_DISABLED = 0x00,
  1099. LSM6DS3_ACC_GYRO_ZEN_G_ENABLED = 0x20,
  1100. } LSM6DS3_ACC_GYRO_ZEN_G_t;
  1101. /*******************************************************************************
  1102. * Register : CTRL10_C
  1103. * Address : 0X19
  1104. * Bit Group Name: FUNC_EN
  1105. * Permission : RW
  1106. *******************************************************************************/
  1107. typedef enum {
  1108. LSM6DS3_ACC_GYRO_FUNC_EN_DISABLED = 0x00,
  1109. LSM6DS3_ACC_GYRO_FUNC_EN_ENABLED = 0x04,
  1110. } LSM6DS3_ACC_GYRO_FUNC_EN_t;
  1111. /*******************************************************************************
  1112. * Register : MASTER_CONFIG
  1113. * Address : 0X1A
  1114. * Bit Group Name: MASTER_ON
  1115. * Permission : RW
  1116. *******************************************************************************/
  1117. typedef enum {
  1118. LSM6DS3_ACC_GYRO_MASTER_ON_DISABLED = 0x00,
  1119. LSM6DS3_ACC_GYRO_MASTER_ON_ENABLED = 0x01,
  1120. } LSM6DS3_ACC_GYRO_MASTER_ON_t;
  1121. /*******************************************************************************
  1122. * Register : MASTER_CONFIG
  1123. * Address : 0X1A
  1124. * Bit Group Name: IRON_EN
  1125. * Permission : RW
  1126. *******************************************************************************/
  1127. typedef enum {
  1128. LSM6DS3_ACC_GYRO_IRON_EN_DISABLED = 0x00,
  1129. LSM6DS3_ACC_GYRO_IRON_EN_ENABLED = 0x02,
  1130. } LSM6DS3_ACC_GYRO_IRON_EN_t;
  1131. /*******************************************************************************
  1132. * Register : MASTER_CONFIG
  1133. * Address : 0X1A
  1134. * Bit Group Name: PASS_THRU_MODE
  1135. * Permission : RW
  1136. *******************************************************************************/
  1137. typedef enum {
  1138. LSM6DS3_ACC_GYRO_PASS_THRU_MODE_DISABLED = 0x00,
  1139. LSM6DS3_ACC_GYRO_PASS_THRU_MODE_ENABLED = 0x04,
  1140. } LSM6DS3_ACC_GYRO_PASS_THRU_MODE_t;
  1141. /*******************************************************************************
  1142. * Register : MASTER_CONFIG
  1143. * Address : 0X1A
  1144. * Bit Group Name: PULL_UP_EN
  1145. * Permission : RW
  1146. *******************************************************************************/
  1147. typedef enum {
  1148. LSM6DS3_ACC_GYRO_PULL_UP_EN_DISABLED = 0x00,
  1149. LSM6DS3_ACC_GYRO_PULL_UP_EN_ENABLED = 0x08,
  1150. } LSM6DS3_ACC_GYRO_PULL_UP_EN_t;
  1151. /*******************************************************************************
  1152. * Register : MASTER_CONFIG
  1153. * Address : 0X1A
  1154. * Bit Group Name: START_CONFIG
  1155. * Permission : RW
  1156. *******************************************************************************/
  1157. typedef enum {
  1158. LSM6DS3_ACC_GYRO_START_CONFIG_XL_G_DRDY = 0x00,
  1159. LSM6DS3_ACC_GYRO_START_CONFIG_EXT_INT2 = 0x10,
  1160. } LSM6DS3_ACC_GYRO_START_CONFIG_t;
  1161. /*******************************************************************************
  1162. * Register : MASTER_CONFIG
  1163. * Address : 0X1A
  1164. * Bit Group Name: DATA_VAL_SEL_FIFO
  1165. * Permission : RW
  1166. *******************************************************************************/
  1167. typedef enum {
  1168. LSM6DS3_ACC_GYRO_DATA_VAL_SEL_FIFO_XL_G_DRDY = 0x00,
  1169. LSM6DS3_ACC_GYRO_DATA_VAL_SEL_FIFO_SHUB_DRDY = 0x40,
  1170. } LSM6DS3_ACC_GYRO_DATA_VAL_SEL_FIFO_t;
  1171. /*******************************************************************************
  1172. * Register : MASTER_CONFIG
  1173. * Address : 0X1A
  1174. * Bit Group Name: DRDY_ON_INT1
  1175. * Permission : RW
  1176. *******************************************************************************/
  1177. typedef enum {
  1178. LSM6DS3_ACC_GYRO_DRDY_ON_INT1_DISABLED = 0x00,
  1179. LSM6DS3_ACC_GYRO_DRDY_ON_INT1_ENABLED = 0x80,
  1180. } LSM6DS3_ACC_GYRO_DRDY_ON_INT1_t;
  1181. /*******************************************************************************
  1182. * Register : WAKE_UP_SRC
  1183. * Address : 0X1B
  1184. * Bit Group Name: Z_WU
  1185. * Permission : RO
  1186. *******************************************************************************/
  1187. typedef enum {
  1188. LSM6DS3_ACC_GYRO_Z_WU_NOT_DETECTED = 0x00,
  1189. LSM6DS3_ACC_GYRO_Z_WU_DETECTED = 0x01,
  1190. } LSM6DS3_ACC_GYRO_Z_WU_t;
  1191. /*******************************************************************************
  1192. * Register : WAKE_UP_SRC
  1193. * Address : 0X1B
  1194. * Bit Group Name: Y_WU
  1195. * Permission : RO
  1196. *******************************************************************************/
  1197. typedef enum {
  1198. LSM6DS3_ACC_GYRO_Y_WU_NOT_DETECTED = 0x00,
  1199. LSM6DS3_ACC_GYRO_Y_WU_DETECTED = 0x02,
  1200. } LSM6DS3_ACC_GYRO_Y_WU_t;
  1201. /*******************************************************************************
  1202. * Register : WAKE_UP_SRC
  1203. * Address : 0X1B
  1204. * Bit Group Name: X_WU
  1205. * Permission : RO
  1206. *******************************************************************************/
  1207. typedef enum {
  1208. LSM6DS3_ACC_GYRO_X_WU_NOT_DETECTED = 0x00,
  1209. LSM6DS3_ACC_GYRO_X_WU_DETECTED = 0x04,
  1210. } LSM6DS3_ACC_GYRO_X_WU_t;
  1211. /*******************************************************************************
  1212. * Register : WAKE_UP_SRC
  1213. * Address : 0X1B
  1214. * Bit Group Name: WU_EV_STATUS
  1215. * Permission : RO
  1216. *******************************************************************************/
  1217. typedef enum {
  1218. LSM6DS3_ACC_GYRO_WU_EV_STATUS_NOT_DETECTED = 0x00,
  1219. LSM6DS3_ACC_GYRO_WU_EV_STATUS_DETECTED = 0x08,
  1220. } LSM6DS3_ACC_GYRO_WU_EV_STATUS_t;
  1221. /*******************************************************************************
  1222. * Register : WAKE_UP_SRC
  1223. * Address : 0X1B
  1224. * Bit Group Name: SLEEP_EV_STATUS
  1225. * Permission : RO
  1226. *******************************************************************************/
  1227. typedef enum {
  1228. LSM6DS3_ACC_GYRO_SLEEP_EV_STATUS_NOT_DETECTED = 0x00,
  1229. LSM6DS3_ACC_GYRO_SLEEP_EV_STATUS_DETECTED = 0x10,
  1230. } LSM6DS3_ACC_GYRO_SLEEP_EV_STATUS_t;
  1231. /*******************************************************************************
  1232. * Register : WAKE_UP_SRC
  1233. * Address : 0X1B
  1234. * Bit Group Name: FF_EV_STATUS
  1235. * Permission : RO
  1236. *******************************************************************************/
  1237. typedef enum {
  1238. LSM6DS3_ACC_GYRO_FF_EV_STATUS_NOT_DETECTED = 0x00,
  1239. LSM6DS3_ACC_GYRO_FF_EV_STATUS_DETECTED = 0x20,
  1240. } LSM6DS3_ACC_GYRO_FF_EV_STATUS_t;
  1241. /*******************************************************************************
  1242. * Register : TAP_SRC
  1243. * Address : 0X1C
  1244. * Bit Group Name: Z_TAP
  1245. * Permission : RO
  1246. *******************************************************************************/
  1247. typedef enum {
  1248. LSM6DS3_ACC_GYRO_Z_TAP_NOT_DETECTED = 0x00,
  1249. LSM6DS3_ACC_GYRO_Z_TAP_DETECTED = 0x01,
  1250. } LSM6DS3_ACC_GYRO_Z_TAP_t;
  1251. /*******************************************************************************
  1252. * Register : TAP_SRC
  1253. * Address : 0X1C
  1254. * Bit Group Name: Y_TAP
  1255. * Permission : RO
  1256. *******************************************************************************/
  1257. typedef enum {
  1258. LSM6DS3_ACC_GYRO_Y_TAP_NOT_DETECTED = 0x00,
  1259. LSM6DS3_ACC_GYRO_Y_TAP_DETECTED = 0x02,
  1260. } LSM6DS3_ACC_GYRO_Y_TAP_t;
  1261. /*******************************************************************************
  1262. * Register : TAP_SRC
  1263. * Address : 0X1C
  1264. * Bit Group Name: X_TAP
  1265. * Permission : RO
  1266. *******************************************************************************/
  1267. typedef enum {
  1268. LSM6DS3_ACC_GYRO_X_TAP_NOT_DETECTED = 0x00,
  1269. LSM6DS3_ACC_GYRO_X_TAP_DETECTED = 0x04,
  1270. } LSM6DS3_ACC_GYRO_X_TAP_t;
  1271. /*******************************************************************************
  1272. * Register : TAP_SRC
  1273. * Address : 0X1C
  1274. * Bit Group Name: TAP_SIGN
  1275. * Permission : RO
  1276. *******************************************************************************/
  1277. typedef enum {
  1278. LSM6DS3_ACC_GYRO_TAP_SIGN_POS_SIGN = 0x00,
  1279. LSM6DS3_ACC_GYRO_TAP_SIGN_NEG_SIGN = 0x08,
  1280. } LSM6DS3_ACC_GYRO_TAP_SIGN_t;
  1281. /*******************************************************************************
  1282. * Register : TAP_SRC
  1283. * Address : 0X1C
  1284. * Bit Group Name: DOUBLE_TAP_EV_STATUS
  1285. * Permission : RO
  1286. *******************************************************************************/
  1287. typedef enum {
  1288. LSM6DS3_ACC_GYRO_DOUBLE_TAP_EV_STATUS_NOT_DETECTED = 0x00,
  1289. LSM6DS3_ACC_GYRO_DOUBLE_TAP_EV_STATUS_DETECTED = 0x10,
  1290. } LSM6DS3_ACC_GYRO_DOUBLE_TAP_EV_STATUS_t;
  1291. /*******************************************************************************
  1292. * Register : TAP_SRC
  1293. * Address : 0X1C
  1294. * Bit Group Name: SINGLE_TAP_EV_STATUS
  1295. * Permission : RO
  1296. *******************************************************************************/
  1297. typedef enum {
  1298. LSM6DS3_ACC_GYRO_SINGLE_TAP_EV_STATUS_NOT_DETECTED = 0x00,
  1299. LSM6DS3_ACC_GYRO_SINGLE_TAP_EV_STATUS_DETECTED = 0x20,
  1300. } LSM6DS3_ACC_GYRO_SINGLE_TAP_EV_STATUS_t;
  1301. /*******************************************************************************
  1302. * Register : TAP_SRC
  1303. * Address : 0X1C
  1304. * Bit Group Name: TAP_EV_STATUS
  1305. * Permission : RO
  1306. *******************************************************************************/
  1307. typedef enum {
  1308. LSM6DS3_ACC_GYRO_TAP_EV_STATUS_NOT_DETECTED = 0x00,
  1309. LSM6DS3_ACC_GYRO_TAP_EV_STATUS_DETECTED = 0x40,
  1310. } LSM6DS3_ACC_GYRO_TAP_EV_STATUS_t;
  1311. /*******************************************************************************
  1312. * Register : D6D_SRC
  1313. * Address : 0X1D
  1314. * Bit Group Name: DSD_XL
  1315. * Permission : RO
  1316. *******************************************************************************/
  1317. typedef enum {
  1318. LSM6DS3_ACC_GYRO_DSD_XL_NOT_DETECTED = 0x00,
  1319. LSM6DS3_ACC_GYRO_DSD_XL_DETECTED = 0x01,
  1320. } LSM6DS3_ACC_GYRO_DSD_XL_t;
  1321. /*******************************************************************************
  1322. * Register : D6D_SRC
  1323. * Address : 0X1D
  1324. * Bit Group Name: DSD_XH
  1325. * Permission : RO
  1326. *******************************************************************************/
  1327. typedef enum {
  1328. LSM6DS3_ACC_GYRO_DSD_XH_NOT_DETECTED = 0x00,
  1329. LSM6DS3_ACC_GYRO_DSD_XH_DETECTED = 0x02,
  1330. } LSM6DS3_ACC_GYRO_DSD_XH_t;
  1331. /*******************************************************************************
  1332. * Register : D6D_SRC
  1333. * Address : 0X1D
  1334. * Bit Group Name: DSD_YL
  1335. * Permission : RO
  1336. *******************************************************************************/
  1337. typedef enum {
  1338. LSM6DS3_ACC_GYRO_DSD_YL_NOT_DETECTED = 0x00,
  1339. LSM6DS3_ACC_GYRO_DSD_YL_DETECTED = 0x04,
  1340. } LSM6DS3_ACC_GYRO_DSD_YL_t;
  1341. /*******************************************************************************
  1342. * Register : D6D_SRC
  1343. * Address : 0X1D
  1344. * Bit Group Name: DSD_YH
  1345. * Permission : RO
  1346. *******************************************************************************/
  1347. typedef enum {
  1348. LSM6DS3_ACC_GYRO_DSD_YH_NOT_DETECTED = 0x00,
  1349. LSM6DS3_ACC_GYRO_DSD_YH_DETECTED = 0x08,
  1350. } LSM6DS3_ACC_GYRO_DSD_YH_t;
  1351. /*******************************************************************************
  1352. * Register : D6D_SRC
  1353. * Address : 0X1D
  1354. * Bit Group Name: DSD_ZL
  1355. * Permission : RO
  1356. *******************************************************************************/
  1357. typedef enum {
  1358. LSM6DS3_ACC_GYRO_DSD_ZL_NOT_DETECTED = 0x00,
  1359. LSM6DS3_ACC_GYRO_DSD_ZL_DETECTED = 0x10,
  1360. } LSM6DS3_ACC_GYRO_DSD_ZL_t;
  1361. /*******************************************************************************
  1362. * Register : D6D_SRC
  1363. * Address : 0X1D
  1364. * Bit Group Name: DSD_ZH
  1365. * Permission : RO
  1366. *******************************************************************************/
  1367. typedef enum {
  1368. LSM6DS3_ACC_GYRO_DSD_ZH_NOT_DETECTED = 0x00,
  1369. LSM6DS3_ACC_GYRO_DSD_ZH_DETECTED = 0x20,
  1370. } LSM6DS3_ACC_GYRO_DSD_ZH_t;
  1371. /*******************************************************************************
  1372. * Register : D6D_SRC
  1373. * Address : 0X1D
  1374. * Bit Group Name: D6D_EV_STATUS
  1375. * Permission : RO
  1376. *******************************************************************************/
  1377. typedef enum {
  1378. LSM6DS3_ACC_GYRO_D6D_EV_STATUS_NOT_DETECTED = 0x00,
  1379. LSM6DS3_ACC_GYRO_D6D_EV_STATUS_DETECTED = 0x40,
  1380. } LSM6DS3_ACC_GYRO_D6D_EV_STATUS_t;
  1381. /*******************************************************************************
  1382. * Register : STATUS_REG
  1383. * Address : 0X1E
  1384. * Bit Group Name: XLDA
  1385. * Permission : RO
  1386. *******************************************************************************/
  1387. typedef enum {
  1388. LSM6DS3_ACC_GYRO_XLDA_NO_DATA_AVAIL = 0x00,
  1389. LSM6DS3_ACC_GYRO_XLDA_DATA_AVAIL = 0x01,
  1390. } LSM6DS3_ACC_GYRO_XLDA_t;
  1391. /*******************************************************************************
  1392. * Register : STATUS_REG
  1393. * Address : 0X1E
  1394. * Bit Group Name: GDA
  1395. * Permission : RO
  1396. *******************************************************************************/
  1397. typedef enum {
  1398. LSM6DS3_ACC_GYRO_GDA_NO_DATA_AVAIL = 0x00,
  1399. LSM6DS3_ACC_GYRO_GDA_DATA_AVAIL = 0x02,
  1400. } LSM6DS3_ACC_GYRO_GDA_t;
  1401. /*******************************************************************************
  1402. * Register : STATUS_REG
  1403. * Address : 0X1E
  1404. * Bit Group Name: EV_BOOT
  1405. * Permission : RO
  1406. *******************************************************************************/
  1407. typedef enum {
  1408. LSM6DS3_ACC_GYRO_EV_BOOT_NO_BOOT_RUNNING = 0x00,
  1409. LSM6DS3_ACC_GYRO_EV_BOOT_BOOT_IS_RUNNING = 0x08,
  1410. } LSM6DS3_ACC_GYRO_EV_BOOT_t;
  1411. /*******************************************************************************
  1412. * Register : FIFO_STATUS1
  1413. * Address : 0X3A
  1414. * Bit Group Name: DIFF_FIFO
  1415. * Permission : RO
  1416. *******************************************************************************/
  1417. #define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS1_MASK 0xFF
  1418. #define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS1_POSITION 0
  1419. #define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS2_MASK 0xF
  1420. #define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS2_POSITION 0
  1421. /*******************************************************************************
  1422. * Register : FIFO_STATUS2
  1423. * Address : 0X3B
  1424. * Bit Group Name: FIFO_EMPTY
  1425. * Permission : RO
  1426. *******************************************************************************/
  1427. typedef enum {
  1428. LSM6DS3_ACC_GYRO_FIFO_EMPTY_FIFO_NOT_EMPTY = 0x00,
  1429. LSM6DS3_ACC_GYRO_FIFO_EMPTY_FIFO_EMPTY = 0x10,
  1430. } LSM6DS3_ACC_GYRO_FIFO_EMPTY_t;
  1431. /*******************************************************************************
  1432. * Register : FIFO_STATUS2
  1433. * Address : 0X3B
  1434. * Bit Group Name: FIFO_FULL
  1435. * Permission : RO
  1436. *******************************************************************************/
  1437. typedef enum {
  1438. LSM6DS3_ACC_GYRO_FIFO_FULL_FIFO_NOT_FULL = 0x00,
  1439. LSM6DS3_ACC_GYRO_FIFO_FULL_FIFO_FULL = 0x20,
  1440. } LSM6DS3_ACC_GYRO_FIFO_FULL_t;
  1441. /*******************************************************************************
  1442. * Register : FIFO_STATUS2
  1443. * Address : 0X3B
  1444. * Bit Group Name: OVERRUN
  1445. * Permission : RO
  1446. *******************************************************************************/
  1447. typedef enum {
  1448. LSM6DS3_ACC_GYRO_OVERRUN_NO_OVERRUN = 0x00,
  1449. LSM6DS3_ACC_GYRO_OVERRUN_OVERRUN = 0x40,
  1450. } LSM6DS3_ACC_GYRO_OVERRUN_t;
  1451. /*******************************************************************************
  1452. * Register : FIFO_STATUS2
  1453. * Address : 0X3B
  1454. * Bit Group Name: WTM
  1455. * Permission : RO
  1456. *******************************************************************************/
  1457. typedef enum {
  1458. LSM6DS3_ACC_GYRO_WTM_BELOW_WTM = 0x00,
  1459. LSM6DS3_ACC_GYRO_WTM_ABOVE_OR_EQUAL_WTM = 0x80,
  1460. } LSM6DS3_ACC_GYRO_WTM_t;
  1461. /*******************************************************************************
  1462. * Register : FIFO_STATUS3
  1463. * Address : 0X3C
  1464. * Bit Group Name: FIFO_PATTERN
  1465. * Permission : RO
  1466. *******************************************************************************/
  1467. #define LSM6DS3_ACC_GYRO_FIFO_STATUS3_PATTERN_MASK 0xFF
  1468. #define LSM6DS3_ACC_GYRO_FIFO_STATUS3_PATTERN_POSITION 0
  1469. #define LSM6DS3_ACC_GYRO_FIFO_STATUS4_PATTERN_MASK 0x03
  1470. #define LSM6DS3_ACC_GYRO_FIFO_STATUS4_PATTERN_POSITION 0
  1471. /*******************************************************************************
  1472. * Register : FUNC_SRC
  1473. * Address : 0X53
  1474. * Bit Group Name: SENS_HUB_END
  1475. * Permission : RO
  1476. *******************************************************************************/
  1477. typedef enum {
  1478. LSM6DS3_ACC_GYRO_SENS_HUB_END_STILL_ONGOING = 0x00,
  1479. LSM6DS3_ACC_GYRO_SENS_HUB_END_OP_COMPLETED = 0x01,
  1480. } LSM6DS3_ACC_GYRO_SENS_HUB_END_t;
  1481. /*******************************************************************************
  1482. * Register : FUNC_SRC
  1483. * Address : 0X53
  1484. * Bit Group Name: SOFT_IRON_END
  1485. * Permission : RO
  1486. *******************************************************************************/
  1487. typedef enum {
  1488. LSM6DS3_ACC_GYRO_SOFT_IRON_END_NOT_COMPLETED = 0x00,
  1489. LSM6DS3_ACC_GYRO_SOFT_IRON_END_COMPLETED = 0x02,
  1490. } LSM6DS3_ACC_GYRO_SOFT_IRON_END_t;
  1491. /*******************************************************************************
  1492. * Register : FUNC_SRC
  1493. * Address : 0X53
  1494. * Bit Group Name: PEDO_EV_STATUS
  1495. * Permission : RO
  1496. *******************************************************************************/
  1497. typedef enum {
  1498. LSM6DS3_ACC_GYRO_PEDO_EV_STATUS_NOT_DETECTED = 0x00,
  1499. LSM6DS3_ACC_GYRO_PEDO_EV_STATUS_DETECTED = 0x10,
  1500. } LSM6DS3_ACC_GYRO_PEDO_EV_STATUS_t;
  1501. /*******************************************************************************
  1502. * Register : FUNC_SRC
  1503. * Address : 0X53
  1504. * Bit Group Name: TILT_EV_STATUS
  1505. * Permission : RO
  1506. *******************************************************************************/
  1507. typedef enum {
  1508. LSM6DS3_ACC_GYRO_TILT_EV_STATUS_NOT_DETECTED = 0x00,
  1509. LSM6DS3_ACC_GYRO_TILT_EV_STATUS_DETECTED = 0x20,
  1510. } LSM6DS3_ACC_GYRO_TILT_EV_STATUS_t;
  1511. /*******************************************************************************
  1512. * Register : FUNC_SRC
  1513. * Address : 0X53
  1514. * Bit Group Name: SIGN_MOT_EV_STATUS
  1515. * Permission : RO
  1516. *******************************************************************************/
  1517. typedef enum {
  1518. LSM6DS3_ACC_GYRO_SIGN_MOT_EV_STATUS_NOT_DETECTED = 0x00,
  1519. LSM6DS3_ACC_GYRO_SIGN_MOT_EV_STATUS_DETECTED = 0x40,
  1520. } LSM6DS3_ACC_GYRO_SIGN_MOT_EV_STATUS_t;
  1521. /*******************************************************************************
  1522. * Register : TAP_CFG1
  1523. * Address : 0X58
  1524. * Bit Group Name: LIR
  1525. * Permission : RW
  1526. *******************************************************************************/
  1527. typedef enum {
  1528. LSM6DS3_ACC_GYRO_LIR_DISABLED = 0x00,
  1529. LSM6DS3_ACC_GYRO_LIR_ENABLED = 0x01,
  1530. } LSM6DS3_ACC_GYRO_LIR_t;
  1531. /*******************************************************************************
  1532. * Register : TAP_CFG1
  1533. * Address : 0X58
  1534. * Bit Group Name: TAP_Z_EN
  1535. * Permission : RW
  1536. *******************************************************************************/
  1537. typedef enum {
  1538. LSM6DS3_ACC_GYRO_TAP_Z_EN_DISABLED = 0x00,
  1539. LSM6DS3_ACC_GYRO_TAP_Z_EN_ENABLED = 0x02,
  1540. } LSM6DS3_ACC_GYRO_TAP_Z_EN_t;
  1541. /*******************************************************************************
  1542. * Register : TAP_CFG1
  1543. * Address : 0X58
  1544. * Bit Group Name: TAP_Y_EN
  1545. * Permission : RW
  1546. *******************************************************************************/
  1547. typedef enum {
  1548. LSM6DS3_ACC_GYRO_TAP_Y_EN_DISABLED = 0x00,
  1549. LSM6DS3_ACC_GYRO_TAP_Y_EN_ENABLED = 0x04,
  1550. } LSM6DS3_ACC_GYRO_TAP_Y_EN_t;
  1551. /*******************************************************************************
  1552. * Register : TAP_CFG1
  1553. * Address : 0X58
  1554. * Bit Group Name: TAP_X_EN
  1555. * Permission : RW
  1556. *******************************************************************************/
  1557. typedef enum {
  1558. LSM6DS3_ACC_GYRO_TAP_X_EN_DISABLED = 0x00,
  1559. LSM6DS3_ACC_GYRO_TAP_X_EN_ENABLED = 0x08,
  1560. } LSM6DS3_ACC_GYRO_TAP_X_EN_t;
  1561. /*******************************************************************************
  1562. * Register : TAP_CFG1
  1563. * Address : 0X58
  1564. * Bit Group Name: TILT_EN
  1565. * Permission : RW
  1566. *******************************************************************************/
  1567. typedef enum {
  1568. LSM6DS3_ACC_GYRO_TILT_EN_DISABLED = 0x00,
  1569. LSM6DS3_ACC_GYRO_TILT_EN_ENABLED = 0x20,
  1570. } LSM6DS3_ACC_GYRO_TILT_EN_t;
  1571. /*******************************************************************************
  1572. * Register : TAP_CFG1
  1573. * Address : 0X58
  1574. * Bit Group Name: PEDO_EN
  1575. * Permission : RW
  1576. *******************************************************************************/
  1577. typedef enum {
  1578. LSM6DS3_ACC_GYRO_PEDO_EN_DISABLED = 0x00,
  1579. LSM6DS3_ACC_GYRO_PEDO_EN_ENABLED = 0x40,
  1580. } LSM6DS3_ACC_GYRO_PEDO_EN_t;
  1581. /*******************************************************************************
  1582. * Register : TAP_CFG1
  1583. * Address : 0X58
  1584. * Bit Group Name: TIMER_EN
  1585. * Permission : RW
  1586. *******************************************************************************/
  1587. typedef enum {
  1588. LSM6DS3_ACC_GYRO_TIMER_EN_DISABLED = 0x00,
  1589. LSM6DS3_ACC_GYRO_TIMER_EN_ENABLED = 0x80,
  1590. } LSM6DS3_ACC_GYRO_TIMER_EN_t;
  1591. /*******************************************************************************
  1592. * Register : TAP_THS_6D
  1593. * Address : 0X59
  1594. * Bit Group Name: TAP_THS
  1595. * Permission : RW
  1596. *******************************************************************************/
  1597. #define LSM6DS3_ACC_GYRO_TAP_THS_MASK 0x1F
  1598. #define LSM6DS3_ACC_GYRO_TAP_THS_POSITION 0
  1599. /*******************************************************************************
  1600. * Register : TAP_THS_6D
  1601. * Address : 0X59
  1602. * Bit Group Name: SIXD_THS
  1603. * Permission : RW
  1604. *******************************************************************************/
  1605. typedef enum {
  1606. LSM6DS3_ACC_GYRO_SIXD_THS_80_degree = 0x00,
  1607. LSM6DS3_ACC_GYRO_SIXD_THS_70_degree = 0x20,
  1608. LSM6DS3_ACC_GYRO_SIXD_THS_60_degree = 0x40,
  1609. LSM6DS3_ACC_GYRO_SIXD_THS_50_degree = 0x60,
  1610. } LSM6DS3_ACC_GYRO_SIXD_THS_t;
  1611. /*******************************************************************************
  1612. * Register : INT_DUR2
  1613. * Address : 0X5A
  1614. * Bit Group Name: SHOCK
  1615. * Permission : RW
  1616. *******************************************************************************/
  1617. #define LSM6DS3_ACC_GYRO_SHOCK_MASK 0x03
  1618. #define LSM6DS3_ACC_GYRO_SHOCK_POSITION 0
  1619. /*******************************************************************************
  1620. * Register : INT_DUR2
  1621. * Address : 0X5A
  1622. * Bit Group Name: QUIET
  1623. * Permission : RW
  1624. *******************************************************************************/
  1625. #define LSM6DS3_ACC_GYRO_QUIET_MASK 0x0C
  1626. #define LSM6DS3_ACC_GYRO_QUIET_POSITION 2
  1627. /*******************************************************************************
  1628. * Register : INT_DUR2
  1629. * Address : 0X5A
  1630. * Bit Group Name: DUR
  1631. * Permission : RW
  1632. *******************************************************************************/
  1633. #define LSM6DS3_ACC_GYRO_DUR_MASK 0xF0
  1634. #define LSM6DS3_ACC_GYRO_DUR_POSITION 4
  1635. /*******************************************************************************
  1636. * Register : WAKE_UP_THS
  1637. * Address : 0X5B
  1638. * Bit Group Name: WK_THS
  1639. * Permission : RW
  1640. *******************************************************************************/
  1641. #define LSM6DS3_ACC_GYRO_WK_THS_MASK 0x3F
  1642. #define LSM6DS3_ACC_GYRO_WK_THS_POSITION 0
  1643. /*******************************************************************************
  1644. * Register : WAKE_UP_THS
  1645. * Address : 0X5B
  1646. * Bit Group Name: INACTIVITY_ON
  1647. * Permission : RW
  1648. *******************************************************************************/
  1649. typedef enum {
  1650. LSM6DS3_ACC_GYRO_INACTIVITY_ON_DISABLED = 0x00,
  1651. LSM6DS3_ACC_GYRO_INACTIVITY_ON_ENABLED = 0x40,
  1652. } LSM6DS3_ACC_GYRO_INACTIVITY_ON_t;
  1653. /*******************************************************************************
  1654. * Register : WAKE_UP_THS
  1655. * Address : 0X5B
  1656. * Bit Group Name: SINGLE_DOUBLE_TAP
  1657. * Permission : RW
  1658. *******************************************************************************/
  1659. typedef enum {
  1660. LSM6DS3_ACC_GYRO_SINGLE_DOUBLE_TAP_DOUBLE_TAP = 0x00,
  1661. LSM6DS3_ACC_GYRO_SINGLE_DOUBLE_TAP_SINGLE_TAP = 0x80,
  1662. } LSM6DS3_ACC_GYRO_SINGLE_DOUBLE_TAP_t;
  1663. /*******************************************************************************
  1664. * Register : WAKE_UP_DUR
  1665. * Address : 0X5C
  1666. * Bit Group Name: SLEEP_DUR
  1667. * Permission : RW
  1668. *******************************************************************************/
  1669. #define LSM6DS3_ACC_GYRO_SLEEP_DUR_MASK 0x0F
  1670. #define LSM6DS3_ACC_GYRO_SLEEP_DUR_POSITION 0
  1671. /*******************************************************************************
  1672. * Register : WAKE_UP_DUR
  1673. * Address : 0X5C
  1674. * Bit Group Name: TIMER_HR
  1675. * Permission : RW
  1676. *******************************************************************************/
  1677. typedef enum {
  1678. LSM6DS3_ACC_GYRO_TIMER_HR_6_4ms = 0x00,
  1679. LSM6DS3_ACC_GYRO_TIMER_HR_25us = 0x10,
  1680. } LSM6DS3_ACC_GYRO_TIMER_HR_t;
  1681. /*******************************************************************************
  1682. * Register : WAKE_UP_DUR
  1683. * Address : 0X5C
  1684. * Bit Group Name: WAKE_DUR
  1685. * Permission : RW
  1686. *******************************************************************************/
  1687. #define LSM6DS3_ACC_GYRO_WAKE_DUR_MASK 0x60
  1688. #define LSM6DS3_ACC_GYRO_WAKE_DUR_POSITION 5
  1689. /*******************************************************************************
  1690. * Register : FREE_FALL
  1691. * Address : 0X5D
  1692. * Bit Group Name: FF_DUR
  1693. * Permission : RW
  1694. *******************************************************************************/
  1695. #define LSM6DS3_ACC_GYRO_FF_FREE_FALL_DUR_MASK 0xF8
  1696. #define LSM6DS3_ACC_GYRO_FF_FREE_FALL_DUR_POSITION 3
  1697. #define LSM6DS3_ACC_GYRO_FF_WAKE_UP_DUR_MASK 0x80
  1698. #define LSM6DS3_ACC_GYRO_FF_WAKE_UP_DUR_POSITION 7
  1699. /*******************************************************************************
  1700. * Register : FREE_FALL
  1701. * Address : 0X5D
  1702. * Bit Group Name: FF_THS
  1703. * Permission : RW
  1704. *******************************************************************************/
  1705. typedef enum {
  1706. LSM6DS3_ACC_GYRO_FF_THS_5 = 0x00,
  1707. LSM6DS3_ACC_GYRO_FF_THS_7 = 0x01,
  1708. LSM6DS3_ACC_GYRO_FF_THS_8 = 0x02,
  1709. LSM6DS3_ACC_GYRO_FF_THS_10 = 0x03,
  1710. LSM6DS3_ACC_GYRO_FF_THS_11 = 0x04,
  1711. LSM6DS3_ACC_GYRO_FF_THS_13 = 0x05,
  1712. LSM6DS3_ACC_GYRO_FF_THS_15 = 0x06,
  1713. LSM6DS3_ACC_GYRO_FF_THS_16 = 0x07,
  1714. } LSM6DS3_ACC_GYRO_FF_THS_t;
  1715. /*******************************************************************************
  1716. * Register : MD1_CFG
  1717. * Address : 0X5E
  1718. * Bit Group Name: INT1_TIMER
  1719. * Permission : RW
  1720. *******************************************************************************/
  1721. typedef enum {
  1722. LSM6DS3_ACC_GYRO_INT1_TIMER_DISABLED = 0x00,
  1723. LSM6DS3_ACC_GYRO_INT1_TIMER_ENABLED = 0x01,
  1724. } LSM6DS3_ACC_GYRO_INT1_TIMER_t;
  1725. /*******************************************************************************
  1726. * Register : MD1_CFG
  1727. * Address : 0X5E
  1728. * Bit Group Name: INT1_TILT
  1729. * Permission : RW
  1730. *******************************************************************************/
  1731. typedef enum {
  1732. LSM6DS3_ACC_GYRO_INT1_TILT_DISABLED = 0x00,
  1733. LSM6DS3_ACC_GYRO_INT1_TILT_ENABLED = 0x02,
  1734. } LSM6DS3_ACC_GYRO_INT1_TILT_t;
  1735. /*******************************************************************************
  1736. * Register : MD1_CFG
  1737. * Address : 0X5E
  1738. * Bit Group Name: INT1_6D
  1739. * Permission : RW
  1740. *******************************************************************************/
  1741. typedef enum {
  1742. LSM6DS3_ACC_GYRO_INT1_6D_DISABLED = 0x00,
  1743. LSM6DS3_ACC_GYRO_INT1_6D_ENABLED = 0x04,
  1744. } LSM6DS3_ACC_GYRO_INT1_6D_t;
  1745. /*******************************************************************************
  1746. * Register : MD1_CFG
  1747. * Address : 0X5E
  1748. * Bit Group Name: INT1_TAP
  1749. * Permission : RW
  1750. *******************************************************************************/
  1751. typedef enum {
  1752. LSM6DS3_ACC_GYRO_INT1_TAP_DISABLED = 0x00,
  1753. LSM6DS3_ACC_GYRO_INT1_TAP_ENABLED = 0x08,
  1754. } LSM6DS3_ACC_GYRO_INT1_TAP_t;
  1755. /*******************************************************************************
  1756. * Register : MD1_CFG
  1757. * Address : 0X5E
  1758. * Bit Group Name: INT1_FF
  1759. * Permission : RW
  1760. *******************************************************************************/
  1761. typedef enum {
  1762. LSM6DS3_ACC_GYRO_INT1_FF_DISABLED = 0x00,
  1763. LSM6DS3_ACC_GYRO_INT1_FF_ENABLED = 0x10,
  1764. } LSM6DS3_ACC_GYRO_INT1_FF_t;
  1765. /*******************************************************************************
  1766. * Register : MD1_CFG
  1767. * Address : 0X5E
  1768. * Bit Group Name: INT1_WU
  1769. * Permission : RW
  1770. *******************************************************************************/
  1771. typedef enum {
  1772. LSM6DS3_ACC_GYRO_INT1_WU_DISABLED = 0x00,
  1773. LSM6DS3_ACC_GYRO_INT1_WU_ENABLED = 0x20,
  1774. } LSM6DS3_ACC_GYRO_INT1_WU_t;
  1775. /*******************************************************************************
  1776. * Register : MD1_CFG
  1777. * Address : 0X5E
  1778. * Bit Group Name: INT1_SINGLE_TAP
  1779. * Permission : RW
  1780. *******************************************************************************/
  1781. typedef enum {
  1782. LSM6DS3_ACC_GYRO_INT1_SINGLE_TAP_DISABLED = 0x00,
  1783. LSM6DS3_ACC_GYRO_INT1_SINGLE_TAP_ENABLED = 0x40,
  1784. } LSM6DS3_ACC_GYRO_INT1_SINGLE_TAP_t;
  1785. /*******************************************************************************
  1786. * Register : MD1_CFG
  1787. * Address : 0X5E
  1788. * Bit Group Name: INT1_SLEEP
  1789. * Permission : RW
  1790. *******************************************************************************/
  1791. typedef enum {
  1792. LSM6DS3_ACC_GYRO_INT1_SLEEP_DISABLED = 0x00,
  1793. LSM6DS3_ACC_GYRO_INT1_SLEEP_ENABLED = 0x80,
  1794. } LSM6DS3_ACC_GYRO_INT1_SLEEP_t;
  1795. /*******************************************************************************
  1796. * Register : MD2_CFG
  1797. * Address : 0X5F
  1798. * Bit Group Name: INT2_TIMER
  1799. * Permission : RW
  1800. *******************************************************************************/
  1801. typedef enum {
  1802. LSM6DS3_ACC_GYRO_INT2_TIMER_DISABLED = 0x00,
  1803. LSM6DS3_ACC_GYRO_INT2_TIMER_ENABLED = 0x01,
  1804. } LSM6DS3_ACC_GYRO_INT2_TIMER_t;
  1805. /*******************************************************************************
  1806. * Register : MD2_CFG
  1807. * Address : 0X5F
  1808. * Bit Group Name: INT2_TILT
  1809. * Permission : RW
  1810. *******************************************************************************/
  1811. typedef enum {
  1812. LSM6DS3_ACC_GYRO_INT2_TILT_DISABLED = 0x00,
  1813. LSM6DS3_ACC_GYRO_INT2_TILT_ENABLED = 0x02,
  1814. } LSM6DS3_ACC_GYRO_INT2_TILT_t;
  1815. /*******************************************************************************
  1816. * Register : MD2_CFG
  1817. * Address : 0X5F
  1818. * Bit Group Name: INT2_6D
  1819. * Permission : RW
  1820. *******************************************************************************/
  1821. typedef enum {
  1822. LSM6DS3_ACC_GYRO_INT2_6D_DISABLED = 0x00,
  1823. LSM6DS3_ACC_GYRO_INT2_6D_ENABLED = 0x04,
  1824. } LSM6DS3_ACC_GYRO_INT2_6D_t;
  1825. /*******************************************************************************
  1826. * Register : MD2_CFG
  1827. * Address : 0X5F
  1828. * Bit Group Name: INT2_TAP
  1829. * Permission : RW
  1830. *******************************************************************************/
  1831. typedef enum {
  1832. LSM6DS3_ACC_GYRO_INT2_TAP_DISABLED = 0x00,
  1833. LSM6DS3_ACC_GYRO_INT2_TAP_ENABLED = 0x08,
  1834. } LSM6DS3_ACC_GYRO_INT2_TAP_t;
  1835. /*******************************************************************************
  1836. * Register : MD2_CFG
  1837. * Address : 0X5F
  1838. * Bit Group Name: INT2_FF
  1839. * Permission : RW
  1840. *******************************************************************************/
  1841. typedef enum {
  1842. LSM6DS3_ACC_GYRO_INT2_FF_DISABLED = 0x00,
  1843. LSM6DS3_ACC_GYRO_INT2_FF_ENABLED = 0x10,
  1844. } LSM6DS3_ACC_GYRO_INT2_FF_t;
  1845. /*******************************************************************************
  1846. * Register : MD2_CFG
  1847. * Address : 0X5F
  1848. * Bit Group Name: INT2_WU
  1849. * Permission : RW
  1850. *******************************************************************************/
  1851. typedef enum {
  1852. LSM6DS3_ACC_GYRO_INT2_WU_DISABLED = 0x00,
  1853. LSM6DS3_ACC_GYRO_INT2_WU_ENABLED = 0x20,
  1854. } LSM6DS3_ACC_GYRO_INT2_WU_t;
  1855. /*******************************************************************************
  1856. * Register : MD2_CFG
  1857. * Address : 0X5F
  1858. * Bit Group Name: INT2_SINGLE_TAP
  1859. * Permission : RW
  1860. *******************************************************************************/
  1861. typedef enum {
  1862. LSM6DS3_ACC_GYRO_INT2_SINGLE_TAP_DISABLED = 0x00,
  1863. LSM6DS3_ACC_GYRO_INT2_SINGLE_TAP_ENABLED = 0x40,
  1864. } LSM6DS3_ACC_GYRO_INT2_SINGLE_TAP_t;
  1865. /*******************************************************************************
  1866. * Register : MD2_CFG
  1867. * Address : 0X5F
  1868. * Bit Group Name: INT2_SLEEP
  1869. * Permission : RW
  1870. *******************************************************************************/
  1871. typedef enum {
  1872. LSM6DS3_ACC_GYRO_INT2_SLEEP_DISABLED = 0x00,
  1873. LSM6DS3_ACC_GYRO_INT2_SLEEP_ENABLED = 0x80,
  1874. } LSM6DS3_ACC_GYRO_INT2_SLEEP_t;
  1875. #endif // End of __LSM6DS3IMU_H__ definition check