📄 csl_i2c.h
字号:
*/
CSL_I2C_QUERY_AD0 = 7,
/**
* @brief Get the Receive overflow status information
* @param (Uint16*)
*/
CSL_I2C_QUERY_RSFULL = 8,
/**
* @brief Get the Transmit underflow status information
* @param (Uint16*)
*/
CSL_I2C_QUERY_XSMT = 9,
/**
* @brief Get the Address as Slave bit information
* @param (Uint16*)
*/
CSL_I2C_QUERY_AAS = 10,
/**
* @brief Get the Arbitration Lost status information
* @param (Uint16*)
*/
CSL_I2C_QUERY_AL = 11,
/**
* @brief Get the Reset Done status bit information
* @param (Uint16*)
*/
CSL_I2C_QUERY_RDONE = 12,
/**
* @brief Get no of bits of next byte to be received or transmitted
* @param (Uint16*)
*/
CSL_I2C_QUERY_BITCOUNT = 13,
/**
* @brief Get the interrupt code for the interrupt that occured
* @param (Uint16*)
*/
CSL_I2C_QUERY_INTCODE = 14,
/**
* @brief Get the revision level of the I2C
* @param (Uint16*)
*/
CSL_I2C_QUERY_REV = 15,
/**
* @brief Get the class of the peripheral
* @param (Uint16*)
*/
CSL_I2C_QUERY_CLASS = 16,
/**
* @brief Get the type of the peripheral
* @param (Uint16*)
*/
CSL_I2C_QUERY_TYPE = 17,
/**
* @brief Get the slave direction
* @param (Uint16*)
*/
CSL_I2C_QUERY_SDIR = 18,
/**
* @brief Get the acknowledgement status
* @param (Uint16*)
*/
CSL_I2C_QUERY_NACKSNT = 19
} CSL_I2cHwStatusQuery;
/** @brief Enumeration for queries passed to @a CSL_i2cHwControl()
*
* This is used to select the commands to control the operations
* existing setup of I2C. The arguments to be passed with each
* enumeration if any are specified next to the enumeration.
*/
typedef enum {
/**
* @brief Enable the I2C
* @param (None)
*/
CSL_I2C_CMD_ENABLE = 1,
/**
* @brief Configure the I2C pins as GPIO
* @param (None)
*/
CSL_I2C_CMD_CONFIG_AS_GIO = 2,
/**
* @brief Reset command to the I2C
* @param (None)
*/
CSL_I2C_CMD_RESET = 3,
/**
* @brief Bring the I2C out of reset
* @param (None)
*/
CSL_I2C_CMD_OUTOFRESET = 4,
/**
* @brief Clear the status bits. The argument next to the command
* specifies the status bit to be cleared. The status bit
* can be :
* CSL_I2C_CLEAR_AL,
* CSL_I2C_CLEAR_NACK,
* CSL_I2C_CLEAR_ARDY,
* CSL_I2C_CLEAR_RRDY,
* CSL_I2C_CLEAR_XRDY,
* CSL_I2C_CLEAR_GC
* @param (None)
*/
CSL_I2C_CMD_CLEAR_STATUS = 5,
/**
* @brief Set the address of the Slave device
* @param (Uint16 *)
*/
CSL_I2C_CMD_SET_SLAVE_ADDR = 6,
/**
* @brief Set the Data Count
* @param (Uint16 *)
*/
CSL_I2C_CMD_SET_DATA_COUNT = 7,
/**
* @brief Set the start condition
* @param (None)
*/
CSL_I2C_CMD_START = 8,
/**
* @brief Set the stop condition
* @param (None)
*/
CSL_I2C_CMD_STOP = 9,
/**
* @brief Set the transmission mode
* @param (None)
*/
CSL_I2C_CMD_DIR_TRANSMIT = 10,
/**
* @brief Set the receiver mode
* @param (None)
*/
CSL_I2C_CMD_DIR_RECEIVE = 11,
/**
* @brief Set the Repeat Mode
* @param (None)
*/
CSL_I2C_CMD_RM_ENABLE = 12,
/**
* @brief Disable the Repeat Mode
* @param (None)
*/
CSL_I2C_CMD_RM_DISABLE = 13,
/**
* @brief Set the loop back mode
* @param (None)
*/
CSL_I2C_CMD_DLB_ENABLE = 14,
/**
* @brief Set the loop back mode
* @param (None)
*/
CSL_I2C_CMD_DLB_DISABLE = 15,
/**
* @brief Unmask all interrupts
* @param (None)
*/
CSL_I2C_CMD_INTR_ENABLE = 16,
/**
* @brief Mask all interrupts
* @param (None)
*/
CSL_I2C_CMD_INTR_DISABLE = 17,
/**
* @brief Set the own address
* @param (Uint16 *)
*/
CSL_I2C_CMD_SET_OWN_ADDR = 18,
/**
* @brief Set the Clock
* @param (CSL_I2cClkSetup *)
*/
CSL_I2C_CMD_SET_CLOCK = 19,
/**
* @brief Set the mode(Master/Slave)
* @param (Uint16 *)
*/
CSL_I2C_CMD_SET_MODE = 20
} CSL_I2cHwControlCmd;
/**************************************************************************\
* I2C global function declarations
\**************************************************************************/
/** ============================================================================
* @n@b CSL_i2cInit
*
* @b Description
* @n This is the initialization function for the I2C. This function is
* idempotent in that calling it many times is same as calling it once.
* This function doesn't affect the H/W.
*
* @b Arguments
@verbatim
pContext Context information for the instance. Should be NULL
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - Always returns
*
* <b> Pre Condition </b>
* @n CSL_sysInit() must be called.
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
...
CSL_i2cInit();
* @endverbatim
* ===========================================================================
*/
extern CSL_Status CSL_i2cInit(
CSL_I2cContext *pContext
);
/** ===========================================================================
* @n@b CSL_i2cOpen
*
* @b Description
* @n This function populates the peripheral data object for the instance
* and returns a handle to the instance.
* The open call sets up the data structures for the particular instance
* of I2C device. The device can be re-opened anytime after it has been
* normally closed if so required.
* The handle returned by this call is input as an essential argument for
* rest of the APIs described for this module.
*
* @b Arguments
@verbatim
pI2cObj Pointer to the I2C instance object
i2cNum Instance of the I2C to be opened.
pI2cParam Pointer to module specific parameters
pStatus Pointer for returning status of the function call
* @endverbatim
*
* <b> Return Value </b> CSL_I2cHandle
*
* - Valid I2C instance handle will be returned if status value is
* equal to CSL_SOK else CSL_I2C_BADHANDLE
*
* <b> Pre Condition </b>
* @n CSL_i2cInit() has to be called
*
* <b> Post Condition </b>
* @n 1. The status is returned in the status variable. If status returned is
* @li CSL_OK - Open call is successful
* @li CSL_ESYS_INVPARAMS - If invalid parameter passed
* @li CSL_ESYS_FAIL - If invalid instance number
* 2. I2C object structure is populated
*
* @b Modifies
* @n@li The status variable
* @li I2C object structure
*
* @b Example
* @verbatim
* CSL_status status;
* CSL_I2cObj i2cObj;
* CSL_I2cHandle hI2c;
*
* hI2c = CSL_I2cOpen (&i2cObj,
* CSL_I2C_0,
* NULL,
* &status
* );
@endverbatim
* ===========================================================================
*/
extern CSL_I2cHandle CSL_i2cOpen (
CSL_I2cObj *hI2cObj,
CSL_InstNum i2cNum,
CSL_I2cParam *pI2cParam,
CSL_Status *status
);
/** ============================================================================
* @n@b CSL_i2cClose
*
* @b Description
* @n This function closes the specified instance of I2C.
*
* @b Arguments
@verbatim
hI2c Handle to the I2C instance
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - I2C close successful
* @li CSL_ESYS_BADHANDLE - Invalid handle
*
*
* <b> Pre Condition </b>
* @n i2c must have opened properly
*
* <b> Post Condition </b>
* @n CSL for the I2C instance is closed
*
* @b Modifies
* @n CSL_I2cObj structure values for the instance
*
* @b Example
@verbatim
CSL_i2cClose (hI2c);
@endverbatim
* =============================================================================
*/
extern CSL_Status CSL_i2cClose(
CSL_I2cHandle hI2c
);
/** =======================================================================
* @n@b CSL_i2cHwSetup
*
* @b Description
* @n This function initializes the device registers with the appropriate
* values provided through the HwSetup Data structure. After the
* Setup is completed, the device is ready for operation.
* For information passed through the HwSetup Data structure refer
* @a CSL_i2cHwSetup.
*
* @b Arguments
@verbatim
hI2c handle to the I2c instance
setup Pointer to setup structure that programs I2C
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - Successful completion of hardware
* setup
* @li CSL_ESYS_ INVPARAMS - Hardware structure is not properly
* initialized
* @li CSL_ESYS_ BADHANDLE - Invalid CSL handle
*
*
* <b> Pre Condition </b>
* @n Both CSL_i2cInit() and a CSL_i2cOpen() must be called
*
* <b> Post Condition </b>
* @n I2C registers are configured
*
* @b Modifies
* @n I2C registers
*
* @b Example
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -