embedded communication_error ai_generated true

I2C error: NACK received (AF flag set), address 0x68

ID: embedded/i2c-nack

Also available as: JSON · Markdown
85%Fix Rate
88%Confidence
3Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
32 active

Root Cause

I2C slave does not acknowledge. Almost always wrong address (7-bit vs 8-bit confusion) or missing pull-ups.

generic

Workarounds

  1. 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, ...)
  2. 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.
  3. 85% success Use logic analyzer to verify actual bus activity

Dead Ends

Common approaches that don't work:

  1. Add more pull-up resistors in parallel 70% fail

    Too-low resistance causes signal distortion. Standard: 4.7k for 100kHz, 2.2k for 400kHz.

  2. Increase I2C clock speed to reduce NACK 82% fail

    NACKs are not timing-related. Higher speed makes bus problems worse.

  3. Brute-force scan all addresses 55% fail

    Some devices (EEPROMs) respond to scan with side effects like data corruption