aboutsummaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/i2c.rst31
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
-----------------------