SilentSensors / mbed-dev

Fork of mbed-dev by mbed official

Committer:
AnnaBridge
Date:
Thu Aug 31 17:27:04 2017 +0100
Revision:
172:7d866c31b3c5
This updates the lib to the mbed lib v 150

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:7d866c31b3c5 1 /**************************************************************************//**
AnnaBridge 172:7d866c31b3c5 2 * @file USCI_I2C.h
AnnaBridge 172:7d866c31b3c5 3 * @version V3.0
AnnaBridge 172:7d866c31b3c5 4 * @brief M480 series USCI I2C(UI2C) driver header file
AnnaBridge 172:7d866c31b3c5 5 *
AnnaBridge 172:7d866c31b3c5 6 * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 172:7d866c31b3c5 7 ******************************************************************************/
AnnaBridge 172:7d866c31b3c5 8 #ifndef __USCI_I2C_H__
AnnaBridge 172:7d866c31b3c5 9 #define __USCI_I2C_H__
AnnaBridge 172:7d866c31b3c5 10
AnnaBridge 172:7d866c31b3c5 11 #ifdef __cplusplus
AnnaBridge 172:7d866c31b3c5 12 extern "C"
AnnaBridge 172:7d866c31b3c5 13 {
AnnaBridge 172:7d866c31b3c5 14 #endif
AnnaBridge 172:7d866c31b3c5 15
AnnaBridge 172:7d866c31b3c5 16
AnnaBridge 172:7d866c31b3c5 17 /** @addtogroup M480_Device_Driver M480 Device Driver
AnnaBridge 172:7d866c31b3c5 18 @{
AnnaBridge 172:7d866c31b3c5 19 */
AnnaBridge 172:7d866c31b3c5 20
AnnaBridge 172:7d866c31b3c5 21 /** @addtogroup M480_USCI_I2C_Driver USCI_I2C Driver
AnnaBridge 172:7d866c31b3c5 22 @{
AnnaBridge 172:7d866c31b3c5 23 */
AnnaBridge 172:7d866c31b3c5 24
AnnaBridge 172:7d866c31b3c5 25 /** @addtogroup M480_USCI_I2C_EXPORTED_CONSTANTS USCI_I2C Exported Constants
AnnaBridge 172:7d866c31b3c5 26 @{
AnnaBridge 172:7d866c31b3c5 27 */
AnnaBridge 172:7d866c31b3c5 28
AnnaBridge 172:7d866c31b3c5 29 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 30 /* USCI_I2C master event definitions */
AnnaBridge 172:7d866c31b3c5 31 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 32 enum UI2C_MASTER_EVENT {
AnnaBridge 172:7d866c31b3c5 33 MASTER_SEND_ADDRESS = 10, /*!< Master send address to Slave */
AnnaBridge 172:7d866c31b3c5 34 MASTER_SEND_H_WR_ADDRESS, /*!< Master send High address to Slave */
AnnaBridge 172:7d866c31b3c5 35 MASTER_SEND_H_RD_ADDRESS, /*!< Master send address to Slave (Read ADDR) */
AnnaBridge 172:7d866c31b3c5 36 MASTER_SEND_L_ADDRESS, /*!< Master send Low address to Slave */
AnnaBridge 172:7d866c31b3c5 37 MASTER_SEND_DATA, /*!< Master Send Data to Slave */
AnnaBridge 172:7d866c31b3c5 38 MASTER_SEND_REPEAT_START, /*!< Master send repeat start to Slave */
AnnaBridge 172:7d866c31b3c5 39 MASTER_READ_DATA, /*!< Master Get Data from Slave */
AnnaBridge 172:7d866c31b3c5 40 MASTER_STOP, /*!< Master send stop to Slave */
AnnaBridge 172:7d866c31b3c5 41 MASTER_SEND_START /*!< Master send start to Slave */
AnnaBridge 172:7d866c31b3c5 42 };
AnnaBridge 172:7d866c31b3c5 43
AnnaBridge 172:7d866c31b3c5 44 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 45 /* USCI_I2C slave event definitions */
AnnaBridge 172:7d866c31b3c5 46 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 47 enum UI2C_SLAVE_EVENT {
AnnaBridge 172:7d866c31b3c5 48 SLAVE_ADDRESS_ACK = 100, /*!< Slave send address ACK */
AnnaBridge 172:7d866c31b3c5 49 SLAVE_H_WR_ADDRESS_ACK, /*!< Slave send High address ACK */
AnnaBridge 172:7d866c31b3c5 50 SLAVE_L_WR_ADDRESS_ACK, /*!< Slave send Low address ACK */
AnnaBridge 172:7d866c31b3c5 51 SLAVE_GET_DATA, /*!< Slave Get Data from Master (Write CMD) */
AnnaBridge 172:7d866c31b3c5 52 SLAVE_SEND_DATA, /*!< Slave Send Data to Master (Read CMD) */
AnnaBridge 172:7d866c31b3c5 53 SLAVE_H_RD_ADDRESS_ACK, /*!< Slave send High address ACK */
AnnaBridge 172:7d866c31b3c5 54 SLAVE_L_RD_ADDRESS_ACK /*!< Slave send Low address ACK */
AnnaBridge 172:7d866c31b3c5 55 };
AnnaBridge 172:7d866c31b3c5 56
AnnaBridge 172:7d866c31b3c5 57 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 58 /* USCI_CTL constant definitions. */
AnnaBridge 172:7d866c31b3c5 59 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 60 #define UI2C_CTL_PTRG 0x20UL /*!< USCI_CTL setting for I2C control bits. It would set PTRG bit \hideinitializer */
AnnaBridge 172:7d866c31b3c5 61 #define UI2C_CTL_STA 0x08UL /*!< USCI_CTL setting for I2C control bits. It would set STA bit \hideinitializer */
AnnaBridge 172:7d866c31b3c5 62 #define UI2C_CTL_STO 0x04UL /*!< USCI_CTL setting for I2C control bits. It would set STO bit \hideinitializer */
AnnaBridge 172:7d866c31b3c5 63 #define UI2C_CTL_AA 0x02UL /*!< USCI_CTL setting for I2C control bits. It would set AA bit \hideinitializer */
AnnaBridge 172:7d866c31b3c5 64
AnnaBridge 172:7d866c31b3c5 65 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 66 /* USCI_I2C GCMode constant definitions. */
AnnaBridge 172:7d866c31b3c5 67 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 68 #define UI2C_GCMODE_ENABLE (1U) /*!< Enable USCI_I2C GC Mode \hideinitializer */
AnnaBridge 172:7d866c31b3c5 69 #define UI2C_GCMODE_DISABLE (0U) /*!< Disable USCI_I2C GC Mode \hideinitializer */
AnnaBridge 172:7d866c31b3c5 70
AnnaBridge 172:7d866c31b3c5 71 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 72 /* USCI_I2C Wakeup Mode constant definitions. */
AnnaBridge 172:7d866c31b3c5 73 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 74 #define UI2C_DATA_TOGGLE_WK (0x0U << UI2C_WKCTL_WKADDREN_Pos) /*!< Wakeup according data toggle \hideinitializer */
AnnaBridge 172:7d866c31b3c5 75 #define UI2C_ADDR_MATCH_WK (0x1U << UI2C_WKCTL_WKADDREN_Pos) /*!< Wakeup according address match \hideinitializer */
AnnaBridge 172:7d866c31b3c5 76
AnnaBridge 172:7d866c31b3c5 77 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 78 /* USCI_I2C interrupt mask definitions */
AnnaBridge 172:7d866c31b3c5 79 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 172:7d866c31b3c5 80 #define UI2C_TO_INT_MASK (0x001U) /*!< Time-out interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 81 #define UI2C_STAR_INT_MASK (0x002U) /*!< Start condition received interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 82 #define UI2C_STOR_INT_MASK (0x004U) /*!< Stop condition received interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 83 #define UI2C_NACK_INT_MASK (0x008U) /*!< Non-acknowledge interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 84 #define UI2C_ARBLO_INT_MASK (0x010U) /*!< Arbitration lost interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 85 #define UI2C_ERR_INT_MASK (0x020U) /*!< Error interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 86 #define UI2C_ACK_INT_MASK (0x040U) /*!< Acknowledge interrupt mask \hideinitializer */
AnnaBridge 172:7d866c31b3c5 87
AnnaBridge 172:7d866c31b3c5 88 /*@}*/ /* end of group USCI_I2C_EXPORTED_CONSTANTS */
AnnaBridge 172:7d866c31b3c5 89
AnnaBridge 172:7d866c31b3c5 90
AnnaBridge 172:7d866c31b3c5 91 /** @addtogroup M480_USCI_I2C_EXPORTED_FUNCTIONS USCI_I2C Exported Functions
AnnaBridge 172:7d866c31b3c5 92 @{
AnnaBridge 172:7d866c31b3c5 93 */
AnnaBridge 172:7d866c31b3c5 94
AnnaBridge 172:7d866c31b3c5 95 /**
AnnaBridge 172:7d866c31b3c5 96 * @brief This macro sets the USCI_I2C protocol control register at one time
AnnaBridge 172:7d866c31b3c5 97 *
AnnaBridge 172:7d866c31b3c5 98 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 99 * @param[in] u8Ctrl Set the register value of USCI_I2C control register.
AnnaBridge 172:7d866c31b3c5 100 *
AnnaBridge 172:7d866c31b3c5 101 * @return None
AnnaBridge 172:7d866c31b3c5 102 *
AnnaBridge 172:7d866c31b3c5 103 * @details Set UI2C_PROTCTL register to control USCI_I2C bus conditions of START, STOP, SI, ACK.
AnnaBridge 172:7d866c31b3c5 104 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 105 */
AnnaBridge 172:7d866c31b3c5 106 #define UI2C_SET_CONTROL_REG(ui2c, u8Ctrl) ((ui2c)->PROTCTL = ((ui2c)->PROTCTL & ~0x2EU) | (u8Ctrl))
AnnaBridge 172:7d866c31b3c5 107
AnnaBridge 172:7d866c31b3c5 108 /**
AnnaBridge 172:7d866c31b3c5 109 * @brief This macro only set START bit to protocol control register of USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 110 *
AnnaBridge 172:7d866c31b3c5 111 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 112 *
AnnaBridge 172:7d866c31b3c5 113 * @return None
AnnaBridge 172:7d866c31b3c5 114 *
AnnaBridge 172:7d866c31b3c5 115 * @details Set the USCI_I2C bus START condition in UI2C_PROTCTL register.
AnnaBridge 172:7d866c31b3c5 116 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 117 */
AnnaBridge 172:7d866c31b3c5 118 #define UI2C_START(ui2c) ((ui2c)->PROTCTL = ((ui2c)->PROTCTL & ~UI2C_PROTCTL_PTRG_Msk) | UI2C_PROTCTL_STA_Msk)
AnnaBridge 172:7d866c31b3c5 119
AnnaBridge 172:7d866c31b3c5 120 /**
AnnaBridge 172:7d866c31b3c5 121 * @brief This macro only set STOP bit to the control register of USCI_I2C module
AnnaBridge 172:7d866c31b3c5 122 *
AnnaBridge 172:7d866c31b3c5 123 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 124 *
AnnaBridge 172:7d866c31b3c5 125 * @return None
AnnaBridge 172:7d866c31b3c5 126 *
AnnaBridge 172:7d866c31b3c5 127 * @details Set the USCI_I2C bus STOP condition in UI2C_PROTCTL register.
AnnaBridge 172:7d866c31b3c5 128 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 129 */
AnnaBridge 172:7d866c31b3c5 130 #define UI2C_STOP(ui2c) ((ui2c)->PROTCTL = ((ui2c)->PROTCTL & ~0x2E) | (UI2C_PROTCTL_PTRG_Msk | UI2C_PROTCTL_STO_Msk))
AnnaBridge 172:7d866c31b3c5 131
AnnaBridge 172:7d866c31b3c5 132 /**
AnnaBridge 172:7d866c31b3c5 133 * @brief This macro returns the data stored in data register of USCI_I2C module
AnnaBridge 172:7d866c31b3c5 134 *
AnnaBridge 172:7d866c31b3c5 135 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 136 *
AnnaBridge 172:7d866c31b3c5 137 * @return Data
AnnaBridge 172:7d866c31b3c5 138 *
AnnaBridge 172:7d866c31b3c5 139 * @details Read a byte data value of UI2C_RXDAT register from USCI_I2C bus
AnnaBridge 172:7d866c31b3c5 140 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 141 */
AnnaBridge 172:7d866c31b3c5 142 #define UI2C_GET_DATA(ui2c) ((ui2c)->RXDAT)
AnnaBridge 172:7d866c31b3c5 143
AnnaBridge 172:7d866c31b3c5 144 /**
AnnaBridge 172:7d866c31b3c5 145 * @brief This macro writes the data to data register of USCI_I2C module
AnnaBridge 172:7d866c31b3c5 146 *
AnnaBridge 172:7d866c31b3c5 147 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 148 * @param[in] u8Data The data which will be written to data register of USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 149 *
AnnaBridge 172:7d866c31b3c5 150 * @return None
AnnaBridge 172:7d866c31b3c5 151 *
AnnaBridge 172:7d866c31b3c5 152 * @details Write a byte data value of UI2C_TXDAT register, then sends address or data to USCI I2C bus
AnnaBridge 172:7d866c31b3c5 153 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 154 */
AnnaBridge 172:7d866c31b3c5 155 #define UI2C_SET_DATA(ui2c, u8Data) ((ui2c)->TXDAT = (u8Data))
AnnaBridge 172:7d866c31b3c5 156
AnnaBridge 172:7d866c31b3c5 157 /**
AnnaBridge 172:7d866c31b3c5 158 * @brief This macro returns time-out flag
AnnaBridge 172:7d866c31b3c5 159 *
AnnaBridge 172:7d866c31b3c5 160 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 161 *
AnnaBridge 172:7d866c31b3c5 162 * @retval 0 USCI_I2C bus time-out is not happened
AnnaBridge 172:7d866c31b3c5 163 * @retval 1 USCI_I2C bus time-out is happened
AnnaBridge 172:7d866c31b3c5 164 *
AnnaBridge 172:7d866c31b3c5 165 * @details USCI_I2C bus occurs time-out event, the time-out flag will be set. If not occurs time-out event, this bit is cleared.
AnnaBridge 172:7d866c31b3c5 166 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 167 */
AnnaBridge 172:7d866c31b3c5 168 #define UI2C_GET_TIMEOUT_FLAG(ui2c) (((ui2c)->PROTSTS & UI2C_PROTSTS_TOIF_Msk) == UI2C_PROTSTS_TOIF_Msk ? 1:0)
AnnaBridge 172:7d866c31b3c5 169
AnnaBridge 172:7d866c31b3c5 170 /**
AnnaBridge 172:7d866c31b3c5 171 * @brief This macro returns wake-up flag
AnnaBridge 172:7d866c31b3c5 172 *
AnnaBridge 172:7d866c31b3c5 173 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 174 *
AnnaBridge 172:7d866c31b3c5 175 * @retval 0 Chip is not woken-up from power-down mode
AnnaBridge 172:7d866c31b3c5 176 * @retval 1 Chip is woken-up from power-down mode
AnnaBridge 172:7d866c31b3c5 177 *
AnnaBridge 172:7d866c31b3c5 178 * @details USCI_I2C controller wake-up flag will be set when USCI_I2C bus occurs wake-up from deep-sleep.
AnnaBridge 172:7d866c31b3c5 179 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 180 */
AnnaBridge 172:7d866c31b3c5 181 #define UI2C_GET_WAKEUP_FLAG(ui2c) (((ui2c)->WKSTS & UI2C_WKSTS_WKF_Msk) == UI2C_WKSTS_WKF_Msk ? 1:0)
AnnaBridge 172:7d866c31b3c5 182
AnnaBridge 172:7d866c31b3c5 183 /**
AnnaBridge 172:7d866c31b3c5 184 * @brief This macro is used to clear USCI_I2C wake-up flag
AnnaBridge 172:7d866c31b3c5 185 *
AnnaBridge 172:7d866c31b3c5 186 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 187 *
AnnaBridge 172:7d866c31b3c5 188 * @return None
AnnaBridge 172:7d866c31b3c5 189 *
AnnaBridge 172:7d866c31b3c5 190 * @details If USCI_I2C wake-up flag is set, use this macro to clear it.
AnnaBridge 172:7d866c31b3c5 191 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 192 */
AnnaBridge 172:7d866c31b3c5 193 #define UI2C_CLR_WAKEUP_FLAG(ui2c) ((ui2c)->WKSTS = UI2C_WKSTS_WKF_Msk)
AnnaBridge 172:7d866c31b3c5 194
AnnaBridge 172:7d866c31b3c5 195 /**
AnnaBridge 172:7d866c31b3c5 196 * @brief This macro disables the USCI_I2C 10-bit address mode
AnnaBridge 172:7d866c31b3c5 197 *
AnnaBridge 172:7d866c31b3c5 198 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 199 *
AnnaBridge 172:7d866c31b3c5 200 * @return None
AnnaBridge 172:7d866c31b3c5 201 *
AnnaBridge 172:7d866c31b3c5 202 * @details The UI2C_I2C is 7-bit address mode, when disable USCI_I2C 10-bit address match function.
AnnaBridge 172:7d866c31b3c5 203 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 204 */
AnnaBridge 172:7d866c31b3c5 205 #define UI2C_DISABLE_10BIT_ADDR_MODE(ui2c) ((ui2c)->PROTCTL &= ~(UI2C_PROTCTL_ADDR10EN_Msk))
AnnaBridge 172:7d866c31b3c5 206
AnnaBridge 172:7d866c31b3c5 207 /**
AnnaBridge 172:7d866c31b3c5 208 * @brief This macro enables the 10-bit address mode
AnnaBridge 172:7d866c31b3c5 209 *
AnnaBridge 172:7d866c31b3c5 210 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 211 *
AnnaBridge 172:7d866c31b3c5 212 * @return None
AnnaBridge 172:7d866c31b3c5 213 *
AnnaBridge 172:7d866c31b3c5 214 * @details To enable USCI_I2C 10-bit address match function.
AnnaBridge 172:7d866c31b3c5 215 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 216 */
AnnaBridge 172:7d866c31b3c5 217 #define UI2C_ENABLE_10BIT_ADDR_MODE(ui2c) ((ui2c)->PROTCTL |= UI2C_PROTCTL_ADDR10EN_Msk)
AnnaBridge 172:7d866c31b3c5 218
AnnaBridge 172:7d866c31b3c5 219 /**
AnnaBridge 172:7d866c31b3c5 220 * @brief This macro gets USCI_I2C protocol interrupt flag or bus status
AnnaBridge 172:7d866c31b3c5 221 *
AnnaBridge 172:7d866c31b3c5 222 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 223 *
AnnaBridge 172:7d866c31b3c5 224 * @return A word data of USCI_I2C_PROTSTS register
AnnaBridge 172:7d866c31b3c5 225 *
AnnaBridge 172:7d866c31b3c5 226 * @details Read a word data of USCI_I2C PROTSTS register to get USCI_I2C bus Interrupt flags or status.
AnnaBridge 172:7d866c31b3c5 227 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 228 */
AnnaBridge 172:7d866c31b3c5 229 #define UI2C_GET_PROT_STATUS(ui2c) ((ui2c)->PROTSTS)
AnnaBridge 172:7d866c31b3c5 230
AnnaBridge 172:7d866c31b3c5 231 /**
AnnaBridge 172:7d866c31b3c5 232 * @brief This macro clears specified protocol interrupt flag
AnnaBridge 172:7d866c31b3c5 233 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 234 * @param[in] u32IntTypeFlag Interrupt Type Flag, should be
AnnaBridge 172:7d866c31b3c5 235 * - \ref UI2C_PROTSTS_ACKIF_Msk
AnnaBridge 172:7d866c31b3c5 236 * - \ref UI2C_PROTSTS_ERRIF_Msk
AnnaBridge 172:7d866c31b3c5 237 * - \ref UI2C_PROTSTS_ARBLOIF_Msk
AnnaBridge 172:7d866c31b3c5 238 * - \ref UI2C_PROTSTS_NACKIF_Msk
AnnaBridge 172:7d866c31b3c5 239 * - \ref UI2C_PROTSTS_STORIF_Msk
AnnaBridge 172:7d866c31b3c5 240 * - \ref UI2C_PROTSTS_STARIF_Msk
AnnaBridge 172:7d866c31b3c5 241 * - \ref UI2C_PROTSTS_TOIF_Msk
AnnaBridge 172:7d866c31b3c5 242 * @return None
AnnaBridge 172:7d866c31b3c5 243 *
AnnaBridge 172:7d866c31b3c5 244 * @details To clear interrupt flag when USCI_I2C occurs interrupt and set interrupt flag.
AnnaBridge 172:7d866c31b3c5 245 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 246 */
AnnaBridge 172:7d866c31b3c5 247 #define UI2C_CLR_PROT_INT_FLAG(ui2c,u32IntTypeFlag) ((ui2c)->PROTSTS = (u32IntTypeFlag))
AnnaBridge 172:7d866c31b3c5 248
AnnaBridge 172:7d866c31b3c5 249 /**
AnnaBridge 172:7d866c31b3c5 250 * @brief This macro enables specified protocol interrupt
AnnaBridge 172:7d866c31b3c5 251 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 252 * @param[in] u32IntSel Interrupt Type, should be
AnnaBridge 172:7d866c31b3c5 253 * - \ref UI2C_PROTIEN_ACKIEN_Msk
AnnaBridge 172:7d866c31b3c5 254 * - \ref UI2C_PROTIEN_ERRIEN_Msk
AnnaBridge 172:7d866c31b3c5 255 * - \ref UI2C_PROTIEN_ARBLOIEN_Msk
AnnaBridge 172:7d866c31b3c5 256 * - \ref UI2C_PROTIEN_NACKIEN_Msk
AnnaBridge 172:7d866c31b3c5 257 * - \ref UI2C_PROTIEN_STORIEN_Msk
AnnaBridge 172:7d866c31b3c5 258 * - \ref UI2C_PROTIEN_STARIEN_Msk
AnnaBridge 172:7d866c31b3c5 259 * - \ref UI2C_PROTIEN_TOIEN_Msk
AnnaBridge 172:7d866c31b3c5 260 * @return None
AnnaBridge 172:7d866c31b3c5 261 *
AnnaBridge 172:7d866c31b3c5 262 * @details Set specified USCI_I2C protocol interrupt bits to enable interrupt function.
AnnaBridge 172:7d866c31b3c5 263 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 264 */
AnnaBridge 172:7d866c31b3c5 265 #define UI2C_ENABLE_PROT_INT(ui2c, u32IntSel) ((ui2c)->PROTIEN |= (u32IntSel))
AnnaBridge 172:7d866c31b3c5 266
AnnaBridge 172:7d866c31b3c5 267 /**
AnnaBridge 172:7d866c31b3c5 268 * @brief This macro disables specified protocol interrupt
AnnaBridge 172:7d866c31b3c5 269 * @param[in] ui2c The pointer of the specified USCI_I2C module.
AnnaBridge 172:7d866c31b3c5 270 * @param[in] u32IntSel Interrupt Type, should be
AnnaBridge 172:7d866c31b3c5 271 * - \ref UI2C_PROTIEN_ACKIEN_Msk
AnnaBridge 172:7d866c31b3c5 272 * - \ref UI2C_PROTIEN_ERRIEN_Msk
AnnaBridge 172:7d866c31b3c5 273 * - \ref UI2C_PROTIEN_ARBLOIEN_Msk
AnnaBridge 172:7d866c31b3c5 274 * - \ref UI2C_PROTIEN_NACKIEN_Msk
AnnaBridge 172:7d866c31b3c5 275 * - \ref UI2C_PROTIEN_STORIEN_Msk
AnnaBridge 172:7d866c31b3c5 276 * - \ref UI2C_PROTIEN_STARIEN_Msk
AnnaBridge 172:7d866c31b3c5 277 * - \ref UI2C_PROTIEN_TOIEN_Msk
AnnaBridge 172:7d866c31b3c5 278 * @return None
AnnaBridge 172:7d866c31b3c5 279 *
AnnaBridge 172:7d866c31b3c5 280 * @details Clear specified USCI_I2C protocol interrupt bits to disable interrupt function.
AnnaBridge 172:7d866c31b3c5 281 * \hideinitializer
AnnaBridge 172:7d866c31b3c5 282 */
AnnaBridge 172:7d866c31b3c5 283 #define UI2C_DISABLE_PROT_INT(ui2c, u32IntSel) ((ui2c)->PROTIEN &= ~ (u32IntSel))
AnnaBridge 172:7d866c31b3c5 284
AnnaBridge 172:7d866c31b3c5 285
AnnaBridge 172:7d866c31b3c5 286 uint32_t UI2C_Open(UI2C_T *ui2c, uint32_t u32BusClock);
AnnaBridge 172:7d866c31b3c5 287 void UI2C_Close(UI2C_T *ui2c);
AnnaBridge 172:7d866c31b3c5 288 void UI2C_ClearTimeoutFlag(UI2C_T *ui2c);
AnnaBridge 172:7d866c31b3c5 289 void UI2C_Trigger(UI2C_T *ui2c, uint8_t u8Start, uint8_t u8Stop, uint8_t u8Ptrg, uint8_t u8Ack);
AnnaBridge 172:7d866c31b3c5 290 void UI2C_DisableInt(UI2C_T *ui2c, uint32_t u32Mask);
AnnaBridge 172:7d866c31b3c5 291 void UI2C_EnableInt(UI2C_T *ui2c, uint32_t u32Mask);
AnnaBridge 172:7d866c31b3c5 292 uint32_t UI2C_GetBusClockFreq(UI2C_T *ui2c);
AnnaBridge 172:7d866c31b3c5 293 uint32_t UI2C_SetBusClockFreq(UI2C_T *ui2c, uint32_t u32BusClock);
AnnaBridge 172:7d866c31b3c5 294 uint32_t UI2C_GetIntFlag(UI2C_T *ui2c, uint32_t u32Mask);
AnnaBridge 172:7d866c31b3c5 295 void UI2C_ClearIntFlag(UI2C_T* ui2c , uint32_t u32Mask);
AnnaBridge 172:7d866c31b3c5 296 uint32_t UI2C_GetData(UI2C_T *ui2c);
AnnaBridge 172:7d866c31b3c5 297 void UI2C_SetData(UI2C_T *ui2c, uint8_t u8Data);
AnnaBridge 172:7d866c31b3c5 298 void UI2C_SetSlaveAddr(UI2C_T *ui2c, uint8_t u8SlaveNo, uint16_t u16SlaveAddr, uint8_t u8GCMode);
AnnaBridge 172:7d866c31b3c5 299 void UI2C_SetSlaveAddrMask(UI2C_T *ui2c, uint8_t u8SlaveNo, uint16_t u16SlaveAddrMask);
AnnaBridge 172:7d866c31b3c5 300 void UI2C_EnableTimeout(UI2C_T *ui2c, uint32_t u32TimeoutCnt);
AnnaBridge 172:7d866c31b3c5 301 void UI2C_DisableTimeout(UI2C_T *ui2c);
AnnaBridge 172:7d866c31b3c5 302 void UI2C_EnableWakeup(UI2C_T *ui2c, uint8_t u8WakeupMode);
AnnaBridge 172:7d866c31b3c5 303 void UI2C_DisableWakeup(UI2C_T *ui2c);
AnnaBridge 172:7d866c31b3c5 304
AnnaBridge 172:7d866c31b3c5 305 /*@}*/ /* end of group M480_USCI_I2C_EXPORTED_FUNCTIONS */
AnnaBridge 172:7d866c31b3c5 306
AnnaBridge 172:7d866c31b3c5 307 /*@}*/ /* end of group M480_USCI_I2C_Driver */
AnnaBridge 172:7d866c31b3c5 308
AnnaBridge 172:7d866c31b3c5 309 /*@}*/ /* end of group M480_Device_Driver */
AnnaBridge 172:7d866c31b3c5 310
AnnaBridge 172:7d866c31b3c5 311 #ifdef __cplusplus
AnnaBridge 172:7d866c31b3c5 312 }
AnnaBridge 172:7d866c31b3c5 313 #endif
AnnaBridge 172:7d866c31b3c5 314
AnnaBridge 172:7d866c31b3c5 315 #endif
AnnaBridge 172:7d866c31b3c5 316
AnnaBridge 172:7d866c31b3c5 317 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/