Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-dev by
targets/TARGET_NUVOTON/TARGET_M480/device/StdDriver/m480_usci_i2c.h@172:7d866c31b3c5, 2017-08-31 (annotated)
- 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?
| User | Revision | Line number | New 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. ***/ |
