The start address for a block write is embedded in this transaction. In this operation the master sends a block of data to the slave as follows:
- The master device asserts a START condition.
- The master sends the 7-bit slave address followed by the write bit (low).
- The addressed slave device asserts ACK.
- The master sends a command code that tells the slave device to expect a block write. The LM94 command code for a block write is F0h.
- The slave asserts ACK.
- The master sends a byte that tells the slave device how many data bytes it will send (N). The SMBus specification allows a maximum of 32 data bytes to be sent in a block write.
- The slave asserts ACK.
- The master sends data byte 1, the starting address of the block write.
- The slave asserts ACK after each data byte.
- The master sends data byte 2.
- The slave asserts ACK.
- The master continues to send data bytes and the slave asserts ACK for each byte.
- The master asserts a STOP condition to end the transaction.
1 | 2 | | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ∼ | 12 | | 13 |
S | Slave Address | W | A | Command F0h (Block Write) | A | Byte Count (N) | A | Data Byte 1 (Start Address) | A | Data Byte 2 | A | ∼ | Data Byte N | A | P |
Special Notes
- Any attempts to write to bytes
beyond normal address space are acknowledged by the LM94 but are ignored.
- Block writes do not wrap from
address FFh back to 00h the address remains at FFh.
- The Byte Count field is ignored
by the LM94. The master device may send more or less bytes and the LM94 accepts
them.
- The SMBus specification requires
that block writes never exceed 32 data bytes. Meeting this requirement means
that only 31 actual data bytes can be sent (the register address counts as one
byte). The LM94 does not care if this requirement is met.