#include <Arduino.h>
#include <i2c_device.h>
enum class Switch_Digital : uint16_t {
Address = 0x0023,
SWITCH_BATT_ENABLE_0 = 0x0001,
SWITCH_GND_ENABLE_0 = 0x0002,
SWITCH_BATT_ENABLE_1 = 0x0004,
SWITCH_GND_ENABLE_1 = 0x0008,
SWITCH_BATT_ENABLE_2 = 0x0800,
SWITCH_GND_ENABLE_2 = 0x0400,
SWITCH_BATT_ENABLE_3 = 0x0200,
SWITCH_GND_ENABLE_3 = 0x0100
};
void rawDiagRead(const char* DevName, I2CDevice dev)
{
uint8_t portval;
dev.read(0x06, &portval, true);
Serial.printf("%s Port 0x06 = 0x%0.2X\n",DevName,portval);
dev.read(0x07, &portval, true);
Serial.printf("%s Port 0x07 = 0x%0.2X\n",DevName,portval);
dev.read(0x02, &portval, true);
Serial.printf("%s Port 0x02 = 0x%0.2X\n",DevName,portval);
dev.read(0x03, &portval, true);
Serial.printf("%s Port 0x03 = 0x%0.2X\n",DevName,portval);
dev.read(0x00, &portval, true);
Serial.printf("%s Port 0x00 = 0x%0.2X\n",DevName,portval);
dev.read(0x01, &portval, true);
Serial.printf("%s Port 0x01 = 0x%0.2X\n",DevName,portval);
}
I2CMaster& master = Master;
I2CDevice Switch_Digital_Ex = I2CDevice(master, (uint8_t)Switch_Digital::Address, _BIG_ENDIAN);
void setup() {
master.set_internal_pullups(InternalPullup::disabled);
master.set_pad_control_configuration(IOMUXC_PAD_ODE | IOMUXC_PAD_DSE(2) | IOMUXC_PAD_SPEED(1) | IOMUXC_PAD_HYS);
master.begin(100 * 1000U);
}
void loop() {
while(true)
{
rawDiagRead("Switch -----", Switch_Digital_Ex);
delay(1000);
}
}