AN 502: Implementing SMBus Controller in Altera MAX Series

ID 683635
Date 9/22/2014
Public Using the Status Register

If the host wants to configure the controller in Master mode to perform a read operation with the CRC checking enabled:

  1. The host sets the START, PEC, R/W, and M/S bits of the status register. The first byte of data that is transferred on the bus (address of the slave to be communicated) is written in the data register.
  2. The controller then serially outputs the data on the SMBDAT line.
  3. After the controller receives an acknowledgement, the controller reads a byte of data and interrupts the host, which should now read the data from the data register.
  4. If the host is not reading the data from the data register, the controller waits for approximately 32 ms and sets the IRQ and the busy_bus signals.
  5. If the host wants the controller to generate a stop condition after reading a byte of data, the host sets the STOP bit in the status register. The STOP bit is generated after reading two bytes if the PEC bit is set. If the PEC bit is not set, the STOP bit is generated after reading only one byte of data.