summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Halbert <halbert@adafruit.com>2021-03-25 21:01:02 -0400
committerGitHub <noreply@github.com>2021-03-25 21:01:02 -0400
commit155b61f0275efc1eac805ed37070834e81bb32ba (patch)
tree64274a41ee143c5cbf8107a69320f6e0ab1ad599
parent5810461adf297f625dd108956e74e04a9600767a (diff)
parentb8d4f9655f62f05e650a5baa256c8310aaa3f5dd (diff)
Merge pull request #4378 from Gadgetoid/patch-remove-rp2040-i2c-bitbang
RP2040: Remove short-write bitbang from I2C
-rw-r--r--ports/raspberrypi/common-hal/busio/I2C.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/ports/raspberrypi/common-hal/busio/I2C.c b/ports/raspberrypi/common-hal/busio/I2C.c
index c9f89fadd..0190959f8 100644
--- a/ports/raspberrypi/common-hal/busio/I2C.c
+++ b/ports/raspberrypi/common-hal/busio/I2C.c
@@ -98,7 +98,12 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
}
#endif
- // Create a bitbangio.I2C object to do short writes.
+ // Create a bitbangio.I2C object to do 0 byte writes.
+ //
+ // These are used to non-invasively detect I2C devices by sending
+ // the address and confirming an ACK.
+ // They are not supported by the RP2040 hardware.
+ //
// Must be done before setting up the I2C pins, since they will be
// set up as GPIO by the bitbangio.I2C object.
//
@@ -157,9 +162,9 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) {
}
uint8_t common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr,
- const uint8_t *data, size_t len, bool transmit_stop_bit) {
- if (len <= 2) {
- // The RP2040 I2C peripheral will not do writes 2 bytes or less long.
+ const uint8_t *data, size_t len, bool transmit_stop_bit) {
+ if (len == 0) {
+ // The RP2040 I2C peripheral will not perform 0 byte writes.
// So use bitbangio.I2C to do the write.
gpio_set_function(self->scl_pin, GPIO_FUNC_SIO);