This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432 I2C Master Receiver Mode - Need to send Register Byte to Slave after Slave Address + R/W bit + Slave Register (MAX7313 Slave)

the standard Master Receiver read transaction sequence: (MSP432 as master with slave device)

  1. Send the start sequence
  2. Send the slave address with R/W bit low
  3. Send the register number
  4. Send the start sequence again (repeated start)
  5. Send the slave address with R/W bit high
  6. Read data byte(s)
  7. Send the stop sequence

This sequence does not work for a MAX7313 I/O Expander : 

[Start + 7bit Address + R/W low + Register Number to Read .. Restart + 7bit Address + R/W high  ... then Read N BITS]

-------------------------------------------------------------------------------------------

Desired Master Receiver Read Transaction Sequence to meet MAX7313 spec sheet: (MSP432 as Master    MAX7313 as Slave)

  1. Send the start sequence 
  2. Send the slave address with R/W bit high (EUSCI_B_CTLW0_TR set as Receiver)
  3. Send the Slave Register Byte
  4. Read data byte(s)
  5. Send the stop sequence

MAX7313 I/O expander chip  Requires   [Start + 7bit Address + R/W high + Register Number to Read .. then Read N BITS]

--------------------------------------------------------------------------------------------

This sequence does not work: [Start + 7bit Address + R/W low + Register Number to Read .. Restart + 7bit Address + R/W high  ... then Read N BITS]

Is this supported for MSP432 / What would be the best workaround?

Note: Master Transmit Sequence works well with I2C for setting MAX7317 outputs

  • Figure 10 of the MAX7317 datasheet is wrong.

    The text in "Message Format for Reading" is correct (if somewhat misleading). The command byte has the value that was set by the previous write transaction, and is not part of the read transaction. All data bytes in the read transaction are sent from the MAX to the master.

  • You were correct the MAX7313 spec sheet Figure 10 is wrong - performed "Repeat Start" operation and received the correct I/O input states
    - Thank You Very Much

**Attention** This is a public forum