void portableCommonNackI2C(I2cBusConnection* i2cBusConnection) { I2cBus* i2cBus = i2cBusConnection->i2cBus; if (i2cBus == NULL) { NotAckI2C1(); } else { I2C_MODULE i2cModule = getI2C_MODULE(i2cBus->port); I2CAcknowledgeByte(i2cModule, false); } }
unsigned int portableMasterWriteI2C(I2cBusConnection* i2cBusConnection, unsigned char data) { I2cBus* i2cBus = i2cBusConnection->i2cBus; if (i2cBus == NULL) { return MasterWriteI2C1(data); } else { I2C_MODULE i2cModule = getI2C_MODULE(i2cBus->port); return I2CSendByte(i2cModule, data); } }
void portableCommonStopI2C(I2cBusConnection* i2cBusConnection) { I2cBus* i2cBus = i2cBusConnection->i2cBus; if (i2cBus == NULL) { StopI2C1(); } else { I2C_MODULE i2cModule = getI2C_MODULE(i2cBus->port); I2CStop(i2cModule); } }
void i2cMasterInitialize(I2cBus* i2cBus) { OutputStream* outputStream = getDebugOutputStreamLogger(); appendString(outputStream, "Initializing I2C ..."); // Avoid more than one initialization if (i2cBus->initialized) { printI2cBus(outputStream, i2cBus); appendCRLF(outputStream); appendString(getDebugOutputStreamLogger(), "\n!!! ALREADY INITIALIZED !!!\n"); return; } i2cBus->initialized = true; #define I2C_BRG 0xC6 // 100khz for PIC32 // Configure I2C for 7 bit address mode #define I2C_CON I2C_ON i2cBus->config = I2C_CON; if (i2cBus == NULL) { OpenI2C1( // Configure I2C for 7 bit address mode. I2C_CON, // 100khz for PIC32. I2C_BRG); } else { I2C_MODULE i2cModule = getI2C_MODULE(i2cBus->port); I2CConfigure(i2cModule, I2C_ON); I2CSetFrequency(i2cModule, GetPeripheralClock(), 100000L); } WaitI2C(i2cBus); // Indicates that it's ok ! appendString(outputStream, "OK\n"); printI2cBus(outputStream, i2cBus); appendCRLF(outputStream); }