Difference between revisions of "DIGIO32-I2C"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
* 32-bit Digital I/O | * 32-bit Digital I/O | ||
− | ** | + | ** (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* | |
+ | |||
+ | * 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 | + | *** Tests both inputs/outputs to/from the card |
− | === | + | === Setup === |
* [[PiPicoMite02 Based Test Station]] | * [[PiPicoMite02 Based Test Station]] | ||
Line 428: | Line 434: | ||
* Some UUTs have Personality EEPROMs | * Some UUTs have Personality EEPROMs | ||
− | * | + | * 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
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
J1 - Power
- Optional use since card can be powered from I2C Daisy-chain connector pins
- Pinout
- GND
- Vcc
- GND
- Vcc
- GND
J2 - Daisy-Chained I2C
- 2x4 header
- Duplicated signals on each pair
- SCL
- SDA
- Vcc
- 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
J4 - Interrupt Out, Card Present
- Pinout
- GND
- INT1*
- INT0*
- 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
P1 - DB-37 Female Pinout
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
- Bounce LED test
Setup
- PiPicoMite02 Based Test Station
- PiPicoMite02 Processor card
- LED-32
- DB37RIBBON plugged into UUT
- (2) of 2x10 cables to connect between DB37RIBBON and LED-32
- DB37-1 marked on cable end goes near P1 marked on DB37RIBBON
- LED32-1 marked on cable end goes near HDR1 marked on LED-32
- I2C cable from Arduino Based Test Station to I2C connector on UUT
- Unit Under Test (UUT)
- Check chip pin 1 orientation
- Power test card for shorts
Card Test Procedure
- Power up Test Station/UUT
Program EEPROM
- Some UUTs have Personality EEPROMs
- Runs ODASEEPROM.bas code
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
(Shown with BLACK-PILL-HUB based card test station)
- Cable DB-37 to LED-32 card
- Runs DIGIO32I2C-01.bas code
- Type
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
(Shown with BLACK-PILL-HUB based card test station)
- Alternate to Bounce LED test
- Runs DIGIO32I2C-02.bas code
- (2) DB37RIBBON cards with male connectors
- Cables to connect the two DB37RIBBON cards
- Type
chdir "/lbcards/GPIO32" load "DIGIO32I2C-02.bas" run
- Program will halt if failure
- Prints out a pass count
- Hit any key to stop
Drivers
- GitHub repo for the DigIO32-I2C Card Arduino Driver
- GitHub repo for the DigIO32-I2C Card Arduino examples