DIGIO32-I2C

From blwiki
Jump to: navigation, search

Tindie-larges-v2.png

32-Bit DIGIO Card with DB-37 Connector

DIGIO32-I2C-P232-720px.jpg

Features

  • 32-bit Digital I/O
    • Two MCP23017 16-bit I2C I/O Expanders
    • Strong library support for all major microprocessors
  • EEPROM for board ID and application specific information
    • Write Enable jumper protects against accidental overwriting
  • I/O Connector is inexpensive/standard DB-37
  • ODAS form factor (width is 95 mm)
  • 3.3V or 5V operation
    • (4) #6 Mounting holes
  • Host connectors
    • Daisy-chain I2C connector
    • Address select jumper (2 addresses - can support up to 4 cards)
    • Expandable I2C via I2C-RPT - I2C Repeater
    • Interrupt out/Card Present
    • Power connector (not required for minimal loads
  • Fuse protected power output on DB-37
  • I2C Termination jumpers for end of I2C chain

Connectors

DIGIO32-I2C.PNG

J1 - Power

  • Connector is 1x5 of 0.1" header
  • Connector is reversible
  • Connector is optional since power can also be brought in via the I2C connector
  1. GND
  2. PWR
  3. GND
  4. PWR
  5. GND

J2 - I2C Daisy-chain

  • Connector is 2x4 of 0.1" header
  • Intended to be used for I2C daisy-chain of 4-pin cabling
  • Power can be attached to the connector or power can be provided to the card via the J1 power connector
    • May still want to connect ground
  1. SCL
  2. SDA
  3. VCC
  4. GND

J3 - Address Select

  • Sets the I2C offset address of the card
  • Two bit address A1, A2
    • A0 is 0 for one chip and 1 for the other chip
  1. A1
  2. A2

J4 - Interrupt/Card Present Flag

  1. GND
  2. INT0*
  3. INT1*
  4. CARD_PRESENT* (Low if card is present, should be pulled up by Host card)

J5 - EEPROM Write Enable

  • Install to allow writes to EEPROM
  • Remove to prohibit writes to EEPROM

J6 I2C Termination

  • Two of two position headers
  • Install headers in each position to terminate I2C line
  • There should only be one I2C termination and it should be at the end of the I2C line

P1 - DB37 Connector

  • Chip 0 (C0) and Chip 1 (C1)
  • A and B "halves" of the MCP23017
  • F5V is 1A fused 5V

DB37Pinout.PNG

DB-37 Ribbon cable

DB37 Pin Descr Conn_40 DB37 Pin Descr Conn_40
1 GND 1 20 GND 2
2 C1PB7 3 21 C1PA0 4
3 C1PB6 5 22 C1PA1 6
4 C1PB5 7 23 C1PA2 8
5 C1PB4 9 24 C1PA3 10
6 C1PB3 11 25 C1PA4 12
7 C1PB2 13 26 C1PA5 14
8 C1PB1 15 27 C1PA6 16
9 C1PB0 17 28 C1PA7 18
10 N/C 19 29 C0PB7 20
11 C0PA0 21 30 C0PB6 22
12 C0PA1 23 31 C0PB5 24
13 C0PA2 25 32 C0PB4 26
14 C0PA3 27 33 C0PB3 28
15 C0PA4 29 34 C0PB2 30
16 C0PA5 31 35 C0PB1 32
17 C0PA6 33 36 C0PB0 34
18 C0PA7 35 37 F+5V 36
19 F+5V 37 N/C N/C 38
N/C N/C 39 N/C N/C 40

Issues with Rev X1 board

  • Power ground layer shifted down (no issue for board since there's no parts in the top)
  • EEPROM A0 needs to be connected to ground.
  • A0 on U1-15 needs to go to ground
    • Cut power etch at U1-15 (or lift pin)
    • Add wire U1-15 pin to U2-4
  • Increased clearances around 2 left mounting holes

DIGIO32-I2C Drivers

Arduino DIGIO32-I2C Library and Example Code

ESP32 MicroPython Library and Example Code

PyBoard MicroPython Library and Example Code

EEPROM

Production Card Tests

LED-32 Cable

  • Marked
    • LED32-1/21 (LED-32 card side)
    • DB37P1-1/21 = DIGIO32 (UUT side)
DB37Pin Descr LED
1 GND GND
2 C1PB7 D15
3 C1PB6 D14
4 C1PB5 D13
5 C1PB4 D12
6 C1PB3 D11
7 C1PB2 D10
8 C1PB1 D9
9 C1PB0 D8
10 N/C N/C
11 C0PA0 D0
12 C0PA1 D1
13 C0PA2 D2
14 C0PA3 D3
15 C0PA4 D4
16 C0PA5 D5
17 C0PA6 D6
18 C0PA7 D7
19 F+5V N/C
20 GND GND
21 C1PA0 D16
22 C1PA1 D17
23 C1PA2 D18
24 C1PA3 D19
25 C1PA4 D20
26 C1PA5 D21
27 C1PA6 D22
28 C1PA7 D23
29 C0PB7 D31
30 C0PB6 D30
31 C0PB5 D29
32 C0PB4 D28
33 C0PB3 D27
34 C0PB2 D26
35 C0PB1 D25
36 C0PB0 D24
37 F+5V N/C

1:1 Tester Cable

  • Uses two DB37RIBBON cards
  • Ribbon cable wires pins 1-40 to pins 1-40
  • Marked
    • DB37P1-1/21 = D32-TST (Test station side)
    • DB37P1-1/21 = DIGIO32 (UUT side)

Test Steps

  • Select board to program EEPROM
  • Select Card Tests
  • Select Bounce LEDs

Assembly Sheet