summaryrefslogtreecommitdiff
path: root/i2c/microchip_mcp23017/README.md
blob: 95437981c2e9e600624c9461a24d6a2504b70547 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
-------------------------------------------------------------------------------
Microchip MCP23017 I/O expander with I2C interface
-------------------------------------------------------------------------------

This is a set of example captures of the MCP23017 16-bit I/O expander with
an I2C interface. For details see the MCP23017/MCP23S17 datasheet which is
titled "16-Bit I/O Expander with Serial Interface":

  http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf


Logic analyzer setup
--------------------

The logic analyzer used was a Saleae clone (samplerate 1MHz). In addition
to the I2C datalines, 6 output pins are captured too.

The host was a Raspberry Pi using Python to access the I2C port. The bitrate
decreased after a few 100ms.

  Probe       MCP23017
  -------------------
  0           A0
  1           A1
  2           A2
  3           B0 / A3
  4           B1 / A4
  5           B2 / A5
  6           SDA
  7           SCL


mcp23017_counter_a_write.sr
---------------------------

Count the Registers OLATA ascending. The lowest 6 bits of the Output A Port
are captured too (A0 - A5).


mcp23017_counter_init_ab_write.sr
---------------------------------

Reset all registers, then count the registers OLATA ascending and OLATB
descending. Both registers are set using one word write operation. The
lowest 3 bits of both output ports are captured too (A0 - A2, B0 - B2).


mcp23017_counter_init_ab_write_read.sr
-------------------------------------

Reset all registers, then count the registers OLATA ascending and OLATB
descending. Both registers are set and read using one word write operations.
The lowest 3 bits of both output ports are captured too (A0 - A2, B0 - B2).