Difference between pages "DIGIO-128" and "I2CIO-8"

From Land Boards Wiki
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
[[File:tindie-mediums.png|link=https://www.tindie.com/products/land_boards/64128-channel-digital-io-card-digio-128/]]
+
[[File:tindie-mediums.png|link=https://www.tindie.com/products/land_boards/i2c-demo-board-mcp23008-i2cio-8/?pt=ac_prod_search]]
  
[[File:DIGIO-128-X3-CCA_5847-720px.jpg]]
+
<video type="youtube">omUSJpGLv4A</video>
  
<video type="youtube">ATtKuo6iPzM</video>
+
[[File:I2CIO-8_X2-6000-640px.jpg]]
  
 
== Features ==
 
== Features ==
  
* 128 bits of General Purpose Digital I/O (GPIO)
+
* 8 bits of Digital I/O
** Card uses I2C addresses 0x20-0x27 for I/O and 0x50 for Configuration EEPROM
+
* I2C interface
* (8) of [http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf MCP23017] - 16 bit GPIO
+
* [https://ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdf MCP23008] - 8-Bit I/O Expander with I2C Interface
** I2C (Two Wire) host interface
+
* Base address = 0x20
** 100/400 KHZ operation
+
* Address offset jumpers (0-7)
** 25mA sink/source capability per I/O
+
* Interrupt pin on I2C connectors
*** Limited by current in/out of the IC
+
* Interrupt LED
* [https://ww1.microchip.com/downloads/en/DeviceDoc/21210N.pdf 24LC024] Configuration/Personality EEPROM
+
* I2C Daisy-chain connectors
* Jumper selectable I2C terminators
+
* 4 input (or output) jumpers
* Single 4-pin host interface connector (Ground, Power, Clock, Data)
+
* 4 LEDs
* (8) I/O Connectors
+
* 2.7V to 5.5V
** 20 pin, 0.1" Pitch
+
* 49x49mm form factor
** 16 digital I/O
+
* (4) #4-40 mounting holes
** 2 Power
 
** 2 Ground
 
** Interrupt connectors
 
* Power Connector
 
** 3.3V or 5V operation
 
* [https://www.mouser.com/datasheet/2/268/21210G-39776.pdf 24LC024] I2C Personality EEPROM
 
* Compatible with Arduino, Raspberry Pi, BeagleBone Black
 
* 95x95mm form factor
 
* (4) 6-32 mounting holes - one on each corner
 
  
=== I2C Addresses ===
+
== Drivers/Example Code ==
  
* MCP23017 parts 0x20 - 0x27
+
Extensive Driver Support for Arduino, Raspberry Pi, MicroPython, ESP-32, Blue Pill Board, Cypress PSoC
* EEPROM 24LC024 = 0x50
 
  
[[File:DIGIO-128-I2C-Addrs-X2.PNG]]
+
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_I2CIO8 Github repo] - Arduino Driver code
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/I2CIO8 Github repo] - Arduino Example code
 +
* [https://github.com/land-boards/lb-Python-Code/tree/master/MicroPython/ESP32/libraries/I2CIO8 Github repo] -  MicroPython Driver
  
== Connectors ==
+
== Factory Acceptance Test ==
  
=== P1-P4, P6-P9 - Digital I/O Connectors ===
+
=== Test Station Theory of Operations ===
  
* 16 bits per connector
+
* Test Station controls the I2C interface on the UUT
* (2) Power
+
* Three tests
* (2) Ground
+
** Internal Test
 +
** External Loopback Test
 +
** Bounce an LED Test
  
[[File:P1-DIGIO-Conn.PNG]]
+
=== Test Station Set-up ===
  
=== P5, P10 - Interrupt Outputs ===
+
* Uses [[Arduino_Based_Test_Station|ODAS Test Station V2]]
 +
* Unit Under Test (UUT)
 +
* Attach Host Computer USB to the Arduino NANO on the Test Station
 +
* Run puTTY on the Host Computer
 +
** 9600 baud
  
[[file:P5_P10-INTs-Conn-X2.PNG]]
+
=== Card Selection ===
 +
* puTTY will display the menu
 +
<pre>
 +
Checking if EEPROM is present on UUT...EEPROM is not present on UUT
 +
Count of I2C devices in range 0x20-0x27 on UUT = 1
 +
Detected MCP23008
 +
Select the board type (Other)
 +
1 - I2CIO8 board
 +
2 - I2CIO8X board
 +
Select board >
 +
</pre>
  
* Interrupt lines out of the 8 MCP23017 ICs
+
* Select 1
* Can be used for detecting input changes or levels
 
* Interrupt outputs INTA from MCP23017
 
* Can be ignored if not needed
 
** If the inputs are polled, the pins can be ignored
 
  
==== P5 pinout ====
+
<pre>
 +
Init I2CIO-8 card
 +
C=Card Tests, D=Direct, E=EEPROM, I=access Internal DIGIO32
 +
</pre>
  
* P5-1 = INT1
+
=== Running Loopback Card Test ===
* P5-2 = INT2
 
* P5-3 = INT0
 
* P5-4 = INT3
 
  
==== P10 pinout ====
+
* Use loopback cable
 +
* Select Card Tests = "C"
 +
* Select Run Tests = "T"
 +
* Observe test results
 +
<pre>
 +
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
 +
Testing UUT = I2CIO-8
 +
Test PASS = 1, FAIL = 0
 +
</pre>
 +
* Hit ENTER to display menu
 +
<pre>
 +
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
 +
</pre>
  
* P10-1 = INT5
+
=== Running Internal Tests ===
* P10-2 = INT6
 
* P10-3 = INT4
 
* P10-4 = INT7
 
 
 
=== J1 - External Power ===
 
 
 
[[file:J1-Power-X2.PNG]]
 
 
 
* Can be ignored if the card is powered through I2C connector
 
 
 
=== J2, J3 - I2C Connectors ===
 
 
 
* Daisy chained connections
 
* 2nd connector can be ignored
 
* Card can be powered through this connector(s)
 
* MCP23017 parts use I2C slave addresses 0x20-0x27
 
* EEPROM 24LC024 parts use I2C slave address 0x50
 
* Can't use more than one DIGIO-128 per I2C bus without separating busses with an I2C multiplexer
 
** [[I2C-RPT]] - Land Boards 4-Channel I2C Multiplexer/Repeater
 
** [[I2C-RPT-08]] - Land Boards 8-channel I2C Multiplexer/Repeater
 
 
 
 
 
[[File:J2-J3-I2C-conn-X2.PNG]]
 
 
 
=== J4 - I2C Terminators and EEPROM Write Enable ===
 
 
 
[[file:J4-I2C-Terms-X2.PNG]]
 
 
 
* SDA, SCL I2C Terminators
 
** Install jumper to use terminators
 
* WE - EEPROM Write Enable
 
** Install To enable writing config EEPROM
 
 
 
== Schematics ==
 
 
 
* [http://land-boards.com/DIGIO-128/DIGIO-128-X3-sch.pdf Rev X3 schematic]
 
* [http://land-boards.com/DIGIO-128/DIGIO-128-X4-sch.pdf Rev X4 schematic]
 
 
 
== Configuration/Personality EEPROM ==
 
 
 
* [https://ww1.microchip.com/downloads/en/DeviceDoc/21210N.pdf 24LC024] Configuration/Personality EEPROM
 
* Read of EEPROM by ODAS Test Station
 
  
 +
* Remove loopback cable
 +
* Select Card Tests = "C"
 +
* Select Run Tests = "I"
 +
* Observe test results
 +
<pre>
 +
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Tests, X=eXit sub-menu
 +
UUT Internal card tests
 +
Test PASS = 2, FAIL = 0
 +
</pre>
 +
* Hit ENTER to display menu
 
<pre>
 
<pre>
R=Read EEPROM, W=Write EEPROM, X=Exit Menu
+
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
Reading EEPROM
 
Family  = ODAS
 
Company = land-boards.com
 
Product = DIGIO-128
 
eepromAccessMenu() - Finished reading EEPROM
 
 
</pre>
 
</pre>
  
== Testing ==
+
=== Running Blink LED Test ===
 
 
* DIGIO-128 Unit Under Test (UUT)
 
* UUT is tested using [[Arduino Based Test Station]]
 
* (4) 16:16 cables loop adjacent ports
 
**  Port 1 cabled to Port 2, Port 3 to Port 4, etc
 
* I2C cable from [[Arduino Based Test Station]] to UUT
 
** 4 pin Dupont 1:1 cable
 
** Plugged into Port 0 on [[STM32 Black Pill]] card on [[BLACK-PILL-HUB]] in Test Station
 
** Plugged into I2C connector on UUT
 
* [https://www.chiark.greenend.org.uk/~sgtatham/putty/ puTTY] running on PC
 
** USB-C cable to USB connector on [[STM32 Black Pill]] card on [[BLACK-PILL-HUB]] in Test Station
 
** 9600 baud
 
 
 
==== Programming the Configuration EEPROM ====
 
 
 
* Type ENTER to display top level menu
 
* Type E to access EEPROM
 
* Type W to write EEPROM
 
* Menu will be:
 
  
 +
* Select Card Tests = "C"
 +
* Select Run Tests = "B"
 +
* Observe LEDs scanning on the 4 LEDs on the card
 
<pre>
 
<pre>
R=Read EEPROM, W=Write EEPROM, X=Exit Menu
+
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
Select the board type
+
Bounce a bit across outputs
1 - DIGIO16-I2C board
+
Bouncing LEDs I2CIO8 - any key to stop
2 - DIGIO-128 board
 
3 - OptoIn8-I2C board
 
4 - OptoOut8-I2C board
 
5 - DIGIO32-I2C board
 
6 - PROTO16-I2C board
 
7 - ODAS-PSOC5 board
 
8 - ODAS-RELAY16 board
 
A - DIGIO-128/64 board
 
9 - TBD board
 
X - Boards without EEPROMs
 
Select board > 2
 
 
</pre>
 
</pre>
* Select 2
+
* Hit ENTER to display the menu
** DIGIO-128 card
 
 
<pre>
 
<pre>
Writing EEPROM
+
Finished bouncing LEDs
Initializing eep buffer
 
len of buffer=96
 
reading block
 
Family=ODAS
 
Company=land-boards.com
 
Product=DIGIO-128
 
 
</pre>
 
</pre>
  
=== Test Code GitHub Repository ===
+
=== Reference ===
  
 +
* [[Arduino Based Test Station]]
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ODAS/ODASTESTER ODAS Tester Github Repo]
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ODAS/ODASTESTER ODAS Tester Github Repo]
 
== Software Examples/Drivers ==
 
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/DIGIO128 DIGIO-128 Arduino example code]
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_Digio128V2 DIGIO-128 Arduino Driver]
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_Digio128_64 DIGIO-128 - 64-bit version Arduino Driver]
 
* [https://github.com/land-boards/lb-Python-Code/tree/master/MicroPython/ESP32/libraries/digio128 DIGIO-128 Micropython Driver (ESP-32)]
 
* [https://github.com/land-boards/RasPi/blob/master/ODAS/DIGIO128/RasPiDigio128.py Raspberry Pi Example Code] - Requires some knowledge of the [http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf MCP23017 (datasheet)]
 
  
 
== Assembly Sheet ==
 
== Assembly Sheet ==
  
* [[DIGIO-128 Rev X4 Assembly Sheet]]
+
* [[I2CIO8-X Assembly Sheet]]
* [[DIGIO-128 Rev X3 Assembly Sheet]]
 

Revision as of 20:18, 21 March 2022

Tindie-mediums.png

I2CIO-8 X2-6000-640px.jpg

Features

  • 8 bits of Digital I/O
  • I2C interface
  • MCP23008 - 8-Bit I/O Expander with I2C Interface
  • Base address = 0x20
  • Address offset jumpers (0-7)
  • Interrupt pin on I2C connectors
  • Interrupt LED
  • I2C Daisy-chain connectors
  • 4 input (or output) jumpers
  • 4 LEDs
  • 2.7V to 5.5V
  • 49x49mm form factor
  • (4) #4-40 mounting holes

Drivers/Example Code

Extensive Driver Support for Arduino, Raspberry Pi, MicroPython, ESP-32, Blue Pill Board, Cypress PSoC

Factory Acceptance Test

Test Station Theory of Operations

  • Test Station controls the I2C interface on the UUT
  • Three tests
    • Internal Test
    • External Loopback Test
    • Bounce an LED Test

Test Station Set-up

  • Uses ODAS Test Station V2
  • Unit Under Test (UUT)
  • Attach Host Computer USB to the Arduino NANO on the Test Station
  • Run puTTY on the Host Computer
    • 9600 baud

Card Selection

  • puTTY will display the menu
Checking if EEPROM is present on UUT...EEPROM is not present on UUT
Count of I2C devices in range 0x20-0x27 on UUT = 1
Detected MCP23008
Select the board type (Other)
1 - I2CIO8 board
2 - I2CIO8X board
Select board >
  • Select 1
Init I2CIO-8 card
C=Card Tests, D=Direct, E=EEPROM, I=access Internal DIGIO32

Running Loopback Card Test

  • Use loopback cable
  • Select Card Tests = "C"
  • Select Run Tests = "T"
  • Observe test results
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
Testing UUT = I2CIO-8
Test PASS = 1, FAIL = 0
  • Hit ENTER to display menu
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu

Running Internal Tests

  • Remove loopback cable
  • Select Card Tests = "C"
  • Select Run Tests = "I"
  • Observe test results
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Tests, X=eXit sub-menu
UUT Internal card tests
Test PASS = 2, FAIL = 0
  • Hit ENTER to display menu
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu

Running Blink LED Test

  • Select Card Tests = "C"
  • Select Run Tests = "B"
  • Observe LEDs scanning on the 4 LEDs on the card
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
Bounce a bit across outputs
Bouncing LEDs I2CIO8 - any key to stop
  • Hit ENTER to display the menu
Finished bouncing LEDs

Reference

Assembly Sheet