I2C-RPT

From Land Boards Wiki
Jump to navigation Jump to search

Tindie-mediums.png

I2C-RPT-01 P1861 720PX.jpg

Features

  • I2C Hub / Repeater / Replicator / Multiplexer / De-multiplexer / Switch
    • PCA9544A Datasheet IC Multiple vendors
    • Four I2C Ports
    • 100KHz/400KHz operation
    • I2C Address fixed at 0x70
  • Host port
    • Controlled via I2C
    • 3.3V or 5V host operation
    • 3.3V or 5V slave ports operation
    • Can power slave cards if they are at the same voltage
  • 3.3V or 5V slave ports operation
    • Removable jumper(s) to supply power from slave
  • Voltage translation between the ports
    • Example: A Raspberry PI which runs 3.3V can control an I2C device which runs at 5V
  • Interrupt line on each channel and host
  • On-board 2.2K termination resistors
  • 49x49mm form factor
  • 4 solid 4-40 mounting holes
  • Drivers/Example Code
    • Arduino driver and example code
    • Raspberry Pi example code

I2C Termination Resistors

  • Card has 2.2K Termination resistors on SDA/SCL lines

PCA9544 TERM LOADS.PNG

Headers

H1-H4 - Headers

  • Jumpers
    • H1 = I2C #0 Power
    • H2 = I2C #1 Power
    • H3 = I2C #2 Power
    • H4 = I2C #3 Power

Power Options

  • The card has flexible power options to power external I2C interfaces
  • Power to the Host Interface comes in J5 Host I2C Interface
    • This power can be used to drive external devices on the 4 I2C slave ports
Simple Method
  • The "simplest" option is to provide power to the external I2C from the I2C-RPT-01 card
    • Install jumper to power the particular I2C interface from the I2C-RPT-01 card
External Power
  • External interface can also have independent power
    • External interfaces can be at different voltage level from the I2C-RPT-01 card
      • Example #1: Card Host voltage can be 5V (Arduino) and interface to 3.3V I2C interfaces
    • Remove Jumper to power from external interface (3.3V or 5V)
    • In this case, the terminators get pulled up from the external interface

Connectors

J1-J4 - I2C Slave ports

  • Ports
    • J1 = I2C Port #0
    • J2 = I2C Port #1
    • J3 = I2C Port #2
    • J4 = I2C Port #3
  • Pinout
  1. GND
  2. VCC (If Hx is installed, card powers this pin)
  3. SDA
  4. SCL
  5. INT*

J5 - I2C to/from Host port

  • Power comes in this connector
    • Voltage matches signal levels
    • 2.2K Ohm terminated
    • I2C address is fixed at 0x70
  1. GND (G)
  2. VCC (V) - Power into the card
  3. SDA (D)
  4. SCL (C)
  5. INT* (I) - Interrupt (active low)

Schematic

Testing

Test Station Hardware

I2C-RPT-01 P1858-720PX.jpg

  • Arduino Based Test Station
    • Built in I2C mux on BLACK-PILL-HUB is set to offset=0x1 so it does not conflict with I2C address of UUT
    • Cabling
      • UUT J5 Host connects to I2C port (J7) on the BLACK-PILL-HUB
      • UUT J5 Host INT pin connects via jumper cable to PB6-SIG
  • Uses 4x of I2CIO-8 cards
    • Cabling 5 wire from I2CIO-8 cards J1 to UUT I2C #0-#3
    • Address jumpers are all installed for base address of 0x20
  • On Unit Under Test (UUT)
    • Card I2C address = 0x70
    • Install H1-H4 shunts

Test Procedure

  • Run puTTY
    • COM port from Device Manager
    • 9600 baud
    • No parity
    • No handshake
  • Menu will display
Checking if EEPROM is present on UUT...EEPROM is not present on UUT
Count of I2C devices in range 0x20-0x27 on UUT = 0
Found external I2C mux card
Select I2C Mux board type
1 - I2C-RPT-01 board
2 - I2C-RPT-08 board
  • Enter 1
  • Replies with
Init I2C-RPT-01 card
I2CIO8 card #0 was detected
I2CIO8 card #1 was detected
I2CIO8 card #2 was detected
I2CIO8 card #3 was detected
C=Card Tests, D=Direct, E=EEPROM, I=access Internal DIGIO32
  • Verify that all 4 I2CIO-8 cards were detected
  • Select C to test card
  • Select B to bounce LED across LEDs on all 4 I2CIO-8 cards
  • Verify all 16 LEDs blink
  • Hit any key to stop blinking
  • Hit T to test card
  • Move jumper across I2CIO-8 card input jumpers
  • Verify action on the screen
  • Hit any key to stop test
  • Mark TEST block on rear of card if passed

Test Station Software

I2C Timing

I2C RPT I2C-Cycle.PNG

Drivers/Example Code

Arduino Driver Functions

LandBoards_I2CRPT01(void) - Class Constructor
void begin() - Assumes I2C address = 0x70
void begin(uint8_t addr) - Offset address (adds base)
void setI2CChannel(uint8_t) - #defines are I2CRPT01_CH0 - I2CRPT01_CH3, I2CRPT01_NONE
uint8_t getI2CChannel(void)
uint8_t getIntStatus(void)

PCA9544 Control Register

PCA9544 CTRL REG.PNG

PCA9544 Status Register

PCA9544 STAT REG.PNG

Issues

Rev X3 Issues

  • Fixed SCK silkscreen to be SCL
  • No issues found

Rev X2 Issues

  • Board functions fine
  • Silkscreen SCK should be SCL

I2C-RPT-01-X2 Changes.png

Rev X1 Issues =

  • SDA/SCL pins are swapped from "normal" pinout

Assembly Sheet