Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/iio/gyro/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  mpu3050.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/iio/iio.h>
#include <linux/mutex.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/i2c.h>

/**
 * enum mpu3050_fullscale - indicates the full range of the sensor in deg/sec
 */

enum mpu3050_fullscale {
 FS_250_DPS = 0,
 FS_500_DPS,
 FS_1000_DPS,
 FS_2000_DPS,
};

/**
 * enum mpu3050_lpf - indicates the low pass filter width
 */

enum mpu3050_lpf {
 /* This implicity sets sample frequency to 8 kHz */
 LPF_256_HZ_NOLPF = 0,
 /* All others sets the sample frequency to 1 kHz */
 LPF_188_HZ,
 LPF_98_HZ,
 LPF_42_HZ,
 LPF_20_HZ,
 LPF_10_HZ,
 LPF_5_HZ,
 LPF_2100_HZ_NOLPF,
};

enum mpu3050_axis {
 AXIS_X = 0,
 AXIS_Y,
 AXIS_Z,
 AXIS_MAX,
};

/**
 * struct mpu3050 - instance state container for the device
 * @dev: parent device for this instance
 * @orientation: mounting matrix, flipped axis etc
 * @map: regmap to reach the registers
 * @lock: serialization lock to marshal all requests
 * @irq: the IRQ used for this device
 * @regs: the regulators to power this device
 * @fullscale: the current fullscale setting for the device
 * @lpf: digital low pass filter setting for the device
 * @divisor: base frequency divider: divides 8 or 1 kHz
 * @calibration: the three signed 16-bit calibration settings that
 * get written into the offset registers for each axis to compensate
 * for DC offsets
 * @trig: trigger for the MPU-3050 interrupt, if present
 * @hw_irq_trigger: hardware interrupt trigger is in use
 * @irq_actl: interrupt is active low
 * @irq_latch: latched IRQ, this means that it is a level IRQ
 * @irq_opendrain: the interrupt line shall be configured open drain
 * @pending_fifo_footer: tells us if there is a pending footer in the FIFO
 * that we have to read out first when handling the FIFO
 * @hw_timestamp: latest hardware timestamp from the trigger IRQ, when in
 * use
 * @i2cmux: an I2C mux reflecting the fact that this sensor is a hub with
 * a pass-through I2C interface coming out of it: this device needs to be
 * powered up in order to reach devices on the other side of this mux
 */

struct mpu3050 {
 struct device *dev;
 struct iio_mount_matrix orientation;
 struct regmap *map;
 struct mutex lock;
 int irq;
 struct regulator_bulk_data regs[2];
 enum mpu3050_fullscale fullscale;
 enum mpu3050_lpf lpf;
 u8 divisor;
 s16 calibration[3];
 struct iio_trigger *trig;
 bool hw_irq_trigger;
 bool irq_actl;
 bool irq_latch;
 bool irq_opendrain;
 bool pending_fifo_footer;
 s64 hw_timestamp;
 struct i2c_mux_core *i2cmux;
};

/* Probe called from different transports */
int mpu3050_common_probe(struct device *dev,
    struct regmap *map,
    int irq,
    const char *name);
void mpu3050_common_remove(struct device *dev);

/* PM ops */
extern const struct dev_pm_ops mpu3050_dev_pm_ops;

Messung V0.5
C=93 H=89 G=90

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.