SCPA063 March   2023 PCA9306

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
  4. 2General Checks for Dealing With NACKs
    1. 2.1 NACKs
    2. 2.2 Check the Schematic
    3. 2.3 Double Check SDA and SCL Between the Controller and Target
    4. 2.4 RESET Properly Biased
    5. 2.5 Device is Soldered Properly
  5. 3Scopeshots
    1. 3.1 Why use Oscilloscopes for Debugging?
    2. 3.2 Setting up the Oscilloscope
    3. 3.3 Verify the I2C Address When a NACK is Received
    4. 3.4 Validate Start and Stop Conditions
    5. 3.5 Check the Byte Format
    6. 3.6 Are Rise Times Within I2C Standard?
    7. 3.7 Are the Sent Command Bytes Valid?
  6. 4I2C Switches
    1. 4.1 Stop Conditions for TI I2C Switches
  7. 5I2C Buffers
    1. 5.1 VoL versus ViLc of the Buffer
    2. 5.2 VoL of the Buffer Exceeds the ViL of the I2C Target
    3. 5.3 Static Offset of Buffers Cannot Connect to Other Static Offsets
  8. 6Checklists
  9. 7Conclusion

Check the Byte Format

Between the first start and the final stop condition, the controller sends bytes of data to the target. The bytes of data can be sent to the target in the following order: target byte address, command byte, then data byte (assuming the target device has multiple registers). Data sent to the target in a different order can cause NACKs to occur. To prevent this, use an oscilloscope to verify that data is being sent to the target device in the correct order (target byte address, command byte, data byte). Remember that clock pulses on the SCL signal line are used to segment off the individual bits being sent on the SDA line. Every frame needs to have 8 clock pulses for the data bits and 1 clock pulse for the ACK or NACK bit.

GUID-20210702-CA0I-T361-BTRD-0VD1ZXWJTJ67-low.svg Figure 3-4 Example of I2C Write Format With Multiple Register Addresses