/* * I2C interface initialize. */ void suli_i2c_init(void * i2c_device) { vAHI_SiMasterConfigure( TRUE, //bPulseSuppressionEnable, FALSE, //bInterruptEnable, 31); //uint8 u8PreScaler); //16M/((scale+1)*5) = 100k vAHI_SiSetLocation(TRUE); //D16,D17 as i2c }
void TwoWire::begin(void) { if (onBeginCallback) onBeginCallback(); vAHI_SiSetLocation(false); vAHI_SiMasterConfigure(true, false, SI_CLOCK2PRESCALER(twiClock) ); // set to 100KHz status = MASTER_IDLE; }
PUBLIC void vSMBusInit(void) { /* run bus at 100KHz */ vAHI_SiMasterConfigure(TRUE, FALSE, 7); // 16/[(PreScaler + 1) x 5]MHz // --> 31:100KHz, 7:400KHz }
/** Start I2C */ void StartI2C() { if (I2Cdev_enabled) return; #ifdef I2CDEV_SERIAL_DEBUG i2cdev_debug_depth++; int z; for(z=0;z<i2cdev_debug_depth;z++) DBG_vPrintf(TRACE_APP, "\t"); DBG_vPrintf(TRACE_APP, "StartI2C\r\n"); #endif // Pullups if needed // vAHI_DioSetPullup(0, (1 << 14)); // vAHI_DioSetDirection((1 << 14), 0); // vAHI_DioSetPullup(0, (1 << 15)); // vAHI_DioSetDirection((1 << 15), 0); vAHI_SiMasterConfigure(FALSE, FALSE, 7); //activate I2C with 7 = 400Khz, 31 = 100kHz clock, IdleI2C(); I2Cdev_enabled = TRUE; #ifdef I2CDEV_SERIAL_DEBUG i2cdev_debug_depth--; #endif }