40 u32Div = (uint32_t)(((
SystemCoreClock * 10) / (u32BusClock * 4) + 5) / 10 - 1);
66 SYS->IPRST1 &= ~SYS_IPRST1_I2C0RST_Msk;
71 SYS->IPRST1 &= ~SYS_IPRST1_I2C1RST_Msk;
75 i2c->
CTL &= ~I2C_CTL_I2CEN_Msk;
120 i2c->
CTL = (i2c->
CTL & ~0x3C) | u32Reg;
135 i2c->
CTL &= ~I2C_CTL_INTEN_Msk;
164 uint32_t u32Divider = i2c->
CLKDIV;
183 u32Div = (uint32_t)(((
SystemCoreClock * 10) / (u32BusClock * 4) + 5) / 10 - 1);
265 i2c->
ADDR1 = (u8SlaveAddr << 1) | u8GCMode;
268 i2c->
ADDR2 = (u8SlaveAddr << 1) | u8GCMode;
271 i2c->
ADDR3 = (u8SlaveAddr << 1) | u8GCMode;
275 i2c->
ADDR0 = (u8SlaveAddr << 1) | u8GCMode;
297 i2c->
ADDRMSK1 = u8SlaveAddrMask << 1;
300 i2c->
ADDRMSK2 = u8SlaveAddrMask << 1;
303 i2c->
ADDRMSK3 = u8SlaveAddrMask << 1;
307 i2c->
ADDRMSK0 = u8SlaveAddrMask << 1;
329 i2c->
TOCTL &= ~I2C_TOCTL_TOCDIV4_Msk;
346 i2c->
TOCTL &= ~I2C_TOCTL_TOCEN_Msk;
376 i2c->
WKCTL &= ~I2C_WKCTL_WKEN_Msk;
407 i2c->
BUSSTS |= u8SMBusIntFlag;
478 i2c->
BUSCTL &= ~I2C_BUSCTL_PECTXEN_Msk;
516 uint32_t u32Div, u32Hclk_kHz;
519 u32Hclk_kHz = u32Hclk / 1000;
520 u32Div = (((us * u32Hclk_kHz) / 1000) >> 2) - 1;
548 uint32_t u32Div, u32Pclk_kHz;
550 i2c->
BUSCTL &= ~I2C_BUSCTL_TIDLE_Msk;
553 i2c->
TOCTL &= ~I2C_TOCTL_TOCEN_Msk;
554 u32Pclk_kHz = u32Pclk / 1000;
555 u32Div = ((ms * u32Pclk_kHz) / (16 * 1024)) - 1;
565 i2c->
BUSTOUT = (((ms * u32Pclk_kHz) / (16 * 1024 * 4)) - 1) & 0xFF;
584 uint32_t u32Div, u32Pclk_kHz;
586 i2c->
BUSCTL &= ~I2C_BUSCTL_TIDLE_Msk;
589 i2c->
TOCTL &= ~I2C_TOCTL_TOCEN_Msk;
590 u32Pclk_kHz = u32Pclk / 1000;
591 u32Div = ((ms * u32Pclk_kHz) / (16 * 1024)) - 1;
600 i2c->
CLKTOUT = (((ms * u32Pclk_kHz) / (16 * 1024 * 4)) - 1) & 0xFF;
#define SYS_IPRST1_I2C1RST_Msk
#define I2C_BUSCTL_PECEN_Msk
#define I2C_CTL_INTEN_Msk
#define I2C_BUSCTL_PECTXEN_Msk
#define I2C_TOCTL_TOIF_Msk
#define I2C_TOCTL_TOCEN_Msk
#define I2C_BUSCTL_BMDEN_Msk
#define I2C_BUSCTL_TIDLE_Msk
#define I2C_WKCTL_WKEN_Msk
#define I2C_BUSCTL_BUSEN_Msk
#define I2C_CTL_I2CEN_Msk
#define SYS_IPRST1_I2C0RST_Msk
#define I2C_BUSCTL_BMHEN_Msk
#define I2C_TOCTL_TOCDIV4_Msk
NuMicro peripheral access layer header file.
uint32_t I2C_SMBusGetStatus(I2C_T *i2c)
To get SMBus Status.
void I2C_SMBusIdleTimeout(I2C_T *i2c, uint32_t us, uint32_t u32Hclk)
Calculate Time-out of SMBus idle period.
void I2C_SetSlaveAddrMask(I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddrMask)
Configure the mask bits of 7-bit Slave Address.
void I2C_Close(I2C_T *i2c)
Disable specify I2C Controller.
void I2C_SMBusSetPacketByteCount(I2C_T *i2c, uint32_t u32PktSize)
Set SMBus Bytes Counts of Transmission or Reception.
uint32_t I2C_SetBusClockFreq(I2C_T *i2c, uint32_t u32BusClock)
Set I2C Bus Clock.
void I2C_Trigger(I2C_T *i2c, uint8_t u8Start, uint8_t u8Stop, uint8_t u8Si, uint8_t u8Ack)
Set Control bit of I2C Controller.
void I2C_SMBusClose(I2C_T *i2c)
Disable SMBus function.
void I2C_EnableTimeout(I2C_T *i2c, uint8_t u8LongTimeout)
Enable Time-out Counter Function and support Long Time-out.
void I2C_SMBusClockLoTimeout(I2C_T *i2c, uint32_t ms, uint32_t u32Pclk)
Calculate Cumulative Clock low Time-out of SMBus active period.
void I2C_ClearTimeoutFlag(I2C_T *i2c)
Clear Time-out Counter flag.
void I2C_SetSlaveAddr(I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddr, uint8_t u8GCMode)
Set 7-bit Slave Address and GC Mode.
void I2C_SetData(I2C_T *i2c, uint8_t u8Data)
Send a byte to I2C Bus.
uint32_t I2C_GetBusClockFreq(I2C_T *i2c)
Get I2C Bus Clock.
void I2C_EnableInt(I2C_T *i2c)
Enable Interrupt of I2C Controller.
void I2C_DisableWakeup(I2C_T *i2c)
Disable I2C Wake-up Function.
uint32_t I2C_GetStatus(I2C_T *i2c)
Get I2C Bus Status Code.
void I2C_DisableInt(I2C_T *i2c)
Disable Interrupt of I2C Controller.
void I2C_SMBusPECTxEnable(I2C_T *i2c, uint8_t u8PECTxEn)
Enable SMBus PEC Transmit Function.
void I2C_EnableWakeup(I2C_T *i2c)
Enable I2C Wake-up Function.
void I2C_SMBusOpen(I2C_T *i2c, uint8_t u8HostDevice)
Init SMBus Host/Device Mode.
uint32_t I2C_GetIntFlag(I2C_T *i2c)
Get Interrupt Flag.
void I2C_SMBusTimeout(I2C_T *i2c, uint32_t ms, uint32_t u32Pclk)
Calculate Time-out of SMBus active period.
uint8_t I2C_GetData(I2C_T *i2c)
Read a Byte from I2C Bus.
uint8_t I2C_SMBusGetPECValue(I2C_T *i2c)
Get SMBus CRC value.
uint32_t I2C_Open(I2C_T *i2c, uint32_t u32BusClock)
Enable specify I2C Controller and set Clock Divider.
void I2C_DisableTimeout(I2C_T *i2c)
Disable Time-out Counter Function.
void I2C_SMBusClearInterruptFlag(I2C_T *i2c, uint8_t u8ClrSMBusIntFlag)
Clear SMBus Interrupt Flag.