Difference between revisions of "DIGIO32-I2C"

From Land Boards Wiki
Jump to navigation Jump to search
 
(12 intermediate revisions by the same user not shown)
Line 8: Line 8:
  
 
* 32-bit Digital I/O
 
* 32-bit Digital I/O
** Two [http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf MCP23017] 16-bit I2C I/O Expanders
+
** (2) [https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23017-Data-Sheet-DS20001952.pdf MCP23017 Datasheet] - Rev D
 +
** [https://hackaday.com/2023/02/03/mcp23017-went-through-shortage-hell-lost-two-inputs/?fbclid=IwAR1ktG1CsU7ns5fmTYXdlpBLdqaJmBioXrVrG1_Lgqe8MTQr1AY4rp6IETU MCP23017... LOST TWO INPUTS]
 +
*** MCP23017 now a 14/16-bit expander, with two of the pins (GPA7 and GPB7) losing their input capabilities
 +
*** The chips look the same, are called the same, and act mostly the same — if you don’t download the latest version of the datasheet (Revision D), you’d never know that there’s been a change
 
* [https://www.mouser.com/ProductDetail/579-24LC024-P 24LC024] [[Open_Data_Acquisition_System#Personality_EEPROM|ODAS Personality EEPROM]]
 
* [https://www.mouser.com/ProductDetail/579-24LC024-P 24LC024] [[Open_Data_Acquisition_System#Personality_EEPROM|ODAS Personality EEPROM]]
 
** pid = 6
 
** pid = 6
Line 69: Line 72:
 
# INT1*
 
# INT1*
 
# INT0*
 
# INT0*
* Card Present*
+
# Card Present*
 +
 
 +
* Interrupt lines are pulled-up
  
 
=== J5 - EEPROM Write Enable ===
 
=== J5 - EEPROM Write Enable ===
Line 399: Line 404:
 
== Testing ==
 
== Testing ==
  
 +
* Program Personality EEPROM
 
* There are two card tests
 
* There are two card tests
 
** Bounce LED test
 
** Bounce LED test
Line 405: Line 411:
 
** Card to card test
 
** Card to card test
 
*** More flexible/faster test
 
*** More flexible/faster test
*** Tests both inputs/outputs from/to the card
+
*** Tests both inputs/outputs to/from the card
  
=== Cards ===
+
=== Setup ===
  
 
* [[PiPicoMite02 Based Test Station]]
 
* [[PiPicoMite02 Based Test Station]]
Line 428: Line 434:
  
 
* Some UUTs have Personality EEPROMs
 
* Some UUTs have Personality EEPROMs
* Run
+
* Runs [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/ODAS_EEPROM/ODASEEPROM.bas ODASEEPROM.bas] code
  
 
<pre>
 
<pre>
Line 434: Line 440:
 
load "ODASEEPROM.bas"
 
load "ODASEEPROM.bas"
 
run
 
run
 +
 
</pre>
 
</pre>
  
Line 477: Line 484:
  
 
[[FILE:DIGIO32-I2C_P1999_720px.jpg]]
 
[[FILE:DIGIO32-I2C_P1999_720px.jpg]]
 +
 +
(Shown with [[BLACK-PILL-HUB]] based card test station)
  
 
* Alternate to Bounce LED test
 
* Alternate to Bounce LED test
 
* Runs [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/GPIO32/DIGIO32I2C-02.bas DIGIO32I2C-02.bas] code
 
* Runs [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/GPIO32/DIGIO32I2C-02.bas DIGIO32I2C-02.bas] code
* (2) [[DB37RIBBON]] cards
+
* (2) [[DB37RIBBON]] cards with male connectors
* Cables to connect two [[DB37RIBBON]] cards
+
* Cables to connect the two [[DB37RIBBON]] cards
 
* Type
 
* Type
  
 
<pre>
 
<pre>
 +
chdir "/lbcards/GPIO32"
 
load "DIGIO32I2C-02.bas"
 
load "DIGIO32I2C-02.bas"
 
run
 
run
 +
 
</pre>
 
</pre>
  

Latest revision as of 16:43, 8 August 2023

Tindie-mediums.png

DIGIO32-I2C-P232-720px.jpg

Features

  • 32-bit Digital I/O
    • (2) MCP23017 Datasheet - Rev D
    • MCP23017... LOST TWO INPUTS
      • MCP23017 now a 14/16-bit expander, with two of the pins (GPA7 and GPB7) losing their input capabilities
      • The chips look the same, are called the same, and act mostly the same — if you don’t download the latest version of the datasheet (Revision D), you’d never know that there’s been a change
  • 24LC024 ODAS Personality EEPROM
    • pid = 6
    • Write Enable jumper protects EEPROM against accidental damage
  • I/O Connector is inexpensive/standard DB-37 Female
  • I2C Interface
    • Daisy-chain I2C connector
    • I2C Termination jumpers for end of I2C chain
    • I2C Address select jumper (2 addresses - can support up to 4 cards)
  • Power Options
    • Supports 3.3V or 5V signal levels
    • Fuse protected power output on DB-37
  • Power connector (not required for minimal loads
  • ODAS form factor (width is 95 mm)
  • 6-32 Mounting holes

Connectors

DIGIO32-I2C-X2-bw.PNG

J1 - Power

  • Optional use since card can be powered from I2C Daisy-chain connector pins
  • Pinout
  1. GND
  2. Vcc
  3. GND
  4. Vcc
  5. GND

J2 - Daisy-Chained I2C

  • 2x4 header
  • Duplicated signals on each pair
  1. SCL
  2. SDA
  3. Vcc
  4. GND

J3 - Address Offset Jumpers

  • Set the address offset for the MCP23017 and EEPROM
  • MCP23017 base addresses are 0x20-0x21
  • Card can be set to
    • 0x20-0x21
    • 0x22-0x23
    • 0x24-0x25
    • 0x26-0x27
  • Jumpers orientation

DIGIO32 ADDR J3.PNG

J4 - Interrupt Out, Card Present

  • Pinout
  1. GND
  2. INT1*
  3. INT0*
  4. Card Present*
  • Interrupt lines are pulled-up

J5 - EEPROM Write Enable

  • Install to allow writes to EEPROM
  • Remove to disallow writes to EEPROM

J6 - I2C Terminators

  • Install to terminate I2C lines
  • Terminators should only be installed at one point in the chain at the end of the chain
  • Orientation of jumpers

DIGIO32 I2CTERMS J6.PNG

P1 - DB-37 Female Pinout

DB37Pinout.PNG

P1 - DB-37 Female Pin List

  • Useful list for mapping pins to applications
  • Can copy-paste this table to spreadsheet
DB37Pin Descr DB37Pin Descr
1 GND 20 GND
2 C1PB7 21 C1PA0
3 C1PB6 22 C1PA1
4 C1PB5 23 C1PA2
5 C1PB4 24 C1PA3
6 C1PB3 25 C1PA4
7 C1PB2 26 C1PA5
8 C1PB1 27 C1PA6
9 C1PB0 28 C1PA7
10 N/C 29 C0PB7
11 C0PA0 30 C0PB6
12 C0PA1 31 C0PB5
13 C0PA2 32 C0PB4
14 C0PA3 33 C0PB3
15 C0PA4 34 C0PB2
16 C0PA5 35 C0PB1
17 C0PA6 36 C0PB0
18 C0PA7 37 F+5V
19 F+5V

P1 - DB-37 to DB37RIBBON Pin list

  • The card canbe used with a DB37RIBBON RB-38 to ribbon adapter card
  • This is the map of the pinout when used with the DB37RIBBON card
    • The DB37RIBBON adapter has a male connector when used with this card
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

Schematic

Testing

  • Program Personality EEPROM
  • There are two card tests
    • Bounce LED test
      • Good for visual verification/debugging
      • Only tests outputs from UUT
    • Card to card test
      • More flexible/faster test
      • Tests both inputs/outputs to/from the card

Setup

Card Test Procedure

  • Power up Test Station/UUT

Program EEPROM

chdir "/lbcards/ODAS_EEPROM"
load "ODASEEPROM.bas"
run

  • If the UUT EEPROM is already programmed, the result is:
Found device at 0x50
Personality EEPROM contents
 Signature = ODAS
 Version = 1
 Rsvd = 0
 NumAtoms = 2
 eeplen = 96
 uuid = 0000000000000000
 Product ID = 6 (DIGIO32-I2C)
 vslen = 32
 pslen = 32
 Vendor String = LAND-BOARDS.COM
 Product String = DIGIO32-I2C
Re-write (Y/N)?

Bounce LED Test

DIGIO32-I2C P1994 720px.jpg

(Shown with BLACK-PILL-HUB based card test station)

chdir "/lbcards/GPIO32"
load "DIGIO32I2C-01.bas"
run
  • Should see the LEDs go around the LED-32 card
  • Hit any key to stop (after finishing rotation)

Card-to-Card Test

DIGIO32-I2C P1999 720px.jpg

(Shown with BLACK-PILL-HUB based card test station)

chdir "/lbcards/GPIO32"
load "DIGIO32I2C-02.bas"
run

  • Program will halt if failure
  • Prints out a pass count
  • Hit any key to stop

Drivers

Assembly Sheet