mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Oct 28 11:17:30 2016 +0100
Revision:
149:156823d33999
Parent:
targets/cmsis/TARGET_NUVOTON/TARGET_NUC472/StdDriver/nuc472_i2c.h@144:ef7eb2e8f9f7
This updates the lib to the mbed lib v128

NOTE: This release includes a restructuring of the file and directory locations and thus some
include paths in your code may need updating accordingly.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /****************************************************************************//**
<> 144:ef7eb2e8f9f7 2 * @file i2c.h
<> 144:ef7eb2e8f9f7 3 * @version V1.00
<> 144:ef7eb2e8f9f7 4 * $Revision: 12 $
<> 144:ef7eb2e8f9f7 5 * $Date: 14/09/30 1:12p $
<> 144:ef7eb2e8f9f7 6 * @brief NUC472/NUC442 I2C driver header file
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * @note
<> 144:ef7eb2e8f9f7 9 * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
<> 144:ef7eb2e8f9f7 10 *****************************************************************************/
<> 144:ef7eb2e8f9f7 11 #ifndef __I2C_H__
<> 144:ef7eb2e8f9f7 12 #define __I2C_H__
<> 144:ef7eb2e8f9f7 13
<> 144:ef7eb2e8f9f7 14 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 15 extern "C"
<> 144:ef7eb2e8f9f7 16 {
<> 144:ef7eb2e8f9f7 17 #endif
<> 144:ef7eb2e8f9f7 18
<> 144:ef7eb2e8f9f7 19
<> 144:ef7eb2e8f9f7 20 /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
<> 144:ef7eb2e8f9f7 21 @{
<> 144:ef7eb2e8f9f7 22 */
<> 144:ef7eb2e8f9f7 23
<> 144:ef7eb2e8f9f7 24 /** @addtogroup NUC472_442_I2C_Driver I2C Driver
<> 144:ef7eb2e8f9f7 25 @{
<> 144:ef7eb2e8f9f7 26 */
<> 144:ef7eb2e8f9f7 27
<> 144:ef7eb2e8f9f7 28 /** @addtogroup NUC472_442_I2C_EXPORTED_CONSTANTS I2C Exported Constants
<> 144:ef7eb2e8f9f7 29 @{
<> 144:ef7eb2e8f9f7 30 */
<> 144:ef7eb2e8f9f7 31
<> 144:ef7eb2e8f9f7 32 #define I2C_STA 0x20 /*!< I2C START bit value \hideinitializer */
<> 144:ef7eb2e8f9f7 33 #define I2C_STO 0x10 /*!< I2C STOP bit value \hideinitializer */
<> 144:ef7eb2e8f9f7 34 #define I2C_SI 0x08 /*!< I2C SI bit value \hideinitializer */
<> 144:ef7eb2e8f9f7 35 #define I2C_AA 0x04 /*!< I2C ACK bit value \hideinitializer */
<> 144:ef7eb2e8f9f7 36
<> 144:ef7eb2e8f9f7 37 #define I2C_GCMODE_ENABLE 1 /*!< Enable I2C GC Mode \hideinitializer */
<> 144:ef7eb2e8f9f7 38 #define I2C_GCMODE_DISABLE 0 /*!< Disable I2C GC Mode \hideinitializer */
<> 144:ef7eb2e8f9f7 39
<> 144:ef7eb2e8f9f7 40 /*@}*/ /* end of group NUC472_442_I2C_EXPORTED_CONSTANTS */
<> 144:ef7eb2e8f9f7 41
<> 144:ef7eb2e8f9f7 42
<> 144:ef7eb2e8f9f7 43 /** @addtogroup NUC472_442_I2C_EXPORTED_FUNCTIONS I2C Exported Functions
<> 144:ef7eb2e8f9f7 44 @{
<> 144:ef7eb2e8f9f7 45 */
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 /**
<> 144:ef7eb2e8f9f7 48 * @brief This macro sets the I2C control register at one time.
<> 144:ef7eb2e8f9f7 49 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 50 * @param[in] u8Ctrl is the register value of I2C control register.
<> 144:ef7eb2e8f9f7 51 * @return none
<> 144:ef7eb2e8f9f7 52 * \hideinitializer
<> 144:ef7eb2e8f9f7 53 */
<> 144:ef7eb2e8f9f7 54 #define I2C_SET_CONTROL_REG(i2c, u8Ctrl) ( (i2c)->CTL = ((i2c)->CTL & ~0x3c) | u8Ctrl )
<> 144:ef7eb2e8f9f7 55
<> 144:ef7eb2e8f9f7 56 /**
<> 144:ef7eb2e8f9f7 57 * @brief This macro only set START bit to the control register of I2C module.
<> 144:ef7eb2e8f9f7 58 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 59 * @return none
<> 144:ef7eb2e8f9f7 60 * \hideinitializer
<> 144:ef7eb2e8f9f7 61 */
<> 144:ef7eb2e8f9f7 62 #define I2C_START(i2c) ( (i2c)->CTL = ((i2c)->CTL & ~I2C_CTL_SI_Msk) | I2C_CTL_STA_Msk )
<> 144:ef7eb2e8f9f7 63
<> 144:ef7eb2e8f9f7 64 /**
<> 144:ef7eb2e8f9f7 65 * @brief This macro only set STOP bit to the control register of I2C module.
<> 144:ef7eb2e8f9f7 66 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 67 * @return none
<> 144:ef7eb2e8f9f7 68 * \hideinitializer
<> 144:ef7eb2e8f9f7 69 */
<> 144:ef7eb2e8f9f7 70 #define I2C_STOP(i2c) ( (i2c)->CTL = ((i2c)->CTL & ~0x3c) | I2C_CTL_SI_Msk | I2C_CTL_STO_Msk )
<> 144:ef7eb2e8f9f7 71
<> 144:ef7eb2e8f9f7 72 /**
<> 144:ef7eb2e8f9f7 73 * @brief This macro will return when I2C module is ready.
<> 144:ef7eb2e8f9f7 74 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 75 * @return none
<> 144:ef7eb2e8f9f7 76 * \hideinitializer
<> 144:ef7eb2e8f9f7 77 */
<> 144:ef7eb2e8f9f7 78 #define I2C_WAIT_READY(i2c) while(!((i2c)->CTL & I2C_CTL_SI_Msk))
<> 144:ef7eb2e8f9f7 79
<> 144:ef7eb2e8f9f7 80 /**
<> 144:ef7eb2e8f9f7 81 * @brief This macro returns the data stored in data register of I2C module.
<> 144:ef7eb2e8f9f7 82 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 83 * @return Data.
<> 144:ef7eb2e8f9f7 84 * \hideinitializer
<> 144:ef7eb2e8f9f7 85 */
<> 144:ef7eb2e8f9f7 86 #define I2C_GET_DATA(i2c) ( (i2c)->DAT )
<> 144:ef7eb2e8f9f7 87
<> 144:ef7eb2e8f9f7 88 /**
<> 144:ef7eb2e8f9f7 89 * @brief This macro writes the data to data register of I2C module.
<> 144:ef7eb2e8f9f7 90 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 91 * @param[in] u8Data is the data which will be write to data register of I2C module.
<> 144:ef7eb2e8f9f7 92 * @return none
<> 144:ef7eb2e8f9f7 93 * \hideinitializer
<> 144:ef7eb2e8f9f7 94 */
<> 144:ef7eb2e8f9f7 95 #define I2C_SET_DATA(i2c, u8Data) ( (i2c)->DAT = u8Data )
<> 144:ef7eb2e8f9f7 96
<> 144:ef7eb2e8f9f7 97 /**
<> 144:ef7eb2e8f9f7 98 * @brief This macro returns the status of I2C module.
<> 144:ef7eb2e8f9f7 99 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 100 * @return Status.
<> 144:ef7eb2e8f9f7 101 * \hideinitializer
<> 144:ef7eb2e8f9f7 102 */
<> 144:ef7eb2e8f9f7 103 #define I2C_GET_STATUS(i2c) ( (i2c)->STATUS )
<> 144:ef7eb2e8f9f7 104
<> 144:ef7eb2e8f9f7 105 /**
<> 144:ef7eb2e8f9f7 106 * @brief This macro returns time-out flag.
<> 144:ef7eb2e8f9f7 107 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 108 * @return Status.
<> 144:ef7eb2e8f9f7 109 * @retval 0 Flag is not set.
<> 144:ef7eb2e8f9f7 110 * @retval 1 Flag is set.
<> 144:ef7eb2e8f9f7 111 * \hideinitializer
<> 144:ef7eb2e8f9f7 112 */
<> 144:ef7eb2e8f9f7 113 #define I2C_GET_TIMEOUT_FLAG(i2c) ( ((i2c)->TOCTL & I2C_TOCTL_TOIF_Msk) == I2C_TOCTL_TOIF_Msk ? 1:0 )
<> 144:ef7eb2e8f9f7 114
<> 144:ef7eb2e8f9f7 115 /**
<> 144:ef7eb2e8f9f7 116 * @brief This macro returns wakeup flag.
<> 144:ef7eb2e8f9f7 117 * @param[in] i2c is the base address of I2C module.
<> 144:ef7eb2e8f9f7 118 * @return Status.
<> 144:ef7eb2e8f9f7 119 * @retval 0 Flag is not set.
<> 144:ef7eb2e8f9f7 120 * @retval 1 Flag is set.
<> 144:ef7eb2e8f9f7 121 * \hideinitializer
<> 144:ef7eb2e8f9f7 122 */
<> 144:ef7eb2e8f9f7 123 #define I2C_GET_WAKEUP_FLAG(i2c) ( ((i2c)->WKSTS & I2C_WKSTS_WKIF_Msk) == I2C_WKSTS_WKIF_Msk ? 1:0 )
<> 144:ef7eb2e8f9f7 124
<> 144:ef7eb2e8f9f7 125 uint32_t I2C_Open(I2C_T *i2c, uint32_t u32BusClock);
<> 144:ef7eb2e8f9f7 126 void I2C_Close(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 127 void I2C_ClearTimeoutFlag(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 128 void I2C_Trigger(I2C_T *i2c, uint8_t u8Start, uint8_t u8Stop, uint8_t u8Si, uint8_t u8Ack);
<> 144:ef7eb2e8f9f7 129 void I2C_DisableInt(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 130 void I2C_EnableInt(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 131 uint32_t I2C_GetBusClockFreq(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 132 uint32_t I2C_SetBusClockFreq(I2C_T *i2c, uint32_t u32BusClock);
<> 144:ef7eb2e8f9f7 133 uint32_t I2C_GetIntFlag(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 134 uint32_t I2C_GetStatus(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 135 uint32_t I2C_GetData(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 136 void I2C_SetData(I2C_T *i2c, uint8_t u8Data);
<> 144:ef7eb2e8f9f7 137 void I2C_SetSlaveAddr(I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddr, uint8_t u8GCMode);
<> 144:ef7eb2e8f9f7 138 void I2C_SetSlaveAddrMask(I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddrMask);
<> 144:ef7eb2e8f9f7 139 void I2C_EnableTimeout(I2C_T *i2c, uint8_t u8LongTimeout);
<> 144:ef7eb2e8f9f7 140 void I2C_DisableTimeout(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 141 void I2C_EnableWakeup(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 142 void I2C_DisableWakeup(I2C_T *i2c);
<> 144:ef7eb2e8f9f7 143
<> 144:ef7eb2e8f9f7 144 /*@}*/ /* end of group NUC472_442_I2C_EXPORTED_FUNCTIONS */
<> 144:ef7eb2e8f9f7 145
<> 144:ef7eb2e8f9f7 146 /*@}*/ /* end of group NUC472_442_I2C_Driver */
<> 144:ef7eb2e8f9f7 147
<> 144:ef7eb2e8f9f7 148 /*@}*/ /* end of group NUC472_442_Device_Driver */
<> 144:ef7eb2e8f9f7 149
<> 144:ef7eb2e8f9f7 150 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 151 }
<> 144:ef7eb2e8f9f7 152 #endif
<> 144:ef7eb2e8f9f7 153
<> 144:ef7eb2e8f9f7 154 #endif //__I2C_H__
<> 144:ef7eb2e8f9f7 155
<> 144:ef7eb2e8f9f7 156 /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/