diff --git a/firmware/src/tmag5273.c b/firmware/src/tmag5273.c index 4154b6d..30bf8be 100644 --- a/firmware/src/tmag5273.c +++ b/firmware/src/tmag5273.c @@ -111,6 +111,14 @@ bool tmag5273_is_present() return false; } +bool tmag5273_change_addr(uint8_t i2c_addr) +{ + tmag5273_write_reg(0x0c, (i2c_addr << 1) | 0x01); + instances[current_instance].addr = i2c_addr; + uint8_t new_addr = tmag5273_read_reg(0x0c) >> 1; + return new_addr == i2c_addr; +} + bool tmag5273_init_sensor() { tmag5273_write_reg(0x03, 0x01 << 2); // Enable angle calculation diff --git a/firmware/src/tmag5273.h b/firmware/src/tmag5273.h index eef6d7e..26ef039 100644 --- a/firmware/src/tmag5273.h +++ b/firmware/src/tmag5273.h @@ -15,6 +15,8 @@ void tmag5273_init(unsigned instance, i2c_inst_t *i2c_port, uint8_t i2c_addr); void tmag5273_use(unsigned instance); bool tmag5273_is_present(); +bool tmag5273_change_addr(uint8_t i2c_addr); + bool tmag5273_init_sensor(); uint8_t tmag5273_read_reg(uint8_t addr);