M471M/R1/S BSP V3.01.000
The Board Support Package for M4521
Macros | Functions
i2c.h File Reference

M471M/R1/S I2C Driver Header File. More...

#include "NuMicro.h"
Include dependency graph for i2c.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define I2C_CTL_STA_SI   0x28UL
 
#define I2C_CTL_STA_SI_AA   0x2CUL
 
#define I2C_CTL_STO_SI   0x18UL
 
#define I2C_CTL_STO_SI_AA   0x1CUL
 
#define I2C_CTL_SI   0x08UL
 
#define I2C_CTL_SI_AA   0x0CUL
 
#define I2C_CTL_STA   0x20UL
 
#define I2C_CTL_STO   0x10UL
 
#define I2C_CTL_AA   0x04UL
 
#define I2C_GCMODE_ENABLE   1
 
#define I2C_GCMODE_DISABLE   0
 
#define I2C_SMBH_ENABLE   1
 
#define I2C_SMBD_ENABLE   0
 
#define I2C_PECTX_ENABLE   1
 
#define I2C_PECTX_DISABLE   0
 
#define I2C_SET_CONTROL_REG(i2c, u8Ctrl)   ((i2c)->CTL = ((i2c)->CTL & ~0x3c) | (u8Ctrl))
 The macro is used to set I2C bus condition at One Time. More...
 
#define I2C_START(i2c)   ((i2c)->CTL = ((i2c)->CTL & ~I2C_CTL_SI_Msk) | I2C_CTL_STA_Msk)
 The macro is used to set START condition of I2C Bus. More...
 
#define I2C_WAIT_READY(i2c)   while(!((i2c)->CTL & I2C_CTL_SI_Msk))
 The macro is used to wait I2C bus status get ready. More...
 
#define I2C_GET_DATA(i2c)   ((i2c)->DAT)
 The macro is used to Read I2C Bus Data Register. More...
 
#define I2C_SET_DATA(i2c, u8Data)   ((i2c)->DAT = (u8Data))
 Write a Data to I2C Data Register. More...
 
#define I2C_GET_STATUS(i2c)   ((i2c)->STATUS)
 Get I2C Bus status code. More...
 
#define I2C_GET_TIMEOUT_FLAG(i2c)   ( ((i2c)->TOCTL & I2C_TOCTL_TOIF_Msk) == I2C_TOCTL_TOIF_Msk ? 1:0 )
 Get Time-out flag from I2C Bus. More...
 
#define I2C_GET_WAKEUP_FLAG(i2c)   ( ((i2c)->WKSTS & I2C_WKSTS_WKIF_Msk) == I2C_WKSTS_WKIF_Msk ? 1:0 )
 To get wake-up flag from I2C Bus. More...
 
#define I2C_CLEAR_WAKEUP_FLAG(i2c)   ((i2c)->WKSTS = I2C_WKSTS_WKIF_Msk)
 To clear wake-up flag. More...
 
#define I2C_SMBUS_GET_STATUS(i2c)   ((i2c)->BUSSTS)
 To get SMBus Status. More...
 
#define I2C_SMBUS_GET_PEC_VALUE(i2c)   ((i2c)->PKTCRC)
 Get SMBus CRC value. More...
 
#define I2C_SMBUS_SET_PACKET_BYTE_COUNT(i2c, u32PktSize)   ((i2c)->PKTSIZE = (u32PktSize))
 Set SMBus Bytes number of Transmission or reception. More...
 
#define I2C_SMBUS_ENABLE_ALERT(i2c)   ((i2c)->BUSCTL |= I2C_BUSCTL_ALERTEN_Msk)
 Enable SMBus Alert function. More...
 
#define I2C_SMBUS_DISABLE_ALERT(i2c)   ((i2c)->BUSCTL &= ~I2C_BUSCTL_ALERTEN_Msk)
 Disable SMBus Alert pin function. More...
 
#define I2C_SMBUS_SET_SUSCON_OUT(i2c)   ((i2c)->BUSCTL |= I2C_BUSCTL_SCTLOEN_Msk)
 Set SMBus SUSCON pin is output mode. More...
 
#define I2C_SMBUS_SET_SUSCON_IN(i2c)   ((i2c)->BUSCTL &= ~I2C_BUSCTL_SCTLOEN_Msk)
 Set SMBus SUSCON pin is input mode. More...
 
#define I2C_SMBUS_SET_SUSCON_HIGH(i2c)   ((i2c)->BUSCTL |= I2C_BUSCTL_SCTLOSTS_Msk)
 Set SMBus SUSCON pin output high state. More...
 
#define I2C_SMBUS_SET_SUSCON_LOW(i2c)   ((i2c)->BUSCTL &= ~I2C_BUSCTL_SCTLOSTS_Msk)
 Set SMBus SUSCON pin output low state. More...
 
#define I2C_SMBUS_ACK_MANUAL(i2c)   ((i2c)->BUSCTL |= I2C_BUSCTL_ACKMEN_Msk)
 Enable SMBus Acknowledge control by manual. More...
 
#define I2C_SMBUS_ACK_AUTO(i2c)   ((i2c)->BUSCTL &= ~I2C_BUSCTL_ACKMEN_Msk)
 Disable SMBus Acknowledge control by manual. More...
 
#define I2C_SMBUS_9THBIT_INT_ENABLE(i2c)   ((i2c)->BUSCTL |= I2C_BUSCTL_ACKM9SI_Msk)
 Enable SMBus Acknowledge manual interrupt. More...
 
#define I2C_SMBUS_9THBIT_INT_DISABLE(i2c)   ((i2c)->BUSCTL &= ~I2C_BUSCTL_ACKM9SI_Msk)
 Disable SMBus Acknowledge manual interrupt. More...
 
#define I2C_SMBUS_RST_PEC_AT_START_ENABLE(i2c)   ((i2c)->BUSCTL |= I2C_BUSCTL_PECCLR_Msk)
 Enable SMBus PEC clear at REPEAT START. More...
 
#define I2C_SMBUS_RST_PEC_AT_START_DISABLE(i2c)   ((i2c)->BUSCTL &= ~I2C_BUSCTL_PECCLR_Msk)
 Disable SMBus PEC clear at Repeat START. More...
 

Functions

static __INLINE int32_t I2C_STOP (I2C_T *i2c)
 The macro is used to set STOP condition of I2C Bus. More...
 
void I2C_ClearTimeoutFlag (I2C_T *i2c)
 Clear Time-out Counter flag. More...
 
void I2C_Close (I2C_T *i2c)
 Disable specify I2C Controller. More...
 
void I2C_Trigger (I2C_T *i2c, uint8_t u8Start, uint8_t u8Stop, uint8_t u8Si, uint8_t u8Ack)
 Set Control bit of I2C Controller. More...
 
void I2C_DisableInt (I2C_T *i2c)
 Disable Interrupt of I2C Controller. More...
 
void I2C_EnableInt (I2C_T *i2c)
 Enable Interrupt of I2C Controller. More...
 
uint32_t I2C_GetBusClockFreq (I2C_T *i2c)
 Get I2C Bus Clock. More...
 
uint32_t I2C_GetIntFlag (I2C_T *i2c)
 Get Interrupt Flag. More...
 
uint32_t I2C_GetStatus (I2C_T *i2c)
 Get I2C Bus Status Code. More...
 
uint32_t I2C_Open (I2C_T *i2c, uint32_t u32BusClock)
 Enable specify I2C Controller and set Clock Divider. More...
 
uint8_t I2C_GetData (I2C_T *i2c)
 Read a Byte from I2C Bus. More...
 
void I2C_SetSlaveAddr (I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddr, uint8_t u8GCMode)
 Set 7-bit Slave Address and GC Mode. More...
 
void I2C_SetSlaveAddrMask (I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddrMask)
 Configure the mask bits of 7-bit Slave Address. More...
 
uint32_t I2C_SetBusClockFreq (I2C_T *i2c, uint32_t u32BusClock)
 Set I2C Bus Clock. More...
 
void I2C_EnableTimeout (I2C_T *i2c, uint8_t u8LongTimeout)
 Enable Time-out Counter Function and support Long Time-out. More...
 
void I2C_DisableTimeout (I2C_T *i2c)
 Disable Time-out Counter Function. More...
 
void I2C_EnableWakeup (I2C_T *i2c)
 Enable I2C Wake-up Function. More...
 
void I2C_DisableWakeup (I2C_T *i2c)
 Disable I2C Wake-up Function. More...
 
void I2C_SetData (I2C_T *i2c, uint8_t u8Data)
 Send a byte to I2C Bus. More...
 
uint32_t I2C_SMBusGetStatus (I2C_T *i2c)
 To get SMBus Status. More...
 
void I2C_SMBusClearInterruptFlag (I2C_T *i2c, uint8_t u8SMBusIntFlag)
 Clear SMBus Interrupt Flag. More...
 
void I2C_SMBusSetPacketByteCount (I2C_T *i2c, uint32_t u32PktSize)
 Set SMBus Bytes Counts of Transmission or Reception. More...
 
void I2C_SMBusOpen (I2C_T *i2c, uint8_t u8HostDevice)
 Init SMBus Host/Device Mode. More...
 
void I2C_SMBusClose (I2C_T *i2c)
 Disable SMBus function. More...
 
void I2C_SMBusPECTxEnable (I2C_T *i2c, uint8_t u8PECTxEn)
 Enable SMBus PEC Transmit Function. More...
 
uint8_t I2C_SMBusGetPECValue (I2C_T *i2c)
 Get SMBus CRC value. More...
 
void I2C_SMBusIdleTimeout (I2C_T *i2c, uint32_t us, uint32_t u32Hclk)
 Calculate Time-out of SMBus idle period. More...
 
void I2C_SMBusTimeout (I2C_T *i2c, uint32_t ms, uint32_t u32Pclk)
 Calculate Time-out of SMBus active period. More...
 
void I2C_SMBusClockLoTimeout (I2C_T *i2c, uint32_t ms, uint32_t u32Pclk)
 Calculate Cumulative Clock low Time-out of SMBus active period. More...
 

Detailed Description

M471M/R1/S I2C Driver Header File.

SPDX-License-Identifier: Apache-2.0

Definition in file i2c.h.