SW8B PCB0048 MUX
Serial Wombat SW8B PCB0048 MUX I2C Multiplexing board
Video Goes here…
PRELOADED FIRMWARE IMAGE:
Default Image
MUX Usage Guide (See user manual below for overall Serial Wombat guide):
Wombat Pins 1,2,3 and 7 enable I2C mux channels when set high as digital outputs
Wombat Pins 0,4,5, and 6 can be configured to other pin modes (See pin modes available in loaded firmware image)
I2C Frequency up to 100kHz is supported. Faster speed may be possible, but will vary with bus conditions and number of wires and lengths.
Solder Jumper options:
I2C address for the Serial Wombat chip can be configured between 0×60 and 0×6F through closing the 4 address jumpers located near the chip
A board power LED can be enabled by closing the LED jumper at the bottom front of the board
The main I2C bus has optional 2200 ohm pull upresistors that can be enabled by closing the two “PULL” jumpers at the bottom front of the board.
Each muxed I2C bus has optional 10k pullup resistors that can be enabled by closing the two “PULL” jumpers above the QWIIIC connector for that bus on the front side of the board.
Basic Sample Arduino Sketch (see more in the library):
// Enable each bus segment and scan for attached I2C devices
#include <SerialWombat.h>
PCB0048_Mux swMux;
#define MUX_I2C_ADDRESS 0x60
void setup() {
Wire.begin(); //Initialize I2C
Serial.begin(115200); //Initialize Serial
delay(200);
swMux.begin(MUX_I2C_ADDRESS);
}
void scanI2C(){
for (int i2cAddress = 0x0E; i2cAddress <= 0x77; ++ i2cAddress) // Scan through all valid addresses
{
Wire.beginTransmission(i2cAddress); // Look for an I2C Ack
int error = Wire.endTransmission();
if (error == 0)
{
//Got an Ack. Does it behave like a Serial Wombat Chip?
Serial.print("I2C Device found at address 0x");
Serial.println(i2cAddress, HEX); }
}
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("All bus sections disabled:");
swMux.bus1.writePublicData(0);
swMux.bus2.writePublicData(0);
swMux.bus3.writePublicData(0);
swMux.bus7.writePublicData(0);
scanI2C();
Serial.println();
Serial.println();
Serial.println("Bus section 1:");
swMux.bus1.writePublicData(0xFFFF);
swMux.bus2.writePublicData(0);
swMux.bus3.writePublicData(0);
swMux.bus7.writePublicData(0);
scanI2C();
Serial.println();
Serial.println();
Serial.println("Bus section 2:");
swMux.bus1.writePublicData(0);
swMux.bus2.writePublicData(0xFFFF);
swMux.bus3.writePublicData(0);
swMux.bus7.writePublicData(0);
scanI2C();
Serial.println();
Serial.println();
Serial.println("Bus section 3:");
swMux.bus1.writePublicData(0);
swMux.bus2.writePublicData(0);
swMux.bus3.writePublicData(0xFFFF);
swMux.bus7.writePublicData(0);
scanI2C();
Serial.println();
Serial.println();
Serial.println("Bus section 7:");
swMux.bus1.writePublicData(0);
swMux.bus2.writePublicData(0);
swMux.bus3.writePublicData(0);
swMux.bus7.writePublicData(0xFFFF);
scanI2C();
Serial.println();
Serial.println();
delay(10000); // Wait 10 seconds and do it again.
}
Revision History
PCB0048_V1:
Initial Version
Resources:
API Definitions (Pulled from Arduino C++ library, but similar or identical on Arduino, C#, Python)
WombatPanel real time control panel and code generation application
Serial Wombat Protocol protocol analyzer for Saleae Logic application