Difference between revisions of "SWLEDX8-I2C"

From Land Boards Wiki
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 58: Line 58:
 
** MCP23017 Port A connects to SWITCHES 0-7 on [[SWLEDX8]]
 
** MCP23017 Port A connects to SWITCHES 0-7 on [[SWLEDX8]]
 
** MCP23017 Port B connects to LEDs 0-7 on [[SWLEDX8]]
 
** MCP23017 Port B connects to LEDs 0-7 on [[SWLEDX8]]
 +
* Board Rev 2 reverses bit order for byte transfers can be used
  
 
[[file:SWLEDX8-I2C_P1.PNG]]
 
[[file:SWLEDX8-I2C_P1.PNG]]
Line 85: Line 86:
  
 
[[file:SWLEDX8-I2C_P3.PNG]]
 
[[file:SWLEDX8-I2C_P3.PNG]]
 +
 +
{| class="wikitable"
 +
! I2C Address
 +
! J3(A2)
 +
! J3(A1)
 +
! J3(A0)
 +
|-
 +
| 0x0
 +
| In
 +
| In
 +
| In
 +
|-
 +
| 0x1
 +
| In
 +
| In
 +
| Out
 +
|-
 +
| 0x2
 +
| In
 +
| Out
 +
| In
 +
|-
 +
| 0x3
 +
| In
 +
| Out
 +
| Out
 +
|-
 +
| 0x4
 +
| Out
 +
| In
 +
| In
 +
|-
 +
| 0x5
 +
| Out
 +
| In
 +
| Out
 +
|-
 +
| 0x6
 +
| Out
 +
| Out
 +
| In
 +
|-
 +
| 0x7
 +
| Out
 +
| Out
 +
| Out
 +
|-
 +
|}
  
 
== Drivers / Software Examples ==
 
== Drivers / Software Examples ==
Line 111: Line 160:
  
 
* [https://github.com/land-boards/lb-Python-Code/blob/master/MicroPython/PyBoard%20Clone/libraries/mcp23017/mcp23017.py PyBoard MicroPython Driver]
 
* [https://github.com/land-boards/lb-Python-Code/blob/master/MicroPython/PyBoard%20Clone/libraries/mcp23017/mcp23017.py PyBoard MicroPython Driver]
 +
 +
==== CircuitPython ====
 +
 +
* [https://github.com/land-boards/lb-boards/blob/master/Projects/QTPy/Land%20Boards/Land%20Boards%20QT%20Py%20Code/SWLEDX8.py SWLEDX8.py] = Control the card
  
 
=== Raspberry Pi Pico ===
 
=== Raspberry Pi Pico ===
Line 117: Line 170:
  
 
* [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/SWLEDX8-01.bas SWLEDX8-01.bas] - Read 8x switches, write 8x LEDs
 
* [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/SWLEDX8-01.bas SWLEDX8-01.bas] - Read 8x switches, write 8x LEDs
 +
* [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/GPIO16-02.bas MMBASIC Example Code] - Bounce a bit across the 16-bits (not for use with [[SWLEDX8]] card)
 +
* [https://github.com/land-boards/RasPiPico/blob/main/PicoMite_MMBASIC/PicoMite_VGA/Land%20Boards%20BASIC%20Programs/lbcards/swledx8-03.bas swledx8-03.bas] - Write alternating pattern to LEDs then read/write switches to LEDs
  
 
=== I2C VHDL Code ===
 
=== I2C VHDL Code ===
Line 132: Line 187:
 
* '''Not''' functionally the same as Rev X1
 
* '''Not''' functionally the same as Rev X1
 
** Flips the data bits to match the [[SWLEDX8]] card
 
** Flips the data bits to match the [[SWLEDX8]] card
*** Programs can run in bytes (no shuffling)
+
*** Programs can read/write in bytes (no shuffling of bits needed)
 
* Change resistors from SMT (0805) to through hole (1/8W)
 
* Change resistors from SMT (0805) to through hole (1/8W)
 
* Adds silkscreen Front/Rear
 
* Adds silkscreen Front/Rear

Latest revision as of 10:35, 21 June 2022

SWLEDX8-I2C-P119-Orth-720px.JPG

Features

  • 16-Bit Digital I/O card with a small form factor
  • Card can be used standalone or stacked together with the SWLEDX8 card
  • I2C Daisy-Chain (In/Out) connectors
  • (3) I2C Address select jumpers for up to 8 devices per I2C bus
  • SCL/SDA termination jumpers
  • 2x10 pins Digital I/O Header
    • 16 digital pins
    • 2 power, 2 ground pins
  • 59mmx38mm
  • (4) #4-40 mounting holes
  • Software Drivers

Build Options

  • There are a number of options for using the card
    • Stacked option with SWLEDX8 card
    • Small footprint option
    • Low height/profile option

Stacked option with SWLEDX8 card

  • SWLEDX8 card mounts above this card
  • Pins can be directly mounted to both cards or male/female connector pairs can be used

SWLEDX8-I2C FRONT(DOWN) REV2.png

Small footprint option

SWLEDX8-I2C FRONT(STRT) REV2.png

Low height/profile option

SWLEDX8-I2C FRONT(RT ANGL) REV2.png

Rear Side Marking

SWLEDX8-I2C REAR(STRT) REV2.png

Connectors

  • Connectors are as follows

SWLEDX8-I2C-CAD(REV2).PNG

P1 - GPIO Pins

SWLEDX8-I2C P1A.PNG

Connections to SWLEDX8 Card

  • When paired with SWLEDX8
    • MCP23017 Port A connects to SWITCHES 0-7 on SWLEDX8
    • MCP23017 Port B connects to LEDs 0-7 on SWLEDX8
  • Board Rev 2 reverses bit order for byte transfers can be used

SWLEDX8-I2C P1.PNG

P2 - I2C Interface

SWLEDX8-I2C P2A.PNG

  • 2X5 header
  • Pinout
  1. GND
  2. VCC
  3. SDA
  4. SCL
  5. INTA

SWLEDX8-I2C P2.PNG

P3 - I2C Terminators / I2C Address Offset Jumpers

SWLEDX8-I2C P3A.PNG

  • Install left 2 jumpers to terminate I2C bus
    • Typically, the "last" card in a chain
  • Install right 3 jumpers for I2C base address offset in range 0x20 (all installed) to 0x27 (all removed)

SWLEDX8-I2C P3.PNG

I2C Address J3(A2) J3(A1) J3(A0)
0x0 In In In
0x1 In In Out
0x2 In Out In
0x3 In Out Out
0x4 Out In In
0x5 Out In Out
0x6 Out Out In
0x7 Out Out Out

Drivers / Software Examples

  • Any MCP23017 library should work with this card
  • Here's our tested code

Arduino

  • LandBoards MCP23017
    • pinMode(uint8_t bit, uint8_t value) - Set bits 0-7=Input, 8-15=Output
    • readGPIOA() - Read the 8 Switches
    • writeOLATB(uint8_t baData) _ Write the 8 LEDs
    • digitalRead(uint8_t bit) - read a single Switch (bit=0-7)
    • digitalWrite(uint8_t bit, uint8_t wrVal) - write a single LED (nit=8-15)
  • SWLEDX8_01.ino - Read 8 Switches, Write 8 LEDs

MicroPython Drivers

ESP32 MicroPython Driver

PyBoard MicroPython Driver

CircuitPython

Raspberry Pi Pico

MMBASIC

I2C VHDL Code

Mechanicals

SWLEDX8-I2C-MECHS(REV2).PNG

Versions

Rev 2

  • Not functionally the same as Rev X1
    • Flips the data bits to match the SWLEDX8 card
      • Programs can read/write in bytes (no shuffling of bits needed)
  • Change resistors from SMT (0805) to through hole (1/8W)
  • Adds silkscreen Front/Rear
  • Added test block to rear
  • Moves "Rev 2" silkscreen to rear

Rev X1

  • Words, no issues

Assembly Sheet