diff options
-rw-r--r-- | source/i2c.rst | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/source/i2c.rst b/source/i2c.rst index 8f1b26f..670b91d 100644 --- a/source/i2c.rst +++ b/source/i2c.rst @@ -4,15 +4,25 @@ ===== |i2c| is a crude and easy-to-hack serial protocol that requires only -two wires/channels for communication between many devices. Every -message passed on the bus is between a *master* (who initiates the -message) and a *slave* device. Slaves are addressed using 7-bit -addresses (up to 127 unique devices); 10-bit addressing is also -possible. Every message consists of an arbitrary combination of 8-bit -reads and writes as requested by the master. Higher level -functionality, such as reading a particular register value, is -achieved by writing to set the memory location then reading to pull -out the data. +two wires/channels for communication between Maple and many other +devices. + +.. contents:: Contents + :local: + +Overview +-------- + +Communication via |i2c| is broken up into messages. Every message is +between a *master* device, which initiates the message, and a *slave* +device, which responds. + +Slaves are addressed using 7-bit addresses (up to 127 unique devices); +10-bit addressing is also possible. Every message consists of an +arbitrary combination of 8-bit reads and writes as requested by the +master. Higher level functionality, such as reading a particular +register value, is achieved by writing to set the memory location then +reading to pull out the data. Note that the master/slave designation is on a message-by-message basis. Maple can act as both a master (messages initiated by user @@ -20,9 +30,6 @@ code) and slave device (responding to requests via configurable interrupt handlers) at the same time (though slave mode is currently unimplemented). -.. contents:: Contents - :local: - Hardware/Circuit Design ----------------------- |