17#define IAM_20380_SENSITIVITY_FS_SEL250 (1.0f / 131.0f)
18#define IAM_20380_SENSITIVITY_FS_SEL500 (1.0f / 65.5f)
19#define IAM_20380_SENSITIVITY_FS_SEL1000 (1.0f / 32.8f)
20#define IAM_20380_SENSITIVITY_FS_SEL2000 (1.0f / 16.4f)
21#define IAM_20380_SAMPLE_RATE_DIV(rate) (1000.0f / rate) - 1
23#define IAM_20380_WHO_AM_I 0x75
25#define IAM_20380_XG_OFFS_USRH 0x13
26#define IAM_20380_XG_OFFS_USRL 0x14
27#define IAM_20380_YG_OFFS_USRH 0x15
28#define IAM_20380_YG_OFFS_USRL 0x16
29#define IAM_20380_ZG_OFFS_USRH 0x17
30#define IAM_20380_ZG_OFFS_USRL 0x18
32#define IAM_20380_SMPLRT_DIV 0x19
33#define IAM_20380_CONFIG 0x1A
34#define IAM_20380_GYRO_CONFIG 0x1B
36#define IAM_20380_XOUT_H 0x43
37#define IAM_20380_XOUT_L 0x44
38#define IAM_20380_YOUT_H 0x45
39#define IAM_20380_YOUT_L 0x46
40#define IAM_20380_ZOUT_H 0x47
41#define IAM_20380_ZOUT_L 0x48
43#define IAM_20380_CONFIG_FS_SEL250 0x00
44#define IAM_20380_CONFIG_FS_SEL500 0x08
45#define IAM_20380_CONFIG_FS_SEL1000 0x10
46#define IAM_20380_CONFIG_FS_SEL2000 0x18
48#define IAM_20380_USER_CTRL 0x6A
49#define IAM_20380_PWR_MGMT_1 0x6B
50#define IAM_20380_PWR_MGMT_2 0x6C
52#define IAM_20380_PWR_MGMT_1_RESET 0x80
53#define IAM_20380_PWR_MGMT_1_CLKSEL 0x01
55#define IAM_20380_PWR_MGMT_2_STBY_XG 0x4
56#define IAM_20380_PWR_MGMT_2_STBY_YG 0x2
57#define IAM_20380_PWR_MGMT_2_STBY_ZG 0x1
59#define IAM_20380_DATA_SIZE 2
60#define IAM_20380_DATA_COUNT 3
61#define IAM_20380_DATA_TOTAL (IAM_20380_DATA_COUNT * IAM_20380_DATA_SIZE)
70typedef struct IAM_20380 {
76 uint8_t
axes[IAM_20380_DATA_COUNT];
77 int8_t
sign[IAM_20380_DATA_COUNT];
80 float bias[IAM_20380_DATA_COUNT];
Struct definition for a GPIO pin.
void IAM_20380_processRawBytes(Gyro_t *, uint8_t *, float *)
Process raw 3-axis data to floating point gyro rates.
IAM_20380_t IAM_20380_init(IAM_20380_t *, SPI_t *, GPIOpin_t, const float, const uint8_t *, const int8_t *)
Initialiser for a IAM_20380 gyroscope.
void IAM_20380_readRawBytes(Gyro_t *, uint8_t *)
Read raw 3-axis data.
void IAM_20380_readGyro(Gyro_t *, float *)
Read 3-axis floating point gyro rates.
void IAM_20380_update(Gyro_t *)
Updates internally stored gyro readings.
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...
Defines the API for the Gyroscope sensor.
uint8_t rawGyroData[IAM_20380_DATA_TOTAL]
Raw gyro rates array.
float gyroData[IAM_20380_DATA_COUNT]
Processed gyro rates array.
float bias[IAM_20380_DATA_COUNT]
Bias offset array.
GPIOpin_t cs
Chip select GPIO.
Gyro_t base
Base gyroscope API.
uint8_t axes[IAM_20380_DATA_COUNT]
Array defining axes of mounting.
float sensitivity
Gyroscope sensitivity.
int8_t sign[IAM_20380_DATA_COUNT]
Array defining sign of axes.
SPI_t * spi
Parent SPI interface.
uint8_t dataSize
Total data size.