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); |