ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
mpu6050.h
Go to the documentation of this file.
1// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef __FW_MPU6050__
16#define __FW_MPU6050__
17
18#include "fw_hal.h"
19
20
21#define MPU6050_ADDR 0xD0 // MPU6050 address for write
25#define MPU6050_REG_SELF_TEST_X 0x0D // RW
26#define MPU6050_REG_SELF_TEST_Y 0x0E // RW
27#define MPU6050_REG_SELF_TEST_Z 0x0F // RW
28#define MPU6050_REG_SELF_TEST_A 0x10 // RW
29#define MPU6050_REG_SMPLRT_DIV 0x19 // RW, Sample Rate Divider
30#define MPU6050_REG_CONFIG 0x1A // RW, Configuration
31#define MPU6050_REG_GYRO_CONFIG 0x1B // RW, Gyroscope Configuration
32#define MPU6050_REG_ACCEL_CONFIG 0x1C // RW, Accelerometer Configuration
33#define MPU6050_REG_FIFO_EN 0x23 // RW
34#define MPU6050_REG_I2C_MST_CTRL 0x24 // RW
35#define MPU6050_REG_I2C_SLV0_ADDR 0x25 // RW
36#define MPU6050_REG_I2C_SLV0_REG 0x26 // RW
37#define MPU6050_REG_I2C_SLV0_CTRL 0x27 // RW
38#define MPU6050_REG_I2C_SLV1_ADDR 0x28 // RW
39#define MPU6050_REG_I2C_SLV1_REG 0x29 // RW
40#define MPU6050_REG_I2C_SLV1_CTRL 0x2A // RW
41#define MPU6050_REG_I2C_SLV2_ADDR 0x2B // RW
42#define MPU6050_REG_I2C_SLV2_REG 0x2C // RW
43#define MPU6050_REG_I2C_SLV2_CTRL 0x2D // RW
44#define MPU6050_REG_I2C_SLV3_ADDR 0x2E // RW
45#define MPU6050_REG_I2C_SLV3_REG 0x2F // RW
46#define MPU6050_REG_I2C_SLV3_CTRL 0x30 // RW
47#define MPU6050_REG_I2C_SLV4_ADDR 0x31 // RW
48#define MPU6050_REG_I2C_SLV4_REG 0x32 // RW
49#define MPU6050_REG_I2C_SLV4_DO 0x33 // RW
50#define MPU6050_REG_I2C_SLV4_CTRL 0x34 // RW
51#define MPU6050_REG_I2C_SLV4_DI 0x35 // R
52#define MPU6050_REG_I2C_MST_STATUS 0x36 // R
53#define MPU6050_REG_INT_PIN_CFG 0x37 // RW
54#define MPU6050_REG_INT_ENABLE 0x38 // RW
55#define MPU6050_REG_INT_STATUS 0x3A // R
56#define MPU6050_REG_ACCEL_XOUT_H 0x3B // R
57#define MPU6050_REG_ACCEL_XOUT_L 0x3C // R
58#define MPU6050_REG_ACCEL_YOUT_H 0x3D // R
59#define MPU6050_REG_ACCEL_YOUT_L 0x3E // R
60#define MPU6050_REG_ACCEL_ZOUT_H 0x3F // R
61#define MPU6050_REG_ACCEL_ZOUT_L 0x40 // R
62#define MPU6050_REG_TEMP_OUT_H 0x41 // R
63#define MPU6050_REG_TEMP_OUT_L 0x42 // R
64#define MPU6050_REG_GYRO_XOUT_H 0x43 // R
65#define MPU6050_REG_GYRO_XOUT_L 0x44 // R
66#define MPU6050_REG_GYRO_YOUT_H 0x45 // R
67#define MPU6050_REG_GYRO_YOUT_L 0x46 // R
68#define MPU6050_REG_GYRO_ZOUT_H 0x47 // R
69#define MPU6050_REG_GYRO_ZOUT_L 0x48 // R
70#define MPU6050_REG_EXT_SENS_DATA_00 0x49 // R
71#define MPU6050_REG_EXT_SENS_DATA_01 0x4A // R
72#define MPU6050_REG_EXT_SENS_DATA_02 0x4B // R
73#define MPU6050_REG_EXT_SENS_DATA_03 0x4C // R
74#define MPU6050_REG_EXT_SENS_DATA_04 0x4D // R
75#define MPU6050_REG_EXT_SENS_DATA_05 0x4E // R
76#define MPU6050_REG_EXT_SENS_DATA_06 0x4F // R
77#define MPU6050_REG_EXT_SENS_DATA_07 0x50 // R
78#define MPU6050_REG_EXT_SENS_DATA_08 0x51 // R
79#define MPU6050_REG_EXT_SENS_DATA_09 0x52 // R
80#define MPU6050_REG_EXT_SENS_DATA_10 0x53 // R
81#define MPU6050_REG_EXT_SENS_DATA_11 0x54 // R
82#define MPU6050_REG_EXT_SENS_DATA_12 0x55 // R
83#define MPU6050_REG_EXT_SENS_DATA_13 0x56 // R
84#define MPU6050_REG_EXT_SENS_DATA_14 0x57 // R
85#define MPU6050_REG_EXT_SENS_DATA_15 0x58 // R
86#define MPU6050_REG_EXT_SENS_DATA_16 0x59 // R
87#define MPU6050_REG_EXT_SENS_DATA_17 0x5A // R
88#define MPU6050_REG_EXT_SENS_DATA_18 0x5B // R
89#define MPU6050_REG_EXT_SENS_DATA_19 0x5C // R
90#define MPU6050_REG_EXT_SENS_DATA_20 0x5D // R
91#define MPU6050_REG_EXT_SENS_DATA_21 0x5E // R
92#define MPU6050_REG_EXT_SENS_DATA_22 0x5F // R
93#define MPU6050_REG_EXT_SENS_DATA_23 0x60 // R
94#define MPU6050_REG_I2C_SLV0_DO 0x63 // RW
95#define MPU6050_REG_I2C_SLV1_DO 0x64 // RW
96#define MPU6050_REG_I2C_SLV2_DO 0x65 // RW
97#define MPU6050_REG_I2C_SLV3_DO 0x66 // RW
98#define MPU6050_REG_I2C_MST_DELAY_CTRL 0x67 // RW
99#define MPU6050_REG_SIGNAL_PATH_RESET 0x68 // RW
100#define MPU6050_REG_USER_CTRL 0x6A // RW
101#define MPU6050_REG_PWR_MGMT_1 0x6B // RW
102#define MPU6050_REG_PWR_MGMT_2 0x6C // RW
103#define MPU6050_REG_FIFO_COUNTH 0x72 // RW
104#define MPU6050_REG_FIFO_COUNTL 0x73 // RW
105#define MPU6050_REG_FIFO_R_W 0x74 // RW
106#define MPU6050_REG_WHO_AM_I 0x75 // R #define
107
108typedef enum
109{
115
116typedef enum
117{
126
127typedef enum
128{
134
135typedef enum
136{
142
145void MPU6050_ReadAll(uint16_t *buf);
146void MPU6050_Init(void);
147void MPU6050_Reset(void);
148void MPU6050_EnterSleepMode(void);
156
157
158#endif // __FW_MPU6050__
unsigned short uint16_t
Definition: fw_types.h:19
HAL_State_t
Definition: fw_types.h:69
unsigned char uint8_t
Definition: fw_types.h:18
uint8_t addr[8]
Definition: main.c:28
MPU6050_Wakeup_Freq_t
Definition: mpu6050.h:109
@ MPU6050_Wakeup_Freq_40Hz
Definition: mpu6050.h:113
@ MPU6050_Wakeup_Freq_1p25Hz
Definition: mpu6050.h:110
@ MPU6050_Wakeup_Freq_5Hz
Definition: mpu6050.h:111
@ MPU6050_Wakeup_Freq_20Hz
Definition: mpu6050.h:112
void MPU6050_DisableTemperature(HAL_State_t state)
Definition: mpu6050.c:68
void MPU6050_DisableLowPowerMode(void)
Definition: mpu6050.c:78
uint16_t MPU6050_ReadInt(uint8_t addr)
Definition: mpu6050.c:35
void MPU6050_SetAccFullScaleRange(MPU6050_Acc_FullScaleRange_t range)
Definition: mpu6050.c:103
void MPU6050_SetDLPF(MPU6050_DLPF_t filter)
Definition: mpu6050.c:93
void MPU6050_ReadAll(uint16_t *buf)
Definition: mpu6050.c:42
MPU6050_Acc_FullScaleRange_t
Definition: mpu6050.h:136
@ MPU6050_Acc_FullScaleRange_4g
Definition: mpu6050.h:138
@ MPU6050_Acc_FullScaleRange_16g
Definition: mpu6050.h:140
@ MPU6050_Acc_FullScaleRange_8g
Definition: mpu6050.h:139
@ MPU6050_Acc_FullScaleRange_2g
Definition: mpu6050.h:137
void MPU6050_EnterSleepMode(void)
Definition: mpu6050.c:64
void MPU6050_EnableLowPowerMode(MPU6050_Wakeup_Freq_t freq)
Definition: mpu6050.c:73
void MPU6050_Reset(void)
Definition: mpu6050.c:60
void MPU6050_SetSampleRateDiv(uint8_t div)
Definition: mpu6050.c:88
MPU6050_Gyro_FullScaleRange_t
Definition: mpu6050.h:128
@ MPU6050_Gyro_FullScaleRange_500dps
Definition: mpu6050.h:130
@ MPU6050_Gyro_FullScaleRange_250dps
Definition: mpu6050.h:129
@ MPU6050_Gyro_FullScaleRange_2000dps
Definition: mpu6050.h:132
@ MPU6050_Gyro_FullScaleRange_1000dps
Definition: mpu6050.h:131
MPU6050_DLPF_t
Definition: mpu6050.h:117
@ MPU6050_DLPF_Delay0ms
Definition: mpu6050.h:118
@ MPU6050_DLPF_Delay19ms
Definition: mpu6050.h:124
@ MPU6050_DLPF_Delay3ms
Definition: mpu6050.h:120
@ MPU6050_DLPF_Delay8ms
Definition: mpu6050.h:122
@ MPU6050_DLPF_Delay2ms
Definition: mpu6050.h:119
@ MPU6050_DLPF_Delay13ms
Definition: mpu6050.h:123
@ MPU6050_DLPF_Delay5ms
Definition: mpu6050.h:121
uint8_t MPU6050_Read(uint8_t addr)
Definition: mpu6050.c:28
void MPU6050_Init(void)
Definition: mpu6050.c:52
void MPU6050_SetGyroFullScaleRange(MPU6050_Gyro_FullScaleRange_t range)
Definition: mpu6050.c:98