Run into an issue where i2c comms with the notecard fails when I attach too many other devices on the bus.
Using Notecarrier F, with a Feather ESP32-S2 and circuitpython.
I’ve hooked up 8 other devices (sensors, motor drivers and a display) with Qwiic connectors.
These devices all still work after connecting the notecard. However the notecard will fail to respond either intermittently or not at all depending on how many of the devices I have connected.
There are several different exceptions, but most common is
Traceback (most recent call last): File "/i2cdebug.py", line 128, in <module> File "/lib/notecard/validators.py", line 36, in wrap_validator File "/lib/notecard/hub.py", line 103, in syncStatus File "/lib/notecard/notecard.py", line 368, in Transaction OSError: [Errno 116] ETIMEDOUT
Also have seen
RuntimeError: No pull up found on SDA or SCL; check your wiring
[Errno 19] No such device
It seems the notecard’s i2c interface is quite sensitive, and unable to deal with the non-idealities introduced by these other devices on the bus.
I don’t have a proper root cause, but I’ve tried various combinations of pullup resistors and bus frequency. I’ve determined that the best workaround for me is to use a 2nd independent i2c bus for most of my devices.
Posting this here in case there is some way to improve the robustness via notecard firmware.