rt-thread-official/bsp/nuvoton/libraries/n9h30/Driver/Include/nu_i2c.h

106 lines
3.3 KiB
C

/**************************************************************************//**
* @file i2c.h
* @brief N9H30 I2C driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __NU_I2C_H__
#define __NU_I2C_H__
#ifdef __cplusplus
extern "C"
{
#endif
/** @addtogroup N9H30_Device_Driver N9H30 Device Driver
@{
*/
/** @addtogroup N9H30_I2C_Driver I2C Driver
@{
*/
/** @addtogroup N9H30_I2C_EXPORTED_CONSTANTS I2C Exported Constants
@{
*/
/// @cond HIDDEN_SYMBOLS
/*-----------------------------------------*/
/* marco, type and constant definitions */
/*-----------------------------------------*/
#define I2C_MAX_BUF_LEN 450
/*-----------------------------------------*/
/* global interface variables declarations */
/*-----------------------------------------*/
/*
bit map in CMDR
*/
#define I2C_CMD_START 0x10
#define I2C_CMD_STOP 0x08
#define I2C_CMD_READ 0x04
#define I2C_CMD_WRITE 0x02
#define I2C_CMD_NACK 0x01
/*
for transfer use
*/
#define I2C_WRITE 0x00
#define I2C_READ 0x01
#define I2C_STATE_NOP 0x00
#define I2C_STATE_READ 0x01
#define I2C_STATE_WRITE 0x02
#define I2C_STATE_PROBE 0x03
/*
i2c register offset
*/
#define I2C_CSR (0x00) /*!< Control and Status Register */
#define I2C_DIVIDER (0x04) /*!< Clock Prescale Register */
#define I2C_CMDR (0x08) /*!< Command Register */
#define I2C_SWR (0x0C) /*!< Software Mode Control Register */
#define I2C_RxR (0x10) /*!< Data Receive Register */
#define I2C_TxR (0x14) /*!< Data Transmit Register */
/// @endcond HIDDEN_SYMBOLS
/*
ioctl commands
*/
#define I2C_IOC_SET_DEV_ADDRESS 0 /*!< Set device slave address */
#define I2C_IOC_SET_SUB_ADDRESS 1 /*!< Set sub address */
#define I2C_IOC_SET_SPEED 2 /*!< Set I2C interface speed */
/*
error code
*/
#define I2C_ERR_ID 0xFFFF1100 /*!< I2C library ID */
#define I2C_ERR_NOERROR (0x00) /*!< No error */
#define I2C_ERR_LOSTARBITRATION (0x01 | I2C_ERR_ID) /*!< Arbitration lost error */
#define I2C_ERR_BUSBUSY (0x02 | I2C_ERR_ID) /*!< Bus busy error */
#define I2C_ERR_NACK (0x03 | I2C_ERR_ID) /*!< data transfer error */
#define I2C_ERR_SLAVENACK (0x04 | I2C_ERR_ID) /*!< slave not respond after address */
#define I2C_ERR_NODEV (0x05 | I2C_ERR_ID) /*!< Wrong device */
#define I2C_ERR_BUSY (0x06 | I2C_ERR_ID) /*!< Device busy */
#define I2C_ERR_IO (0x07 | I2C_ERR_ID) /*!< Interface not open */
#define I2C_ERR_NOTTY (0x08 | I2C_ERR_ID) /*!< Command not support */
/*@}*/ /* end of group N9H30_I2C_EXPORTED_CONSTANTS */
/*@}*/ /* end of group N9H30_I2C_Driver */
/*@}*/ /* end of group N9H30_Device_Driver */
#ifdef __cplusplus
}
#endif
#endif //__NU_I2C_H__
/*** (C) COPYRIGHT 2018 Nuvoton Technology Corp. ***/