esp-idf: I2C Master regression (IDFGH-12542)
Answers checklist.
- I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
- I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
- I have searched the issue tracker for a similar issue and not found a similar issue.
IDF version.
v5.3-dev-3220-g9c99a385ad
Espressif SoC revision.
ESP32 rev 3
Operating System used.
macOS
How did you build your project?
VS Code IDE
If you are using Windows, please specify command line type.
None
Development Kit.
ESP32 WRover Kit
Power Supply used.
USB
What is the expected behavior?
I2C device discovery to work
What is the actual behavior?
I2C device discovery fail on ALL devices
Steps to reproduce.
Our code was working 100% on 6 different platforms configured with 2 ~ 6 different I2C devices per platform.
Using master up to 2024/03/18 all platforms all devices discovered and worked perfectly.
Having come back from leave, with NO changes to the code other than updating to latest master, all platforms fail trying to discover all devices. With the ESP-32 Rover devkit v4.1 test device only the first address (0x08) returns the correct status (ESP_ERR_NOT_FOUND) , no device found, all remaining addresses return ESP_OK
Debug Logs.
9.126 0 main i2c.master I2C hardware NACK detected
9.134 0 main i2c.master s_i2c_synchronous_transaction(833): I2C transaction failed
9.137 0 main i2c.master i2c_master_transmit(1035): I2C transaction failed
I2C -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -a -b -c -d -e -f
0x: xx xx xx xx xx xx xx xx -- 09 0A 0B 0C 0D 0E 0F
1x: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
2x: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
3x: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
4x: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
5x: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
6x: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
7x: 70 71 72 73 74 75 76 77
More Information.
No response
About this issue
- Original URL
- State: closed
- Created 3 months ago
- Comments: 22 (1 by maintainers)
Commits related to this issue
- fix(i2c_master): Fix the issue that probe cannot work properly after a general call, Closes https://github.com/espressif/esp-idf/issues/13547 — committed to ep-whwong/esp-idf by mythbuster5 3 months ago
Have added the flag and it does take the error message away. Maybe the name
flags.disable_ack_checkis a bit misleading since it seems to disable both ACK and NACK checks?But what I think should be looked at (and corrected) is the fact this this error
I2C hardware NACK detectedleaves the I2C environment is a state of complete disfunction, no other devices is detected properly afterwards.Lastly, the new
scp_wait_usmember does not seem to have any getter/setter API’s. If these are added it might help us to customise the configuration for a specific address once we have determined the actual device at the address.It might also be able to help once errors with specific devices are discovered after having been added to the bus, without having to remove and re-add the device from the I2C bus.