/* Includes ------------------------------------------------------------------*/ /* * libc */ #include /* * LIBOPENCM3 */ #include #include #include #include #include #include #include #include #if 0 void delay(unsigned int count) { while(count--) {} } #endif int ltc2499Config(uint32_t i2cChannel, u8 address) { int iRtn; u8 buff[2]; // write config register continuous reading buff[0] = 0xb0; // 0xbx x= channel convert config buff[1] = 0x88; // convert config iRtn = I2C_Write(i2cChannel, I2C_MASTER, buff, 2, address); delay (1000000); return iRtn; } int ltc2499Read(uint32_t i2cChannel, u8 address, u8 dataChannel) { int iRtn; u8 cmdBuff[2]; u8 dataBuff[4]; int val = 0; cmdBuff[0] = 0xb0 + dataChannel; // 0xbx single x= channel convert config cmdBuff[1] = 0x88; // convert config iRtn = I2C_MasterWriteRead(i2cChannel, address, (u8 *) cmdBuff, 2, (u8 *) dataBuff, 4); // start conversion channel dataChannel delay (1000000); // wait en of conversion if (iRtn == -1) return (-1); cmdBuff[0] = 0xb0 + dataChannel + 1; // 0xbx x= channel convert config cmdBuff[1] = 0x88; // convert config iRtn = I2C_MasterWriteRead(i2cChannel, address, (u8 *) cmdBuff, 2, (u8 *) dataBuff, 4);// read channel i start conversion next channel delay (1000000); // wait en of conversion if (iRtn == -1) return (-1); val = dataBuff[0] << 24; val += dataBuff[1] << 16; val += dataBuff[2] << 8; val += dataBuff[3]; return ((int) val); } int ltc2499ReadDiff(uint32_t i2cChannel, u8 address, u8 dataChannel) { int iRtn; u8 cmdBuff[2]; u8 dataBuff[4]; int val = 0; cmdBuff[0] = 0xa0 + dataChannel; // 0xax diff x= channel convert config cmdBuff[1] = 0x88; // convert config iRtn = I2C_MasterWriteRead(i2cChannel, address, (u8 *) cmdBuff, 2, (u8 *) dataBuff, 4); // start conversion channel dataChannel delay (1000000); // wait en of conversion if (iRtn == -1) return (-1); cmdBuff[0] = 0xa0 + dataChannel + 1; // 0xax x= channel convert config cmdBuff[1] = 0x88; // convert config iRtn = I2C_MasterWriteRead(i2cChannel, address, (u8 *) cmdBuff, 2, (u8 *) dataBuff, 4);// read channel i start conversion next channel delay (1000000); // wait en of conversion if (iRtn == -1) return (-1); val = dataBuff[0] << 24; val += dataBuff[1] << 16; val += dataBuff[2] << 8; val += dataBuff[3]; return ((int) val); }