TM STM32Fxxx HAL Libraries  v1.0.0
Libraries for STM32Fxxx (F0, F4 and F7 series) devices based on HAL drivers from ST from Tilen Majerle
tm_stm32_mpu6050.h
1 
37 #ifndef TM_MPU6050_H
38 #define TM_MPU6050_H 100
39 
40 /* C++ detection */
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
128 #include "stm32fxxx_hal.h"
129 #include "defines.h"
130 #include "tm_stm32_i2c.h"
131 
138 /* Default I2C used */
139 #ifndef MPU6050_I2C
140 #define MPU6050_I2C I2C1
141 #define MPU6050_I2C_PINSPACK TM_I2C_PinsPack_1
142 #endif
143 
144 /* Default I2C clock */
145 #ifndef MPU6050_I2C_CLOCK
146 #define MPU6050_I2C_CLOCK 400000
147 #endif
148 
153 #define TM_MPU6050_DataRate_8KHz 0
154 #define TM_MPU6050_DataRate_4KHz 1
155 #define TM_MPU6050_DataRate_2KHz 3
156 #define TM_MPU6050_DataRate_1KHz 7
157 #define TM_MPU6050_DataRate_500Hz 15
158 #define TM_MPU6050_DataRate_250Hz 31
159 #define TM_MPU6050_DataRate_125Hz 63
160 #define TM_MPU6050_DataRate_100Hz 79
179 typedef enum _TM_MPU6050_Device_t {
183 
187 typedef enum _TM_MPU6050_Result_t {
193 
203 
213 
217 typedef struct _TM_MPU6050_t {
218  /* Private */
219  uint8_t Address;
220  float Gyro_Mult;
221  float Acce_Mult;
222  /* Public */
223  int16_t Accelerometer_X;
224  int16_t Accelerometer_Y;
225  int16_t Accelerometer_Z;
226  int16_t Gyroscope_X;
227  int16_t Gyroscope_Y;
228  int16_t Gyroscope_Z;
229  float Temperature;
230 } TM_MPU6050_t;
231 
235 typedef union _TM_MPU6050_Interrupt_t {
236  struct {
237  uint8_t DataReady:1;
238  uint8_t reserved2:2;
239  uint8_t Master:1;
240  uint8_t FifoOverflow:1;
241  uint8_t reserved1:1;
242  uint8_t MotionDetection:1;
243  uint8_t reserved0:1;
244  } F;
245  uint8_t Status;
247 
273 TM_MPU6050_Result_t TM_MPU6050_Init(TM_MPU6050_t* DataStruct, TM_MPU6050_Device_t DeviceNumber, TM_MPU6050_Accelerometer_t AccelerometerSensitivity, TM_MPU6050_Gyroscope_t GyroscopeSensitivity);
274 
282 
290 
297 TM_MPU6050_Result_t TM_MPU6050_SetDataRate(TM_MPU6050_t* DataStruct, uint8_t rate);
298 
305 
312 
320 
329 
338 
347 
356 
369 /* C++ detection */
370 #ifdef __cplusplus
371 }
372 #endif
373 
374 #endif
Definition: tm_stm32_mpu6050.h:189
_TM_MPU6050_Accelerometer_t
Parameters for accelerometer range.
Definition: tm_stm32_mpu6050.h:197
Definition: tm_stm32_mpu6050.h:180
Definition: tm_stm32_mpu6050.h:211
TM_MPU6050_Result_t TM_MPU6050_ReadGyroscope(TM_MPU6050_t *DataStruct)
Reads gyroscope data from sensor.
struct _TM_MPU6050_t TM_MPU6050_t
Main MPU6050 structure.
Definition: tm_stm32_mpu6050.h:181
enum _TM_MPU6050_Device_t TM_MPU6050_Device_t
MPU6050 can have 2 different slave addresses, depends on it's input AD0 pin This feature allows you t...
Definition: tm_stm32_mpu6050.h:198
_TM_MPU6050_Result_t
MPU6050 result enumeration.
Definition: tm_stm32_mpu6050.h:187
uint8_t reserved1
Definition: tm_stm32_mpu6050.h:241
TM_MPU6050_Result_t TM_MPU6050_ReadAll(TM_MPU6050_t *DataStruct)
Reads accelerometer, gyroscope and temperature data from sensor.
_TM_MPU6050_Gyroscope_t
Parameters for gyroscope range.
Definition: tm_stm32_mpu6050.h:207
Definition: tm_stm32_mpu6050.h:191
TM_MPU6050_Result_t TM_MPU6050_SetAccelerometer(TM_MPU6050_t *DataStruct, TM_MPU6050_Accelerometer_t AccelerometerSensitivity)
Sets accelerometer sensitivity.
int16_t Gyroscope_Y
Definition: tm_stm32_mpu6050.h:227
float Acce_Mult
Definition: tm_stm32_mpu6050.h:221
TM_MPU6050_Result_t TM_MPU6050_ReadInterrupts(TM_MPU6050_t *DataStruct, TM_MPU6050_Interrupt_t *InterruptsStruct)
Reads and clears interrupts.
enum _TM_MPU6050_Accelerometer_t TM_MPU6050_Accelerometer_t
Parameters for accelerometer range.
uint8_t DataReady
Definition: tm_stm32_mpu6050.h:237
Interrupts union and structure.
Definition: tm_stm32_mpu6050.h:235
Definition: tm_stm32_mpu6050.h:188
int16_t Gyroscope_Z
Definition: tm_stm32_mpu6050.h:228
int16_t Accelerometer_X
Definition: tm_stm32_mpu6050.h:223
uint8_t FifoOverflow
Definition: tm_stm32_mpu6050.h:240
TM_MPU6050_Result_t TM_MPU6050_Init(TM_MPU6050_t *DataStruct, TM_MPU6050_Device_t DeviceNumber, TM_MPU6050_Accelerometer_t AccelerometerSensitivity, TM_MPU6050_Gyroscope_t GyroscopeSensitivity)
Initializes MPU6050 and I2C peripheral.
uint8_t Master
Definition: tm_stm32_mpu6050.h:239
float Temperature
Definition: tm_stm32_mpu6050.h:229
uint8_t reserved2
Definition: tm_stm32_mpu6050.h:238
Main MPU6050 structure.
Definition: tm_stm32_mpu6050.h:217
int16_t Accelerometer_Y
Definition: tm_stm32_mpu6050.h:224
Definition: tm_stm32_mpu6050.h:201
TM_MPU6050_Result_t TM_MPU6050_DisableInterrupts(TM_MPU6050_t *DataStruct)
Disables interrupts.
int16_t Gyroscope_X
Definition: tm_stm32_mpu6050.h:226
Definition: tm_stm32_mpu6050.h:208
uint8_t MotionDetection
Definition: tm_stm32_mpu6050.h:242
Definition: tm_stm32_mpu6050.h:199
Definition: tm_stm32_mpu6050.h:200
int16_t Accelerometer_Z
Definition: tm_stm32_mpu6050.h:225
enum _TM_MPU6050_Gyroscope_t TM_MPU6050_Gyroscope_t
Parameters for gyroscope range.
union _TM_MPU6050_Interrupt_t TM_MPU6050_Interrupt_t
Interrupts union and structure.
TM_MPU6050_Result_t TM_MPU6050_EnableInterrupts(TM_MPU6050_t *DataStruct)
Enables interrupts.
Definition: tm_stm32_mpu6050.h:209
float Gyro_Mult
Definition: tm_stm32_mpu6050.h:220
TM_MPU6050_Result_t TM_MPU6050_ReadAccelerometer(TM_MPU6050_t *DataStruct)
Reads accelerometer data from sensor.
TM_MPU6050_Result_t TM_MPU6050_SetDataRate(TM_MPU6050_t *DataStruct, uint8_t rate)
Sets output data rate.
enum _TM_MPU6050_Result_t TM_MPU6050_Result_t
MPU6050 result enumeration.
uint8_t Address
Definition: tm_stm32_mpu6050.h:219
uint8_t reserved0
Definition: tm_stm32_mpu6050.h:243
Definition: tm_stm32_mpu6050.h:190
TM_MPU6050_Result_t TM_MPU6050_SetGyroscope(TM_MPU6050_t *DataStruct, TM_MPU6050_Gyroscope_t GyroscopeSensitivity)
Sets gyroscope sensitivity.
TM_MPU6050_Result_t TM_MPU6050_ReadTemperature(TM_MPU6050_t *DataStruct)
Reads temperature data from sensor.
Definition: tm_stm32_mpu6050.h:210