-
Notifications
You must be signed in to change notification settings - Fork 1
/
stm32l4s5i_iot01_accelero.c
150 lines (131 loc) · 3.71 KB
/
stm32l4s5i_iot01_accelero.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/**
******************************************************************************
* @file stm32l4s5i_iot01_accelero.c
* @author MCD Application Team
* @brief This file provides a set of functions needed to manage the accelerometer sensor
******************************************************************************
* @attention
*
* Copyright (c) 2017 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32l4s5i_iot01_accelero.h"
/** @addtogroup BSP
* @{
*/
/** @addtogroup STM32L4S5I_IOT01
* @{
*/
/** @defgroup STM32L4S5I_IOT01_ACCELERO ACCELERO
* @{
*/
/** @defgroup STM32L4S5I_IOT01_ACCELERO_Private_Variables ACCELERO Private Variables
* @{
*/
static ACCELERO_DrvTypeDef *AccelerometerDrv;
/**
* @}
*/
/** @defgroup STM32L4S5I_IOT01_ACCELERO_Private_Functions ACCELERO Private Functions
* @{
*/
/**
* @brief Initialize the ACCELERO.
* @retval ACCELERO_OK or ACCELERO_ERROR
*/
ACCELERO_StatusTypeDef BSP_ACCELERO_Init(void)
{
ACCELERO_StatusTypeDef ret = ACCELERO_OK;
uint16_t ctrl = 0x0000;
ACCELERO_InitTypeDef LSM6DSL_InitStructure;
if(Lsm6dslAccDrv.ReadID() != LSM6DSL_ACC_GYRO_WHO_AM_I)
{
ret = ACCELERO_ERROR;
}
else
{
/* Initialize the ACCELERO accelerometer driver structure */
AccelerometerDrv = &Lsm6dslAccDrv;
/* MEMS configuration ------------------------------------------------------*/
/* Fill the ACCELERO accelerometer structure */
LSM6DSL_InitStructure.AccOutput_DataRate = LSM6DSL_ODR_52Hz;
LSM6DSL_InitStructure.Axes_Enable = 0;
LSM6DSL_InitStructure.AccFull_Scale = LSM6DSL_ACC_FULLSCALE_2G;
LSM6DSL_InitStructure.BlockData_Update = LSM6DSL_BDU_BLOCK_UPDATE;
LSM6DSL_InitStructure.High_Resolution = 0;
LSM6DSL_InitStructure.Communication_Mode = 0;
/* Configure MEMS: data rate, full scale */
ctrl = (LSM6DSL_InitStructure.AccOutput_DataRate | LSM6DSL_InitStructure.AccFull_Scale);
/* Configure MEMS: BDU and Auto-increment for multi read/write */
ctrl |= ((LSM6DSL_InitStructure.BlockData_Update | LSM6DSL_ACC_GYRO_IF_INC_ENABLED) << 8);
/* Configure the ACCELERO accelerometer main parameters */
AccelerometerDrv->Init(ctrl);
}
return ret;
}
/**
* @brief DeInitialize the ACCELERO.
* @retval None.
*/
void BSP_ACCELERO_DeInit(void)
{
/* DeInitialize the accelerometer IO interfaces */
if(AccelerometerDrv != NULL)
{
if(AccelerometerDrv->DeInit != NULL)
{
AccelerometerDrv->DeInit();
}
}
}
/**
* @brief Set/Unset the ACCELERO in low power mode.
* @param status 0 means disable Low Power Mode, otherwise Low Power Mode is enabled
* @retval None
*/
void BSP_ACCELERO_LowPower(uint16_t status)
{
/* Set/Unset the ACCELERO in low power mode */
if(AccelerometerDrv != NULL)
{
if(AccelerometerDrv->LowPower != NULL)
{
AccelerometerDrv->LowPower(status);
}
}
}
/**
* @brief Get XYZ acceleration values.
* @param pDataXYZ Pointer on 3 angular accelerations table with
* pDataXYZ[0] = X axis, pDataXYZ[1] = Y axis, pDataXYZ[2] = Z axis
* @retval None
*/
void BSP_ACCELERO_AccGetXYZ(int16_t *pDataXYZ)
{
if(AccelerometerDrv != NULL)
{
if(AccelerometerDrv->GetXYZ != NULL)
{
AccelerometerDrv->GetXYZ(pDataXYZ);
}
}
}
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/