44 #if !defined(CHIP_LPC110X) 70 #define RET_SLAVE_TX 6 71 #define RET_SLAVE_RX 5 72 #define RET_SLAVE_IDLE 2 73 #define RET_SLAVE_BUSY 0 78 #define I2C_STA_STO_RECV 0x20 83 #define I2C_I2CONSET_AA ((0x04)) 84 #define I2C_I2CONSET_SI ((0x08)) 85 #define I2C_I2CONSET_STO ((0x10)) 86 #define I2C_I2CONSET_STA ((0x20)) 87 #define I2C_I2CONSET_I2EN ((0x40)) 92 #define I2C_I2CONCLR_AAC ((1 << 2)) 93 #define I2C_I2CONCLR_SIC ((1 << 3)) 94 #define I2C_I2CONCLR_STOC ((1 << 4)) 95 #define I2C_I2CONCLR_STAC ((1 << 5)) 96 #define I2C_I2CONCLR_I2ENC ((1 << 6)) 101 #define I2C_CON_AA (1UL << 2) 102 #define I2C_CON_SI (1UL << 3) 103 #define I2C_CON_STO (1UL << 4) 104 #define I2C_CON_STA (1UL << 5) 105 #define I2C_CON_I2EN (1UL << 6) 110 #define I2C_STAT_CODE_BITMASK ((0xF8)) 111 #define I2C_STAT_CODE_ERROR ((0xFF)) 116 #define I2C_I2STAT_NO_INF ((0xF8)) 117 #define I2C_I2STAT_BUS_ERROR ((0x00)) 122 #define I2C_I2STAT_M_TX_START ((0x08)) 123 #define I2C_I2STAT_M_TX_RESTART ((0x10)) 124 #define I2C_I2STAT_M_TX_SLAW_ACK ((0x18)) 125 #define I2C_I2STAT_M_TX_SLAW_NACK ((0x20)) 126 #define I2C_I2STAT_M_TX_DAT_ACK ((0x28)) 127 #define I2C_I2STAT_M_TX_DAT_NACK ((0x30)) 128 #define I2C_I2STAT_M_TX_ARB_LOST ((0x38)) 133 #define I2C_I2STAT_M_RX_START ((0x08)) 134 #define I2C_I2STAT_M_RX_RESTART ((0x10)) 135 #define I2C_I2STAT_M_RX_ARB_LOST ((0x38)) 136 #define I2C_I2STAT_M_RX_SLAR_ACK ((0x40)) 137 #define I2C_I2STAT_M_RX_SLAR_NACK ((0x48)) 138 #define I2C_I2STAT_M_RX_DAT_ACK ((0x50)) 139 #define I2C_I2STAT_M_RX_DAT_NACK ((0x58)) 144 #define I2C_I2STAT_S_RX_SLAW_ACK ((0x60)) 145 #define I2C_I2STAT_S_RX_ARB_LOST_M_SLA ((0x68)) 146 // #define I2C_I2STAT_S_RX_SLAW_ACK ((0x68)) 147 #define I2C_I2STAT_S_RX_GENCALL_ACK ((0x70)) 148 #define I2C_I2STAT_S_RX_ARB_LOST_M_GENCALL ((0x78)) 149 // #define I2C_I2STAT_S_RX_GENCALL_ACK ((0x78)) 150 #define I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK ((0x80)) 151 #define I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK ((0x88)) 152 #define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK ((0x90)) 153 #define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK ((0x98)) 154 #define I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX ((0xA0)) 160 #define I2C_I2STAT_S_TX_SLAR_ACK ((0xA8)) 161 #define I2C_I2STAT_S_TX_ARB_LOST_M_SLA ((0xB0)) 162 // #define I2C_I2STAT_S_TX_SLAR_ACK ((0xB0)) 163 #define I2C_I2STAT_S_TX_DAT_ACK ((0xB8)) 164 #define I2C_I2STAT_S_TX_DAT_NACK ((0xC0)) 165 #define I2C_I2STAT_S_TX_LAST_DAT_ACK ((0xC8)) 166 #define I2C_SLAVE_TIME_OUT 0x10000000UL 171 #define I2C_I2DAT_BITMASK ((0xFF)) 172 #define I2C_I2DAT_IDLE_CHAR (0xFF) 178 #define I2C_I2MMCTRL_MM_ENA ((1 << 0)) 179 #define I2C_I2MMCTRL_ENA_SCL ((1 << 1)) 180 #define I2C_I2MMCTRL_MATCH_ALL ((1 << 2)) 181 #define I2C_I2MMCTRL_BITMASK ((0x07)) 186 #define I2DATA_BUFFER_BITMASK ((0xFF)) 191 #define I2C_I2ADR_GC ((1 << 0)) 192 #define I2C_I2ADR_BITMASK ((0xFF)) 197 #define I2C_I2MASK_MASK(n) ((n & 0xFE)) 202 #define I2C_I2SCLH_BITMASK ((0xFFFF)) 207 #define I2C_I2SCLL_BITMASK ((0xFFFF)) 212 #define I2C_SETUP_STATUS_ARBF (1 << 8) 213 #define I2C_SETUP_STATUS_NOACKF (1 << 9) 214 #define I2C_SETUP_STATUS_DONE (1 << 10) 220 #define I2C_BYTE_SENT 0x01 221 #define I2C_BYTE_RECV 0x02 222 #define I2C_LAST_BYTE_RECV 0x04 223 #define I2C_SEND_END 0x08 224 #define I2C_RECV_END 0x10 225 #define I2C_STA_STO_RECV 0x20 227 #define I2C_ERR (0x10000000) 228 #define I2C_NAK_RECV (0x10000000 | 0x01) 230 #define I2C_CheckError(ErrorCode) (ErrorCode & 0x10000000) 235 #define I2C_MONITOR_CFG_SCL_OUTPUT I2C_I2MMCTRL_ENA_SCL 236 #define I2C_MONITOR_CFG_MATCHALL I2C_I2MMCTRL_MATCH_ALL
int Chip_I2C_MasterTransfer(I2C_ID_T id, I2C_XFER_T *xfer)
Transmit and Receive data in master mode.
void(* I2C_EVENTHANDLER_T)(I2C_ID_T, I2C_EVENT_T)
Event handler function type.
int Chip_I2C_IsMasterActive(I2C_ID_T id)
Checks if master xfer in progress.
void Chip_I2C_Init(I2C_ID_T id)
Initializes the LPC_I2C peripheral with specified parameter.
void Chip_I2C_SlaveSetup(I2C_ID_T id, I2C_SLAVE_ID sid, I2C_XFER_T *xfer, I2C_EVENTHANDLER_T event, uint8_t addrMask)
Setup a slave I2C device.
void Chip_I2C_DeInit(I2C_ID_T id)
De-initializes the I2C peripheral registers to their default reset values.
I2C_EVENTHANDLER_T Chip_I2C_GetMasterEventHandler(I2C_ID_T id)
Get pointer to current function handling the events.
void Chip_I2C_SetClockRate(I2C_ID_T id, uint32_t clockrate)
Set up clock rate for LPC_I2C peripheral.
void Chip_I2C_Disable(I2C_ID_T id)
Disable I2C peripheral's operation.
enum I2C_ID I2C_ID_T
I2C interface IDs.
void Chip_I2C_EventHandler(I2C_ID_T id, I2C_EVENT_T event)
Default event handler for interrupt base operation.
int Chip_I2C_SetMasterEventHandler(I2C_ID_T id, I2C_EVENTHANDLER_T event)
Set function that must handle I2C events.
I2C_EVENT_T
I2C master events.
I2C_STATUS_T
I2C transfer status.
void Chip_I2C_MasterStateHandler(I2C_ID_T id)
I2C Master transfer state change handler.
I2C register block structure.
void Chip_I2C_SlaveStateHandler(I2C_ID_T id)
I2C Slave event handler.
uint32_t Chip_I2C_GetClockRate(I2C_ID_T id)
Get current clock rate for LPC_I2C peripheral.
Master transfer data structure definitions.
void Chip_I2C_EventHandlerPolling(I2C_ID_T id, I2C_EVENT_T event)
Default event handler for polling operation.
int Chip_I2C_MasterSend(I2C_ID_T id, uint8_t slaveAddr, const uint8_t *buff, uint8_t len)
Transmit data to I2C slave using I2C Master mode.
I2C_SLAVE_ID
I2C Slave Identifiers.
int Chip_I2C_MasterRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t *buff, int len)
Set function that must handle I2C events.
int Chip_I2C_IsStateChanged(I2C_ID_T id)
I2C peripheral state change checking.
int Chip_I2C_MasterCmdRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t cmd, uint8_t *buff, int len)
Transfer a command to slave and receive data from slave after a repeated start.