Beispiel #1
0
/*
 * 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

}
Beispiel #4
0
/** 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

}