I2C SPI USB CAN eSPI Cable Testing View All Videos Quick Start Guides Software Downloads App Notes White Papers User Manuals Knowledge Base Sales Support About Us
Products Blog Sales Support Contact Search
How Do I Analyze and Troubleshoot an MCTP Device on the SMBus?
Rena Ayeras

Analyzing an MCTP device

Image by Geralt

Question from the Customer:

We are running a series of MCTP commands to a slave device (address 0x3a) using the Aardvark I2C/SPI Host Adapter (address 0x70). We observed some NACKs occurred. Could you help us understand what is causing this? Looking at the SMBus specification, we believe this should not happen.

Oscilloscope showing the occurrence of NACK signals and clock stretching

Also, can you provide information about the clock stretching that occurs?

Response from Technical Support:

Thank you for your questions! Using the  MCTP and SMBus compatible tools that we have in the lab, the Aardvark I2C/SPI Host Adapter as the master device and the I2C/SPI Activity Board as the slave device, we were unable to duplicate the results that you described. However, we can provide guidelines to help check the operation of your MCTP device, as well as describe why clock stretching occurs.

Troubleshooting Tips for SMBus Setup and MCTP Devices

To easily apply commands and view/analyze live data, we recommend using the Control Center Serial Software. Here is an overview of the setup:

  1. Set the slave 7-bit address 0x30
  2. Use the command code 0x40
  3. Read one byte of data

In the Control Center Serial Software, select the Master tab under I2C Control and do the following:

  1. Enter 0x30 in the Slave Addr: text field.
  2. Enter 40 in the Message text field.
  3. Check the No Stop
  4. Enter 1 in the Number of Bytes text field.
  5. Click the Master Write.
  6. Click Master Read.

The transactions will be displayed in the Transaction Log as shown below:

Display of MCTP transactions from Aardvark host adapter to device with Control Center Serial Software

For advanced examples of analysis and troubleshooting, please refer to Monitoring and Emulating SMBus and PMBus Using Total Phase I2C Tools.

About Clock Stretching

The Aardvark adapter supports clock stretching, as specified in I2C protocols. Clock stretching allows an I2C slave device to force the master device into a wait state. A slave device may perform clock stretching when it needs more time to manage data, such as storing received data or preparing to transmit another byte of data. This typically occurs after the slave device has received and acknowledged a byte of data.

The Aardvark adapter is designed to support clock stretching as either a master device or a slave device. However, only a slave device can initiate the clock stretch. The clock stretching feature cannot be disabled or otherwise controlled in the Aardvark adapter.

For more information, please refer to the article What Causes I2C Clock Stretching? When Is It Needed?

We hope this answers your questions. Additional resources that you may find helpful include the following:

If you want more information, feel free to contact us with your questions, or request a demo that applies to your application.