summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/rp2/machine_i2c.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/ports/rp2/machine_i2c.c b/ports/rp2/machine_i2c.c
index 3b895ba4d..56f012a5e 100644
--- a/ports/rp2/machine_i2c.c
+++ b/ports/rp2/machine_i2c.c
@@ -145,11 +145,20 @@ STATIC int machine_i2c_transfer_single(mp_obj_base_t *self_in, uint16_t addr, si
ret = mp_machine_soft_i2c_transfer(&soft_i2c.base, addr, 1, &bufs, flags);
gpio_set_function(self->scl, GPIO_FUNC_I2C);
gpio_set_function(self->sda, GPIO_FUNC_I2C);
+ return ret;
} else {
ret = i2c_write_blocking(self->i2c_inst, addr, buf, len, nostop);
}
}
- return (ret < 0) ? -MP_EIO : ret;
+ if (ret < 0) {
+ if (ret == PICO_ERROR_TIMEOUT) {
+ return -MP_ETIMEDOUT;
+ } else {
+ return -MP_EIO;
+ }
+ } else {
+ return ret;
+ }
}
STATIC const mp_machine_i2c_p_t machine_i2c_p = {