123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /**************************************************************************//**
- * @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. ***/
|