IZAR Flight Controller 1.0.0
IZAR Flight Controller running with an ESP32.
mpu6050.c File Reference
#include "mpu6050.h"
#include "mpu6050_regs.h"
#include <esp_log.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <math.h>
Include dependency graph for mpu6050.c:

Macros

#define I2C_FREQ_HZ   (1000000)
#define CHECK(x)
#define CHECK_ARG(VAL)

Functions

static float get_accel_value (mpu6050_dev_t *dev, int16_t raw)
static float get_gyro_value (mpu6050_dev_t *dev, int16_t raw)
static int16_t shuffle (uint16_t word)
static uint16_t ushuffle (uint16_t word)
static esp_err_t read_reg_bits (mpu6050_dev_t *dev, uint8_t reg_addr, uint8_t offset, uint8_t mask, uint8_t *value)
static esp_err_t write_reg_bits (mpu6050_dev_t *dev, uint8_t reg_addr, uint8_t offset, uint8_t mask, uint8_t value)
static esp_err_t read_reg (mpu6050_dev_t *dev, uint8_t reg_addr, uint8_t *value)
static esp_err_t write_reg (mpu6050_dev_t *dev, uint8_t reg_addr, uint8_t data)
static esp_err_t read_reg_word (mpu6050_dev_t *dev, uint8_t reg_addr, int16_t *value)
static esp_err_t write_reg_word (mpu6050_dev_t *dev, uint8_t reg_addr, int16_t value)
static esp_err_t read_reg_bool (mpu6050_dev_t *dev, uint8_t reg_addr, uint8_t offset, bool *value)
static esp_err_t write_reg_bool (mpu6050_dev_t *dev, uint8_t reg_addr, uint8_t offset, bool value)
esp_err_t mpu6050_init_desc (mpu6050_dev_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
 Initialize device descriptor.
esp_err_t mpu6050_free_desc (mpu6050_dev_t *dev)
 Free device descriptor.
esp_err_t mpu6050_init (mpu6050_dev_t *dev)
 Initialize device.
esp_err_t mpu6050_get_aux_vddio_level (mpu6050_dev_t *dev, mpu6050_vddio_level_t *level)
 Get the auxiliary I2C supply voltage level.
esp_err_t mpu6050_set_aux_vddio_level (mpu6050_dev_t *dev, mpu6050_vddio_level_t level)
 Set the auxiliary I2C supply voltage level.
esp_err_t mpu6050_get_rate (mpu6050_dev_t *dev, uint8_t *rate)
 Get gyroscope output rate divider.
esp_err_t mpu6050_set_rate (mpu6050_dev_t *dev, uint8_t rate)
 Set gyroscope output rate divider.
esp_err_t mpu6050_get_external_frame_sync (mpu6050_dev_t *dev, mpu6050_ext_sync_t *sync)
 Get external FSYNC configuration.
esp_err_t mpu6050_set_external_frame_sync (mpu6050_dev_t *dev, mpu6050_ext_sync_t sync)
 Set external FSYNC configuration.
esp_err_t mpu6050_get_dlpf_mode (mpu6050_dev_t *dev, mpu6050_dlpf_mode_t *mode)
 Get digital low-pass filter configuration.
esp_err_t mpu6050_set_dlpf_mode (mpu6050_dev_t *dev, mpu6050_dlpf_mode_t mode)
 Set digital low-pass filter configuration.
esp_err_t mpu6050_get_full_scale_gyro_range (mpu6050_dev_t *dev, mpu6050_gyro_range_t *range)
 Get full-scale gyroscope range.
esp_err_t mpu6050_set_full_scale_gyro_range (mpu6050_dev_t *dev, mpu6050_gyro_range_t range)
 Set full-scale gyroscope range.
esp_err_t mpu6050_get_accel_self_test_factory_trim (mpu6050_dev_t *dev, mpu6050_axis_t axis, uint8_t *trim)
 Get self-test factory trim value for accelerometer axis.
esp_err_t mpu6050_get_gyro_self_test_factory_trim (mpu6050_dev_t *dev, mpu6050_axis_t axis, uint8_t *trim)
 Get self-test factory trim value for gyroscope axis.
esp_err_t mpu6050_get_accel_self_test (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool *enabled)
 Get self-test enabled for accelerometer axis.
esp_err_t mpu6050_set_accel_self_test (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool enabled)
 Set self-test enabled for accelerometer axis.
esp_err_t mpu6050_get_full_scale_accel_range (mpu6050_dev_t *dev, mpu6050_accel_range_t *range)
 Get full-scale accelerometer range.
esp_err_t mpu6050_set_full_scale_accel_range (mpu6050_dev_t *dev, mpu6050_accel_range_t range)
 Set full-scale accelerometer range.
esp_err_t mpu6050_get_dhpf_mode (mpu6050_dev_t *dev, mpu6050_dhpf_mode_t *mode)
 Get the high-pass filter configuration. The DHPF is a filter module in the path leading to motion detectors (Free Fall, Motion threshold, and Zero Motion). The high pass filter output is not available to the data registers.
esp_err_t mpu6050_set_dhpf_mode (mpu6050_dev_t *dev, mpu6050_dhpf_mode_t mode)
 Set the high-pass filter configuration.
esp_err_t mpu6050_get_freefall_detection_threshold (mpu6050_dev_t *dev, uint8_t *threshold)
 Get free-fall event acceleration threshold.
esp_err_t mpu6050_set_freefall_detection_threshold (mpu6050_dev_t *dev, uint8_t threshold)
 Get free-fall event acceleration threshold.
esp_err_t mpu6050_get_freefall_detection_duration (mpu6050_dev_t *dev, uint8_t *duration_ms)
 Get free-fall event duration threshold.
esp_err_t mpu6050_set_freefall_detection_duration (mpu6050_dev_t *dev, uint8_t duration_ms)
 Set free-fall event duration threshold.
esp_err_t mpu6050_get_motion_detection_threshold (mpu6050_dev_t *dev, uint8_t *threshold)
 Get motion detection event acceleration threshold.
esp_err_t mpu6050_set_motion_detection_threshold (mpu6050_dev_t *dev, uint8_t threshold)
 Set motion detection event acceleration threshold.
esp_err_t mpu6050_get_motion_detection_duration (mpu6050_dev_t *dev, uint8_t *duration)
 Get motion detection event duration threshold.
esp_err_t mpu6050_set_motion_detection_duration (mpu6050_dev_t *dev, uint8_t duration)
 Set motion detection event duration threshold.
esp_err_t mpu6050_get_zero_motion_detection_threshold (mpu6050_dev_t *dev, uint8_t *threshold)
 Get zero motion detection event acceleration threshold.
esp_err_t mpu6050_set_zero_motion_detection_threshold (mpu6050_dev_t *dev, uint8_t threshold)
 Set zero motion detection event acceleration threshold.
esp_err_t mpu6050_get_zero_motion_detection_duration (mpu6050_dev_t *dev, uint8_t *duration)
 Get zero motion detection event duration threshold.
esp_err_t mpu6050_set_zero_motion_detection_duration (mpu6050_dev_t *dev, uint8_t duration)
 Set zero motion detection event duration threshold.
esp_err_t mpu6050_get_temp_fifo_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get temperature FIFO enabled value.
esp_err_t mpu6050_set_temp_fifo_enabled (mpu6050_dev_t *dev, bool enabled)
 Set temperature FIFO enabled value.
esp_err_t mpu6050_get_gyro_fifo_enabled (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool *enabled)
 Get gyroscope axis FIFO enabled value.
esp_err_t mpu6050_set_gyro_fifo_enabled (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool enabled)
 Set gyroscope axis FIFO enabled value.
esp_err_t mpu6050_get_accel_fifo_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get accelerometer FIFO enabled value.
esp_err_t mpu6050_set_accel_fifo_enabled (mpu6050_dev_t *dev, bool enabled)
 Set accelerometer FIFO enabled value.
esp_err_t mpu6050_get_slave_fifo_enabled (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *enabled)
 Get Slave FIFO enabled value.
esp_err_t mpu6050_set_slave_fifo_enabled (mpu6050_dev_t *dev, mpu6050_slave_t num, bool enabled)
 Set Slave FIFO enabled value.
esp_err_t mpu6050_get_multi_master_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get multi-master enabled value.
esp_err_t mpu6050_set_multi_master_enabled (mpu6050_dev_t *dev, bool enabled)
 Set multi-master enabled value.
esp_err_t mpu6050_get_wait_for_external_sensor_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get wait-for-external-sensor-data enabled value.
esp_err_t mpu6050_set_wait_for_external_sensor_enabled (mpu6050_dev_t *dev, bool enabled)
 Set wait-for-external-sensor-data enabled value.
esp_err_t mpu6050_get_slave_read_write_transition_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get slave read/write transition enabled value.
esp_err_t mpu6050_set_slave_read_write_transition_enabled (mpu6050_dev_t *dev, bool enabled)
 Set slave read/write transition enabled value.
esp_err_t mpu6050_get_master_clock_speed (mpu6050_dev_t *dev, mpu6050_i2c_master_clock_t *clk_spd)
 Get I2C master clock speed.
esp_err_t mpu6050_set_master_clock_speed (mpu6050_dev_t *dev, mpu6050_i2c_master_clock_t clk_spd)
 Set I2C master clock speed.
esp_err_t mpu6050_get_slave_address (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t *addr)
 Get the I2C address of the specified slave.
esp_err_t mpu6050_set_slave_address (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t address)
 Set the I2C address of the specified slave.
esp_err_t mpu6050_get_slave_register (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t *reg)
 Get the active internal register for the specified slave.
esp_err_t mpu6050_set_slave_register (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t reg)
 Set the active internal register for the specified slave.
esp_err_t mpu6050_get_slave_enabled (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *enabled)
 Get the enabled value for the specified slave.
esp_err_t mpu6050_set_slave_enabled (mpu6050_dev_t *dev, mpu6050_slave_t num, bool enabled)
 Set the enabled value for the specified slave.
esp_err_t mpu6050_get_slave_word_byte_swap (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *enabled)
 Get word pair byte-swapping enabled for the specified slave.
esp_err_t mpu6050_set_slave_word_byte_swap (mpu6050_dev_t *dev, mpu6050_slave_t num, bool enabled)
 Set word pair byte-swapping enabled for the specified slave.
esp_err_t mpu6050_get_slave_write_mode (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *mode)
 Get write mode for the specified slave.
esp_err_t mpu6050_set_slave_write_mode (mpu6050_dev_t *dev, mpu6050_slave_t num, bool mode)
 Set write mode for the specified slave.
esp_err_t mpu6050_get_slave_word_group_offset (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *enabled)
 Get word pair grouping order offset for the specified slave.
esp_err_t mpu6050_set_slave_word_group_offset (mpu6050_dev_t *dev, mpu6050_slave_t num, bool enabled)
 Set word pair grouping order offset for the specified slave.
esp_err_t mpu6050_get_slave_data_length (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t *length)
 Get number of bytes to read for the specified slave.
esp_err_t mpu6050_set_slave_data_length (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t length)
 Set number of bytes to read for the specified slave.
esp_err_t mpu6050_set_slave_4_output_byte (mpu6050_dev_t *dev, uint8_t data)
 Set new byte to write to Slave 4. This register stores the data to be written into the Slave 4. If I2C_SLV4_RW is set 1 (set to read), this register has no effect.
esp_err_t mpu6050_get_slave_4_interrupt_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get the enabled value for Slave 4 transaction interrupts.
esp_err_t mpu6050_set_slave_4_interrupt_enabled (mpu6050_dev_t *dev, bool enabled)
 Set the enabled value for Slave 4 transaction interrupts.
esp_err_t mpu6050_get_slave_4_master_delay (mpu6050_dev_t *dev, uint8_t *delay)
 Get Slave 4 master delay value.
esp_err_t mpu6050_set_slave_4_master_delay (mpu6050_dev_t *dev, uint8_t delay)
 Set Slave 4 master delay value.
esp_err_t mpu6050_get_slave_4_input_byte (mpu6050_dev_t *dev, uint8_t *byte)
 Get last available byte read from Slave 4.
esp_err_t mpu6050_get_passthrough_status (mpu6050_dev_t *dev, bool *enabled)
 Get FSYNC interrupt status.
esp_err_t mpu6050_get_slave_4_is_done (mpu6050_dev_t *dev, bool *enabled)
 Get Slave 4 transaction done status.
esp_err_t mpu6050_get_lost_arbitration (mpu6050_dev_t *dev, bool *lost)
 Get master arbitration lost status.
esp_err_t mpu6050_get_slave_nack (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *nack)
 Get Slave NACK status.
esp_err_t mpu6050_get_interrupt_mode (mpu6050_dev_t *dev, mpu6050_int_level_t *mode)
 Get interrupt logic level mode.
esp_err_t mpu6050_set_interrupt_mode (mpu6050_dev_t *dev, mpu6050_int_level_t mode)
 Set interrupt logic level mode.
esp_err_t mpu6050_get_interrupt_drive (mpu6050_dev_t *dev, mpu6050_int_drive_t *drive)
 Get interrupt drive mode.
esp_err_t mpu6050_set_interrupt_drive (mpu6050_dev_t *dev, mpu6050_int_drive_t drive)
 Set interrupt drive mode.
esp_err_t mpu6050_get_interrupt_latch (mpu6050_dev_t *dev, mpu6050_int_latch_t *latch)
 Get interrupt latch mode.
esp_err_t mpu6050_set_interrupt_latch (mpu6050_dev_t *dev, mpu6050_int_latch_t latch)
 Set interrupt latch mode.
esp_err_t mpu6050_get_interrupt_latch_clear (mpu6050_dev_t *dev, bool *clear)
 Get interrupt latch clear mode.
esp_err_t mpu6050_set_interrupt_latch_clear (mpu6050_dev_t *dev, bool clear)
 Set interrupt latch clear mode.
esp_err_t mpu6050_get_fsync_interrupt_level (mpu6050_dev_t *dev, mpu6050_int_level_t *level)
 Get FSYNC interrupt logic level.
esp_err_t mpu6050_set_fsync_interrupt_level (mpu6050_dev_t *dev, mpu6050_int_level_t level)
 Set FSYNC interrupt logic level.
esp_err_t mpu6050_get_fsync_interrupt_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get FSYNC pin interrupt enabled setting.
esp_err_t mpu6050_set_fsync_interrupt_enabled (mpu6050_dev_t *dev, bool enabled)
 Set FSYNC pin interrupt enabled setting.
esp_err_t mpu6050_get_i2c_bypass_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get I2C bypass enabled status.
esp_err_t mpu6050_set_i2c_bypass_enabled (mpu6050_dev_t *dev, bool enabled)
 Set I2C bypass enabled status.
esp_err_t mpu6050_get_clock_output_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get reference clock output enabled status.
esp_err_t mpu6050_set_clock_output_enabled (mpu6050_dev_t *dev, bool enabled)
 Set reference clock output enabled status.
esp_err_t mpu6050_get_int_enabled (mpu6050_dev_t *dev, uint8_t *ints)
 Get full interrupt enabled status.
esp_err_t mpu6050_set_int_enabled (mpu6050_dev_t *dev, uint8_t ints)
 Set full interrupt enabled status.
esp_err_t mpu6050_get_int_status (mpu6050_dev_t *dev, uint8_t *ints)
 Get full set of interrupt status bits.
esp_err_t mpu6050_get_accel_offset (mpu6050_dev_t *dev, mpu6050_axis_t axis, int16_t *offset)
 Get offset for accelerometer axis.
esp_err_t mpu6050_set_accel_offset (mpu6050_dev_t *dev, mpu6050_axis_t axis, int16_t offset)
 Set offset for accelerometer axis.
esp_err_t mpu6050_get_gyro_offset (mpu6050_dev_t *dev, mpu6050_axis_t axis, int16_t *offset)
 Get offset for gyroscope axis.
esp_err_t mpu6050_set_gyro_offset (mpu6050_dev_t *dev, mpu6050_axis_t axis, int16_t offset)
 Get offset for gyroscope axis.
esp_err_t mpu6050_get_raw_acceleration (mpu6050_dev_t *dev, mpu6050_raw_acceleration_t *raw_accel)
 Get raw 3-axis accelerometer readings.
esp_err_t mpu6050_get_acceleration (mpu6050_dev_t *dev, mpu6050_acceleration_t *accel)
 Get 3-axis accelerometer readings.
esp_err_t mpu6050_get_raw_acceleration_axis (mpu6050_dev_t *dev, mpu6050_axis_t axis, int16_t *raw_accel)
 Get raw accelerometer reading on a single axis.
esp_err_t mpu6050_get_acceleration_axis (mpu6050_dev_t *dev, mpu6050_axis_t axis, float *accel)
 Get accelerometer reading on a single axis.
esp_err_t mpu6050_get_raw_rotation (mpu6050_dev_t *dev, mpu6050_raw_rotation_t *raw_gyro)
 Get raw 3-axis gyroscope readings.
esp_err_t mpu6050_get_rotation (mpu6050_dev_t *dev, mpu6050_rotation_t *gyro)
 Get 3-axis gyroscope readings.
esp_err_t mpu6050_get_raw_rotation_axis (mpu6050_dev_t *dev, mpu6050_axis_t axis, int16_t *raw_gyro)
 Get raw gyroscope reading on a single axis.
esp_err_t mpu6050_get_rotation_axis (mpu6050_dev_t *dev, mpu6050_axis_t axis, float *gyro)
 Get gyroscope reading on a single axis.
esp_err_t mpu6050_get_motion (mpu6050_dev_t *dev, mpu6050_acceleration_t *accel, mpu6050_rotation_t *gyro)
 Get raw 6-axis motion sensor readings (accel/gyro).
esp_err_t mpu6050_get_temperature (mpu6050_dev_t *dev, float *temp)
 Get current internal temperature.
esp_err_t mpu6050_get_external_sensor_data (mpu6050_dev_t *dev, int position, void *buf, size_t length)
 Read bytes from external sensor data register.
esp_err_t mpu6050_get_motion_status (mpu6050_dev_t *dev, uint8_t *status)
 Get full motion detection status register content (all bits).
esp_err_t mpu6050_set_slave_output_byte (mpu6050_dev_t *dev, mpu6050_slave_t num, uint8_t data)
 Write byte to Data Output container for specified slave.
esp_err_t mpu6050_get_external_shadow_delay_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get external data shadow delay enabled status.
esp_err_t mpu6050_set_external_shadow_delay_enabled (mpu6050_dev_t *dev, bool enabled)
 Set external data shadow delay enabled status.
esp_err_t mpu6050_get_slave_delay_enabled (mpu6050_dev_t *dev, mpu6050_slave_t num, bool *enabled)
 Get slave delay enabled status.
esp_err_t mpu6050_set_slave_delay_enabled (mpu6050_dev_t *dev, mpu6050_slave_t num, bool enabled)
 Set slave delay enabled status.
esp_err_t mpu6050_reset_gyroscope_path (mpu6050_dev_t *dev)
 Reset gyroscope signal path.
esp_err_t mpu6050_reset_accelerometer_path (mpu6050_dev_t *dev)
 Reset accelerometer signal path.
esp_err_t mpu6050_reset_temperature_path (mpu6050_dev_t *dev)
 Reset temperature sensor signal path.
esp_err_t mpu6050_get_accelerometer_power_on_delay (mpu6050_dev_t *dev, uint8_t *delay)
 Get accelerometer power-on delay.
esp_err_t mpu6050_set_accelerometer_power_on_delay (mpu6050_dev_t *dev, uint8_t delay)
 Set accelerometer power-on delay.
esp_err_t mpu6050_get_freefall_detection_counter_decrement (mpu6050_dev_t *dev, uint8_t *decrement)
 Get Free Fall detection counter decrement configuration.
esp_err_t mpu6050_set_freefall_detection_counter_decrement (mpu6050_dev_t *dev, uint8_t decrement)
 Set Free Fall detection counter decrement configuration.
esp_err_t mpu6050_get_motion_detection_counter_decrement (mpu6050_dev_t *dev, uint8_t *decrement)
 Get Motion detection counter decrement configuration.
esp_err_t mpu6050_set_motion_detection_counter_decrement (mpu6050_dev_t *dev, uint8_t decrement)
 Set Motion detection counter decrement configuration.
esp_err_t mpu6050_get_fifo_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get FIFO enabled status.
esp_err_t mpu6050_set_fifo_enabled (mpu6050_dev_t *dev, bool enabled)
 Set FIFO enabled status.
esp_err_t mpu6050_get_i2c_master_mode_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get I2C Master Mode enabled status.
esp_err_t mpu6050_set_i2c_master_mode_enabled (mpu6050_dev_t *dev, bool enabled)
 Set I2C Master Mode enabled status.
esp_err_t mpu6050_switch_spie_enabled (mpu6050_dev_t *dev, bool enabled)
 Switch from I2C to SPI mode (MPU-6000 only).
esp_err_t mpu6050_reset_fifo (mpu6050_dev_t *dev)
 Reset the FIFO.
esp_err_t mpu6050_reset_sensors (mpu6050_dev_t *dev)
 Reset all sensor registers and signal paths.
esp_err_t mpu6050_reset (mpu6050_dev_t *dev)
 Trigger a full device reset.
esp_err_t mpu6050_get_sleep_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get sleep mode status.
esp_err_t mpu6050_set_sleep_enabled (mpu6050_dev_t *dev, bool enabled)
 Set sleep mode status.
esp_err_t mpu6050_get_wake_cycle_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get wake cycle enabled status.
esp_err_t mpu6050_set_wake_cycle_enabled (mpu6050_dev_t *dev, bool enabled)
 Set wake cycle enabled status.
esp_err_t mpu6050_get_temp_sensor_enabled (mpu6050_dev_t *dev, bool *enabled)
 Get temperature sensor enabled status.
esp_err_t mpu6050_set_temp_sensor_enabled (mpu6050_dev_t *dev, bool enabled)
 Set temperature sensor enabled status.
esp_err_t mpu6050_get_clock_source (mpu6050_dev_t *dev, mpu6050_clock_source_t *source)
 Get clock source setting.
esp_err_t mpu6050_set_clock_source (mpu6050_dev_t *dev, mpu6050_clock_source_t source)
 Set clock source setting.
esp_err_t mpu6050_get_wake_frequency (mpu6050_dev_t *dev, mpu6050_wake_freq_t *frequency)
 Get wake frequency in Accel-Only Low Power Mode.
esp_err_t mpu6050_set_wake_frequency (mpu6050_dev_t *dev, mpu6050_wake_freq_t frequency)
 Set wake frequency in Accel-Only Low Power Mode.
esp_err_t mpu6050_get_standby_accel_enabled (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool *enabled)
 Get accelerometer axis standby enabled status.
esp_err_t mpu6050_set_standby_accel_enabled (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool enabled)
 Set accelerometer axis standby enabled status.
esp_err_t mpu6050_get_standby_gyro_enabled (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool *enabled)
 Get gyroscope axis standby enabled status.
esp_err_t mpu6050_set_standby_gyro_enabled (mpu6050_dev_t *dev, mpu6050_axis_t axis, bool enabled)
 Set gyroscope axis standby enabled status.
esp_err_t mpu6050_get_fifo_count (mpu6050_dev_t *dev, uint16_t *count)
 Get current FIFO buffer size.
esp_err_t mpu6050_get_fifo_bytes (mpu6050_dev_t *dev, uint8_t *data, size_t length)
 Get bytes from FIFO buffer.
esp_err_t mpu6050_get_fifo_byte (mpu6050_dev_t *dev, uint8_t *data)
 Get byte from FIFO buffer.
esp_err_t mpu6050_set_fifo_byte (mpu6050_dev_t *dev, uint8_t data)
 Write byte to FIFO buffer.
esp_err_t mpu6050_get_device_id (mpu6050_dev_t *dev, uint8_t *id)
 Get the ID of the device.
esp_err_t mpu6050_calibrate (mpu6050_dev_t *dev, float *accel_bias_res, float *gyro_bias_res)
 Function which accumulates gyro and accelerometer data after device initialization.
esp_err_t mpu6050_self_test (mpu6050_dev_t *dev, float *destination)
 Accelerometer and gyroscope self test.

Variables

static const char * TAG = "mpu6050"
static const float accel_res []
static const float gyro_res []
static const uint8_t accel_sta_bits []
static const uint8_t gyro_fifo_bits []
struct { 
   uint8_t   r 
   uint8_t   b 
slave_fifo_bits []
static const uint8_t accel_offs_regs []
static const uint8_t gyro_offs_regs []
static const uint8_t standby_accel_bits []
static const uint8_t standby_gyro_bits []

Detailed Description

ESP-IDF driver for MPU6050 MEMS Sensor.

6-axis motion tracking devices designed for the low power, low cost, and high performance requirements of smartphones, tablets and wearable sensors.

Copyright (c) 2012 Jeff Rowberg https://www.i2cdevlib.com/ Copyright (c) 2019 Angelo Elias Dalzotto 15063.nosp@m.3@up.nosp@m.f.br Copyright (c) 2019 Gabriel Boni Vicari 13319.nosp@m.2@up.nosp@m.f.br Copyright (c) 2019 GEPID - Grupo de Pesquisa em Cultura Digital http://gepid.upf.br/ Copyright (c) 2023 Raghav Jha https://github.com/horsemann07 Copyright (c) 2023 Ruslan V. Uss uncle.nosp@m.rus@.nosp@m.gmail.nosp@m..com

Macro Definition Documentation

◆ CHECK

#define CHECK ( x)
Value:
do { \
esp_err_t __; \
if ((__ = x) != ESP_OK) \
return __; \
} while (0)

◆ CHECK_ARG

#define CHECK_ARG ( VAL)
Value:
do { \
if (!(VAL)) \
return ESP_ERR_INVALID_ARG; \
} while (0)

◆ I2C_FREQ_HZ

#define I2C_FREQ_HZ   (1000000)

Function Documentation

◆ get_accel_value()

float get_accel_value ( mpu6050_dev_t * dev,
int16_t raw )
inlinestatic
Here is the caller graph for this function:

◆ get_gyro_value()

float get_gyro_value ( mpu6050_dev_t * dev,
int16_t raw )
inlinestatic
Here is the caller graph for this function:

◆ read_reg()

esp_err_t read_reg ( mpu6050_dev_t * dev,
uint8_t reg_addr,
uint8_t * value )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_reg_bits()

esp_err_t read_reg_bits ( mpu6050_dev_t * dev,
uint8_t reg_addr,
uint8_t offset,
uint8_t mask,
uint8_t * value )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_reg_bool()

esp_err_t read_reg_bool ( mpu6050_dev_t * dev,
uint8_t reg_addr,
uint8_t offset,
bool * value )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_reg_word()

esp_err_t read_reg_word ( mpu6050_dev_t * dev,
uint8_t reg_addr,
int16_t * value )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shuffle()

int16_t shuffle ( uint16_t word)
inlinestatic
Here is the caller graph for this function:

◆ ushuffle()

uint16_t ushuffle ( uint16_t word)
inlinestatic
Here is the caller graph for this function:

◆ write_reg()

esp_err_t write_reg ( mpu6050_dev_t * dev,
uint8_t reg_addr,
uint8_t data )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_reg_bits()

esp_err_t write_reg_bits ( mpu6050_dev_t * dev,
uint8_t reg_addr,
uint8_t offset,
uint8_t mask,
uint8_t value )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_reg_bool()

esp_err_t write_reg_bool ( mpu6050_dev_t * dev,
uint8_t reg_addr,
uint8_t offset,
bool value )
inlinestatic
Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_reg_word()

esp_err_t write_reg_word ( mpu6050_dev_t * dev,
uint8_t reg_addr,
int16_t value )
static

< Invalid argument

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ accel_offs_regs

const uint8_t accel_offs_regs[]
static
Initial value:
= {
[MPU6050_X_AXIS] = (0x06) ,
[MPU6050_Y_AXIS] = (0x08) ,
[MPU6050_Z_AXIS] = (0x0A) ,
}
@ MPU6050_Z_AXIS
Definition mpu6050.h:114
@ MPU6050_X_AXIS
Definition mpu6050.h:112
@ MPU6050_Y_AXIS
Definition mpu6050.h:113

◆ accel_res

const float accel_res[]
static
Initial value:
= {
[MPU6050_ACCEL_RANGE_2] = 2.0f / 32768.0f,
[MPU6050_ACCEL_RANGE_4] = 4.0f / 32768.0f,
[MPU6050_ACCEL_RANGE_8] = 8.0f / 32768.0f,
[MPU6050_ACCEL_RANGE_16] = 16.0f / 32768.0f,
}
@ MPU6050_ACCEL_RANGE_4
± 4g
Definition mpu6050.h:195
@ MPU6050_ACCEL_RANGE_2
± 2g
Definition mpu6050.h:194
@ MPU6050_ACCEL_RANGE_8
± 8g
Definition mpu6050.h:196
@ MPU6050_ACCEL_RANGE_16
± 16g
Definition mpu6050.h:197

◆ accel_sta_bits

const uint8_t accel_sta_bits[]
static
Initial value:
= {
[MPU6050_X_AXIS] = (7) ,
[MPU6050_Y_AXIS] = (6) ,
[MPU6050_Z_AXIS] = (5) ,
}

◆ b

uint8_t b

◆ gyro_fifo_bits

const uint8_t gyro_fifo_bits[]
static
Initial value:
= {
[MPU6050_X_AXIS] = (6) ,
[MPU6050_Y_AXIS] = (5) ,
[MPU6050_Z_AXIS] = (4) ,
}

◆ gyro_offs_regs

const uint8_t gyro_offs_regs[]
static
Initial value:
= {
[MPU6050_X_AXIS] = (0x13) ,
[MPU6050_Y_AXIS] = (0x15) ,
[MPU6050_Z_AXIS] = (0x17) ,
}

◆ gyro_res

const float gyro_res[]
static
Initial value:
= {
[MPU6050_GYRO_RANGE_250] = 250.0f / 32768.0f,
[MPU6050_GYRO_RANGE_500] = 500.0f / 32768.0f,
[MPU6050_GYRO_RANGE_1000] = 1000.0f / 32768.0f,
[MPU6050_GYRO_RANGE_2000] = 2000.0f / 32768.0f,
}
@ MPU6050_GYRO_RANGE_2000
± 2000 °/s
Definition mpu6050.h:187
@ MPU6050_GYRO_RANGE_500
± 500 °/s
Definition mpu6050.h:185
@ MPU6050_GYRO_RANGE_1000
± 1000 °/s
Definition mpu6050.h:186
@ MPU6050_GYRO_RANGE_250
± 250 °/s
Definition mpu6050.h:184

◆ r

uint8_t r

◆ [struct]

const struct { ... } slave_fifo_bits[]
Initial value:
= {
[MPU6050_SLAVE_0] = {.r = (0x23) ,
.b = (2) },
[MPU6050_SLAVE_1] = {.r = (0x23) ,
.b = (1) },
[MPU6050_SLAVE_2] = {.r = (0x23) ,
.b = (0) },
[MPU6050_SLAVE_3] = {.r = (0x24) ,
.b = (5) },
}
@ MPU6050_SLAVE_0
Definition mpu6050.h:216
@ MPU6050_SLAVE_2
Definition mpu6050.h:218
@ MPU6050_SLAVE_1
Definition mpu6050.h:217
@ MPU6050_SLAVE_3
Definition mpu6050.h:219
uint8_t b
Definition mpu6050.c:522

◆ standby_accel_bits

const uint8_t standby_accel_bits[]
static
Initial value:
= {
[MPU6050_X_AXIS] = (5) ,
[MPU6050_Y_AXIS] = (4) ,
[MPU6050_Z_AXIS] = (3) ,
}

◆ standby_gyro_bits

const uint8_t standby_gyro_bits[]
static
Initial value:
= {
[MPU6050_X_AXIS] = (2) ,
[MPU6050_Y_AXIS] = (1) ,
[MPU6050_Z_AXIS] = (0) ,
}

◆ TAG

const char* TAG = "mpu6050"
static