| S1 | Idle state |
| S2 | Init transfer in MASTER mode, send "I2C command" byte |
| S3 | Send "transfer address" low byte |
| S4 | Send "transfer address" high byte |
| S5 | Send "byte count" byte |
| S6 | Send block ("byte count" number of bytes, see S5) |
| S7 | Receive block ("byte count" number of bytes, see S5) |
| S8 | Finish transfer (set I2C stop condition) |
| S9 | Init transfer in SLAVE mode, receive "I2C command" byte |
| S10 | Receive "transfer address" low byte |
| S11 | Receive "transfer address" high byte |
| S12 | Receive "byte count" byte |
| S13 | Receive block ("byte count" number of bytes, see S12) |
| S14 | Send block ("byte count" number of bytes, see S12) |
| S15 | Finish transfer (wait for I2C stop condition) |