Difference between revisions of "I2CIO-8X"

From Land Boards Wiki
Jump to navigation Jump to search
 
(37 intermediate revisions by the same user not shown)
Line 10: Line 10:
 
* I2C interface
 
* I2C interface
 
* MCP23008P
 
* MCP23008P
* Base address = 0x20
+
* I2C Base address = 0x20
* Address offset jumpers (0-7)
+
** Address offset jumpers (0-7)
 
* Interrupt pin on I2C connectors
 
* Interrupt pin on I2C connectors
 +
* Interrupt LED
 
* I2C Daisy-chain connectors
 
* I2C Daisy-chain connectors
 +
* I2C terminators (2.2K) with selection jumpers
 
* GVS (Ground/Voltage/Signal) pins for all 8-bits
 
* GVS (Ground/Voltage/Signal) pins for all 8-bits
 
* 2.7V to 5.5V
 
* 2.7V to 5.5V
Line 20: Line 22:
  
 
== Headers/Jumpers ==
 
== Headers/Jumpers ==
 +
 +
[[file:I2CIO-8X_CAD.PNG]]
  
 
=== J1, J2 - I2C Connectors ===
 
=== J1, J2 - I2C Connectors ===
Line 40: Line 44:
  
 
* Install all three for address = 0x20
 
* Install all three for address = 0x20
 +
 +
== Schematics ==
 +
 +
* [http://land-boards.com/I2CIO-8X/I2CIO-8X_RevX1_Schematic.pdf RevX3 Schematic]
  
 
== Factory Acceptance Test ==
 
== Factory Acceptance Test ==
  
[[FILE:I2CIO-8X_P1823-720PX.jpg]]
+
[[FILE:I2CIO-8X_P1866_720PX.jpg]]
  
 
=== Test Station Theory of Operations ===
 
=== Test Station Theory of Operations ===
  
* Test Station controls the I2C interface on the UUT
+
* Test Station controls the I2C interface on the Unit Under Test (UUT)
 
* Three tests
 
* Three tests
 
** Internal Test
 
** Internal Test
Line 56: Line 64:
  
 
* Uses [[Arduino_Based_Test_Station|ODAS Test Station V2]]
 
* Uses [[Arduino_Based_Test_Station|ODAS Test Station V2]]
* Ribbon cable sets
+
** Cable from I2C Port 0 on [[BLACK-PILL-HUB]] to UUT marked "I2C UUT" (observe orientation ground)
** Loopback cable Connector
+
* Loopback cable Connector connects pins 1 to 5, 2 to 6, 3 to 7, 4 to 8
** [[LED-32]] cable
+
* Blue bin marked I2C-RPT-01/I2C-RPT-08 and I2CIO-8/I2CIO-8X
 +
* [[LED-TEST-2]] Card
 +
** Cable with I2CIO-8 GND/SIG marked
 
* Unit Under Test (UUT)
 
* Unit Under Test (UUT)
 
* Attach Host Computer USB to the Arduino NANO on the Test Station
 
* Attach Host Computer USB to the Arduino NANO on the Test Station
 
* Run puTTY on the Host Computer
 
* Run puTTY on the Host Computer
** 9600 baud
+
** 9600 baud, No handshake
  
 
=== Card Selection ===
 
=== Card Selection ===
* puTTY will display the menu
+
* CPU will attempt to auto-detect the card
 +
* If the card cannot automatically be detected, then display the best choices menu
 
<pre>
 
<pre>
 
Checking if EEPROM is present on UUT...EEPROM is not present on UUT
 
Checking if EEPROM is present on UUT...EEPROM is not present on UUT
 
Count of I2C devices in range 0x20-0x27 on UUT = 1
 
Count of I2C devices in range 0x20-0x27 on UUT = 1
 +
No external I2C mux card
 
Detected MCP23008
 
Detected MCP23008
 
Select the board type (Other)
 
Select the board type (Other)
Line 74: Line 86:
 
2 - I2CIO8X board
 
2 - I2CIO8X board
 
Select board >
 
Select board >
 +
 
</pre>
 
</pre>
  
Line 83: Line 96:
 
</pre>
 
</pre>
  
=== Running Loopback Card Test ===
+
=== Running Eternal Loopback Card Test ===
 +
 
 +
[[file:I2CIO-8X_P1870-720px.jpg]]
  
* Use loopback cable
+
* Use loopback cable marked "I2CIO8X"
 
* Select Card Tests = "C"
 
* Select Card Tests = "C"
 
* Select Run Tests = "T"
 
* Select Run Tests = "T"
Line 115: Line 130:
 
</pre>
 
</pre>
  
=== Running Blink LED Test ===
+
=== Running Bounce LED Test ===
 +
 
 +
[[FILE:I2CIO-8X_P1866_720PX.jpg]]
  
* Attach [[LED-32]] cable
+
* Attach [[LED-TEST-2]] cable
 +
** I2CIO-8 GND to GND pins on 3x8 GVS
 +
** I2CIO-8 SIG to SIG pins on 3x8 GVS
 
* Select Card Tests = "C"
 
* Select Card Tests = "C"
 
* Select Run Tests = "B"
 
* Select Run Tests = "B"
* Observe LEDs scanning on [[LED-32]]
+
* Observe LEDs scanning on [[LED-TEST-2]]
 
<pre>
 
<pre>
 
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
 
L=Loop/S=Single, T=Test, B=Bounce LEDs, I=UUT Int'l Test, X=eXit sub-menu
Line 138: Line 157:
 
== Drivers/Example Code ==
 
== Drivers/Example Code ==
  
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_I2CIO8X Github repo] - Driver code
+
Extensive Driver Support for Arduino, Raspberry Pi, MicroPython, ESP-32, Blue Pill Board, Cypress PSoC
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/I2CIO8X Github repo] - Example code
+
 
 +
=== Arduino Driver / Examples ===
 +
 
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_I2CIO8X LandBoards_I2CIO8X Arduino Driver] - GitHub repo
 +
** [https://www.arduino.cc/en/Guide/Libraries?setlang=en#importing-a-zip-library Importing an Arduino ZIP library]
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_I2CIO8X/examples Example code] - GitHub repo
 +
 
 +
=== BeagleBone Black ===
 +
 
 +
<video type="youtube">66ku727KieA</video>
 +
 
 +
* [https://github.com/land-boards/BBB/tree/master/MCP23008 MCP23008 Example code]
 +
** [http://land-boards.com/blwiki/index.php?title=BeagleBone#Enable_the_I2C_devices_on_the_BeagleBone_Black_Rev_C Enable the I2C devices on the BeagleBone Black Rev C]
 +
* [https://sites.google.com/a/cameon.net/beaglebone/home/i2c-devices Enable the I2C devices on the BeagleBone Black]
 +
 
 +
=== ESP32 ===
 +
 
 +
* [https://github.com/land-boards/lb-Python-Code/tree/master/MicroPython/ESP32/libraries/I2CIO8 Github repo] - MicroPython Driver
 +
 
 +
=== PSOC5 Driver ===
 +
 
 +
* [https://github.com/land-boards/RasPi/blob/master/RPI_PSOC5/RPI_PSOC5_CARD_TEST_STATION.cydsn/DIGIO8Driver.c DIGIO8Driver.c]
 +
* [https://github.com/land-boards/RasPi/blob/master/RPI_PSOC5/RPI_PSOC5_CARD_TEST_STATION.cydsn/DIGIO8Driver.h DIGIO8Driver.h]
 +
 
 +
=== Raspberry Pi Example ===
 +
 
 +
* [https://github.com/land-boards/RasPi/blob/master/RPI-I2C-Hub/IntrTestRPiHub/IntrTestRPiHub.py IntrTestRPiHub.py]
 +
 
 +
=== Raspberry Pi Pico ===
 +
 
 +
==== MMBASIC ====
 +
 
 +
* [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/I2CIO8-ReadWrite.bas I2CIO8-ReadWrite.bas]
 +
* [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/I2CIO8-Bounce.bas I2CIO8-Bounce.bas]
  
 
== Assembly Sheet ==
 
== Assembly Sheet ==
  
 
* [[I2CIO8-X Assembly Sheet]]
 
* [[I2CIO8-X Assembly Sheet]]

Latest revision as of 22:34, 31 May 2022

Tindie-mediums.png

I2CIO-8X-6104-720px.jpg

Features

  • 8 bits of Digital I/O
  • I2C interface
  • MCP23008P
  • I2C Base address = 0x20
    • Address offset jumpers (0-7)
  • Interrupt pin on I2C connectors
  • Interrupt LED
  • I2C Daisy-chain connectors
  • I2C terminators (2.2K) with selection jumpers
  • GVS (Ground/Voltage/Signal) pins for all 8-bits
  • 2.7V to 5.5V
  • 49x49mm form factor
  • (4) #4-40 mounting holes

Headers/Jumpers

I2CIO-8X CAD.PNG

J1, J2 - I2C Connectors

  • Daisy-chain connectors
  • Can ignore second connector
  • Pinout
  1. GND
  2. Power (3.3V or 5V)
  3. SDA
  4. SCL
  5. Interrupt (Out)

H8, H9 - I2C Terminators

  • Install to terminate SDA/SCL with 2.2K terminator

A0-A2 - I2C Address Offset

  • Install all three for address = 0x20

Schematics

Factory Acceptance Test

I2CIO-8X P1866 720PX.jpg

Test Station Theory of Operations

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

Test Station Set-up

  • Uses ODAS Test Station V2
    • Cable from I2C Port 0 on BLACK-PILL-HUB to UUT marked "I2C UUT" (observe orientation ground)
  • Loopback cable Connector connects pins 1 to 5, 2 to 6, 3 to 7, 4 to 8
  • Blue bin marked I2C-RPT-01/I2C-RPT-08 and I2CIO-8/I2CIO-8X
  • LED-TEST-2 Card
    • Cable with I2CIO-8 GND/SIG marked
  • Unit Under Test (UUT)
  • Attach Host Computer USB to the Arduino NANO on the Test Station
  • Run puTTY on the Host Computer
    • 9600 baud, No handshake

Card Selection

  • CPU will attempt to auto-detect the card
  • If the card cannot automatically be detected, then display the best choices 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
No external I2C mux card
Detected MCP23008
Select the board type (Other)
1 - I2CIO8 board
2 - I2CIO8X board
Select board >

  • Select 2
Init I2CIO-8X card
C=Card Tests, D=Direct, E=EEPROM, I=access Internal DIGIO32

Running Eternal Loopback Card Test

I2CIO-8X P1870-720px.jpg

  • Use loopback cable marked "I2CIO8X"
  • 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-8X
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 Bounce LED Test

I2CIO-8X P1866 720PX.jpg

  • Attach LED-TEST-2 cable
    • I2CIO-8 GND to GND pins on 3x8 GVS
    • I2CIO-8 SIG to SIG pins on 3x8 GVS
  • Select Card Tests = "C"
  • Select Run Tests = "B"
  • Observe LEDs scanning on LED-TEST-2
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 I2CIO8X - any key to stop
  • Hit ENTER to display the menu
Finished bouncing LEDs

Reference

Drivers/Example Code

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

Arduino Driver / Examples

BeagleBone Black

ESP32

PSOC5 Driver

Raspberry Pi Example

Raspberry Pi Pico

MMBASIC

Assembly Sheet