Chip_I2C_MasterTransfer(I2C_ID_T id, I2C_XFER_T *xfer) |
Chip_I2C_MasterRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t *buff, int len) |
static void Init_I2C_PinMux(I2C_ID_T id)
{
switch(id){
case I2C0:
Chip_SYSCTL_PeriphReset(RESET_I2C0);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 4,
(IOCON_FUNC1 | I2C_FASTPLUS_BIT) | IOCON_DIGMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5,
(IOCON_FUNC1 | I2C_FASTPLUS_BIT) | IOCON_DIGMODE_EN);
break;
case I2C1:
Chip_SYSCTL_PeriphReset(RESET_I2C1);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 7,
IOCON_FUNC3 | IOCON_DIGMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 24,
IOCON_FUNC2 | IOCON_DIGMODE_EN);
break;
}
} |
static void i2c_set_mode(I2C_ID_T id, int polling)
{
if (!polling) {
mode_poll &= ~(1 << id);
Chip_I2C_SetMasterEventHandler(id, Chip_I2C_EventHandler);
if(id == I2C0)
NVIC_EnableIRQ(I2C0_IRQn);
else if(id == I2C1)
NVIC_EnableIRQ(I2C1_IRQn);
}
else {
mode_poll |= 1 << id;
if(id == I2C0)
NVIC_DisableIRQ(I2C0_IRQn);
else if(id == I2C1)
NVIC_DisableIRQ(I2C1_IRQn);
Chip_I2C_SetMasterEventHandler(id, Chip_I2C_EventHandlerPolling);
}
} |
static void i2c_app_init(I2C_ID_T id, int speed)
{
Init_I2C_PinMux(id);
/* Initialize I2C */
Chip_I2C_Init(id);
Chip_I2C_SetClockRate(id, speed);
/* Set default mode to interrupt */
i2c_set_mode(id, 0);
} |
void I2C1_IRQHandler(void)
{
i2c_state_handling(I2C1);
} |
buffer[0][0] = 0x48;//H buffer[0][1] = 0x6F;//o buffer[0][2] = 0x6C;//l buffer[0][3] = 0x61;//a buffer[0][4] = 0x20;//_ buffer[0][5] = 0x6D;//m buffer[0][6] = 0x75;//u buffer[0][7] = 0x6E;//n buffer[0][8] = 0x64;//d buffer[0][9] = 0x6F;//o xfer.slaveAddr = 4; //Slave address 4 xfer.txSz = 10;//10 bytes to send xfer.txBuff = buffer[0]; xfer.rxSz = 0;//0 bytes to send xfer.txBuff = 0;//Flush del buffer tmp = Chip_I2C_MasterSend(i2cDev, xfer.slaveAddr, xfer.txBuff, xfer.txSz); |