40 ms->i2c_trans.slave_addr = addr;
44 ms->data_available =
false;
45 ms->initialized =
false;
48 ms->is_ms5607 = is_ms5607;
54 ms->initialized =
false;
121 if (
ms->initialized) {
127 switch (
ms->status) {
131 ms->data.d1 = (
ms->i2c_trans.buf[0] << 16) |
132 (
ms->i2c_trans.buf[1] << 8) |
133 ms->i2c_trans.buf[2];
135 if (
ms->data.d1 == 0) {
148 ms->data.d2 = (
ms->i2c_trans.buf[0] << 16) |
149 (
ms->i2c_trans.buf[1] << 8) |
150 ms->i2c_trans.buf[2];
152 if (
ms->data.d2 == 0) {
173 switch (
ms->i2c_trans.status) {
184 ms->data.c[
ms->prom_cnt++] = (
ms->i2c_trans.buf[0] << 8) |
185 ms->i2c_trans.buf[1];
194 ms->initialized =
true;
bool i2c_transmit(struct i2c_periph *p, struct i2c_transaction *t, uint8_t s_addr, uint8_t len)
Submit a write only transaction.
bool i2c_transceive(struct i2c_periph *p, struct i2c_transaction *t, uint8_t s_addr, uint8_t len_w, uint16_t len_r)
Submit a write/read transaction.
@ I2CTransSuccess
transaction successfully finished by I2C driver
@ I2CTransFailed
transaction failed
@ I2CTransDone
transaction set to done by user level
bool ms5607_calc(struct Ms5611Data *ms)
Calculate temperature and compensated pressure for MS5607.
bool ms5611_prom_crc_ok(uint16_t *prom)
Check if CRC of PROM data is OK.
bool ms5611_calc(struct Ms5611Data *ms)
Calculate temperature and compensated pressure for MS5611.
@ MS5611_STATUS_CONV_D2_OK
@ MS5611_STATUS_CONV_D1_OK
void ms5611_i2c_event(struct Ms5611_I2c *ms)
void ms5611_i2c_init(struct Ms5611_I2c *ms, struct i2c_periph *i2c_p, uint8_t addr, bool is_ms5607)
void ms5611_i2c_periodic_check(struct Ms5611_I2c *ms)
Periodic function to ensure proper delay after triggering reset or conversion.
void ms5611_i2c_start_conversion(struct Ms5611_I2c *ms)
void ms5611_i2c_start_configure(struct Ms5611_I2c *ms)
Measurement Specialties (Intersema) MS5611-01BA and MS5607-02BA03 pressure/temperature sensor interfa...
#define MS5611_START_CONV_D1
#define MS5611_SOFT_RESET
#define MS5611_START_CONV_D2
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.