STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
dev_ism330dhcx.h
Go to the documentation of this file.
1
#ifndef STAR_DEV_ISM330DHCX_H
2
#define STAR_DEV_ISM330DHCX_H
3
4
/*
5
* ISM330DHCX 6-axis IMU (U4), SPI mode 3. Datasheet DS13012 Rev 7.
6
*
7
* Configuration (page numbers in DS13012):
8
* CTRL3_C 0x44 BDU + IF_INC (p.51): halves of a sample never mix,
9
* burst reads auto-increment
10
* CTRL4_C 0x04 I2C_disable (p.52): SPI3 is shared, never mistake
11
* traffic for I2C
12
* CTRL1_XL 0x74 833 Hz, +-16 g (p.49, Tables 42-43)
13
* CTRL2_G 0x71 833 Hz, +-4000 dps (p.50, Tables 45-46)
14
* COUNTER_BDR_REG1 0x80 pulsed data-ready (p.46): a clean edge per sample
15
* INT1_CTRL 0x01 accelerometer data-ready on INT1 (p.47)
16
*
17
* Scale (p.10, Table 2): 0.488 mg/LSB, 140 mdps/LSB.
18
* Temperature (p.13, Table 4): 256 LSB/degC, 0 LSB at 25 degC.
19
*/
20
21
#include <stdint.h>
22
23
#include "
dev_bus.h
"
24
25
#ifdef __cplusplus
26
extern
"C"
{
27
#endif
28
29
#define ISM330_WHO_AM_I_VALUE 0x6BU
30
#define ISM330_ACCEL_UG_PER_LSB 488
/* micro-g */
31
#define ISM330_GYRO_MDPS_PER_LSB 140
/* milli-degrees per second */
32
#define ISM330_TEMP_LSB_PER_DEGC 256
33
34
typedef
struct
{
35
int16_t
temp
;
/* raw; degC = 25 + temp / 256 */
36
int16_t
gyro
[3];
/* raw x, y, z */
37
int16_t
accel
[3];
/* raw x, y, z */
38
}
ism330_sample_t
;
39
40
/* Identify, software-reset, configure and verify every register. */
41
int
ism330_init
(
const
dev_bus_t
* bus);
42
43
/* Accelerometer and gyro to power-down (Idle): ODR_XL = ODR_G = 0000 in
44
* CTRL1_XL / CTRL2_G (Table 43 p.49, Table 46 p.50); 3 uA (p.13). DRDY
45
* stops. ism330_init() wakes it again. */
46
int
ism330_power_down
(
const
dev_bus_t
* bus);
47
48
/* One 14-byte burst from OUT_TEMP_L (20h): temperature, gyro, accel. */
49
int
ism330_read
(
const
dev_bus_t
* bus,
ism330_sample_t
* out);
50
51
#ifdef __cplusplus
52
}
53
#endif
54
#endif
dev_bus.h
ism330_init
int ism330_init(const dev_bus_t *bus)
Definition
dev_ism330dhcx.c:45
ism330_power_down
int ism330_power_down(const dev_bus_t *bus)
Definition
dev_ism330dhcx.c:81
ism330_read
int ism330_read(const dev_bus_t *bus, ism330_sample_t *out)
Definition
dev_ism330dhcx.c:96
dev_bus_t
Definition
dev_bus.h:26
ism330_sample_t
Definition
dev_ism330dhcx.h:34
ism330_sample_t::temp
int16_t temp
Definition
dev_ism330dhcx.h:35
ism330_sample_t::gyro
int16_t gyro[3]
Definition
dev_ism330dhcx.h:36
ism330_sample_t::accel
int16_t accel[3]
Definition
dev_ism330dhcx.h:37
firmware
Flight_Computer
src
chips
dev_ism330dhcx.h
Generated by
1.15.0