embedded
communication_error
ai_generated
true
I2C error: NACK received (AF flag set), address 0x68
ID: embedded/i2c-nack
85%Fix Rate
88%Confidence
3Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 32 | active | — | — | — |
Root Cause
I2C slave does not acknowledge. Almost always wrong address (7-bit vs 8-bit confusion) or missing pull-ups.
genericWorkarounds
-
95% success Verify 7-bit address - datasheets often list 8-bit (left-shifted) address
Datasheet says 0xD0 -> 7-bit is 0x68. HAL uses 8-bit: HAL_I2C_Master_Transmit(hi2c, 0xD0, ...)
-
90% success Check hardware: SDA, SCL, pull-ups to VCC
Both lines need pull-ups (4.7k to 3.3V). Idle state should be HIGH.
-
85% success Use logic analyzer to verify actual bus activity
Dead Ends
Common approaches that don't work:
-
Add more pull-up resistors in parallel
70% fail
Too-low resistance causes signal distortion. Standard: 4.7k for 100kHz, 2.2k for 400kHz.
-
Increase I2C clock speed to reduce NACK
82% fail
NACKs are not timing-related. Higher speed makes bus problems worse.
-
Brute-force scan all addresses
55% fail
Some devices (EEPROMs) respond to scan with side effects like data corruption