mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_i2c.c@174:b96e65c34a4d, 2017-10-02 (annotated)
- Committer:
- AnnaBridge
- Date:
- Mon Oct 02 15:33:19 2017 +0100
- Revision:
- 174:b96e65c34a4d
This updates the lib to the mbed lib v 152
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 174:b96e65c34a4d | 1 | /****************************************************************************//** |
AnnaBridge | 174:b96e65c34a4d | 2 | * @file i2c.c |
AnnaBridge | 174:b96e65c34a4d | 3 | * @version V0.10 |
AnnaBridge | 174:b96e65c34a4d | 4 | * $Revision: 7 $ |
AnnaBridge | 174:b96e65c34a4d | 5 | * $Date: 15/06/05 5:04p $ |
AnnaBridge | 174:b96e65c34a4d | 6 | * @brief NANO100 series I2C driver source file |
AnnaBridge | 174:b96e65c34a4d | 7 | * |
AnnaBridge | 174:b96e65c34a4d | 8 | * @note |
AnnaBridge | 174:b96e65c34a4d | 9 | * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved. |
AnnaBridge | 174:b96e65c34a4d | 10 | *****************************************************************************/ |
AnnaBridge | 174:b96e65c34a4d | 11 | |
AnnaBridge | 174:b96e65c34a4d | 12 | #include "Nano100Series.h" |
AnnaBridge | 174:b96e65c34a4d | 13 | |
AnnaBridge | 174:b96e65c34a4d | 14 | /** @addtogroup NANO100_Device_Driver NANO100 Device Driver |
AnnaBridge | 174:b96e65c34a4d | 15 | @{ |
AnnaBridge | 174:b96e65c34a4d | 16 | */ |
AnnaBridge | 174:b96e65c34a4d | 17 | |
AnnaBridge | 174:b96e65c34a4d | 18 | /** @addtogroup NANO100_I2C_Driver I2C Driver |
AnnaBridge | 174:b96e65c34a4d | 19 | @{ |
AnnaBridge | 174:b96e65c34a4d | 20 | */ |
AnnaBridge | 174:b96e65c34a4d | 21 | |
AnnaBridge | 174:b96e65c34a4d | 22 | |
AnnaBridge | 174:b96e65c34a4d | 23 | /** @addtogroup NANO100_I2C_EXPORTED_FUNCTIONS I2C Exported Functions |
AnnaBridge | 174:b96e65c34a4d | 24 | @{ |
AnnaBridge | 174:b96e65c34a4d | 25 | */ |
AnnaBridge | 174:b96e65c34a4d | 26 | |
AnnaBridge | 174:b96e65c34a4d | 27 | /** |
AnnaBridge | 174:b96e65c34a4d | 28 | * @brief This function make I2C module be ready and set the wanted bus clock. |
AnnaBridge | 174:b96e65c34a4d | 29 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 30 | * @param[in] u32BusClock is the target bus speed of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 31 | * @return Actual I2C bus clock frequency. |
AnnaBridge | 174:b96e65c34a4d | 32 | */ |
AnnaBridge | 174:b96e65c34a4d | 33 | uint32_t I2C_Open(I2C_T *i2c, uint32_t u32BusClock) |
AnnaBridge | 174:b96e65c34a4d | 34 | { |
AnnaBridge | 174:b96e65c34a4d | 35 | uint32_t u32Div; |
AnnaBridge | 174:b96e65c34a4d | 36 | |
AnnaBridge | 174:b96e65c34a4d | 37 | u32Div = (uint32_t) (((SystemCoreClock * 10)/(u32BusClock * 4) + 5) / 10 - 1); /* Compute proper divider for I2C clock */ |
AnnaBridge | 174:b96e65c34a4d | 38 | i2c->DIV = u32Div; |
AnnaBridge | 174:b96e65c34a4d | 39 | |
AnnaBridge | 174:b96e65c34a4d | 40 | /* Enable I2C */ |
AnnaBridge | 174:b96e65c34a4d | 41 | i2c->CON |= I2C_CON_IPEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 42 | |
AnnaBridge | 174:b96e65c34a4d | 43 | return ( SystemCoreClock / ((u32Div+1)<<2) ); |
AnnaBridge | 174:b96e65c34a4d | 44 | } |
AnnaBridge | 174:b96e65c34a4d | 45 | |
AnnaBridge | 174:b96e65c34a4d | 46 | /** |
AnnaBridge | 174:b96e65c34a4d | 47 | * @brief This function closes the I2C module. |
AnnaBridge | 174:b96e65c34a4d | 48 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 49 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 50 | */ |
AnnaBridge | 174:b96e65c34a4d | 51 | void I2C_Close(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 52 | { |
AnnaBridge | 174:b96e65c34a4d | 53 | /* Reset I2C */ |
AnnaBridge | 174:b96e65c34a4d | 54 | if((uint32_t)i2c == I2C0_BASE) { |
AnnaBridge | 174:b96e65c34a4d | 55 | SYS->IPRST_CTL2 |= SYS_IPRST_CTL2_I2C0_RST_Msk; |
AnnaBridge | 174:b96e65c34a4d | 56 | SYS->IPRST_CTL2 &= ~SYS_IPRST_CTL2_I2C0_RST_Msk; |
AnnaBridge | 174:b96e65c34a4d | 57 | } else { |
AnnaBridge | 174:b96e65c34a4d | 58 | SYS->IPRST_CTL2 |= SYS_IPRST_CTL2_I2C1_RST_Msk; |
AnnaBridge | 174:b96e65c34a4d | 59 | SYS->IPRST_CTL2 &= ~SYS_IPRST_CTL2_I2C1_RST_Msk; |
AnnaBridge | 174:b96e65c34a4d | 60 | } |
AnnaBridge | 174:b96e65c34a4d | 61 | |
AnnaBridge | 174:b96e65c34a4d | 62 | /* Disable I2C */ |
AnnaBridge | 174:b96e65c34a4d | 63 | i2c->CON &= ~I2C_CON_IPEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 64 | } |
AnnaBridge | 174:b96e65c34a4d | 65 | |
AnnaBridge | 174:b96e65c34a4d | 66 | /** |
AnnaBridge | 174:b96e65c34a4d | 67 | * @brief This function clears the timeout flag. |
AnnaBridge | 174:b96e65c34a4d | 68 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 69 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 70 | */ |
AnnaBridge | 174:b96e65c34a4d | 71 | void I2C_ClearTimeoutFlag(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 72 | { |
AnnaBridge | 174:b96e65c34a4d | 73 | i2c->INTSTS |= I2C_INTSTS_TIF_Msk; |
AnnaBridge | 174:b96e65c34a4d | 74 | } |
AnnaBridge | 174:b96e65c34a4d | 75 | |
AnnaBridge | 174:b96e65c34a4d | 76 | /** |
AnnaBridge | 174:b96e65c34a4d | 77 | * @brief This function sets the control bit of the I2C module. |
AnnaBridge | 174:b96e65c34a4d | 78 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 79 | * @param[in] u8Start sets START bit to I2C module. |
AnnaBridge | 174:b96e65c34a4d | 80 | * @param[in] u8Stop sets STOP bit to I2C module. |
AnnaBridge | 174:b96e65c34a4d | 81 | * @param[in] u8Si sets SI bit to I2C module. |
AnnaBridge | 174:b96e65c34a4d | 82 | * @param[in] u8Ack sets ACK bit to I2C module. |
AnnaBridge | 174:b96e65c34a4d | 83 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 84 | */ |
AnnaBridge | 174:b96e65c34a4d | 85 | void I2C_Trigger(I2C_T *i2c, uint8_t u8Start, uint8_t u8Stop, uint8_t u8Si, uint8_t u8Ack) |
AnnaBridge | 174:b96e65c34a4d | 86 | { |
AnnaBridge | 174:b96e65c34a4d | 87 | uint32_t u32Reg = 0; |
AnnaBridge | 174:b96e65c34a4d | 88 | uint32_t u32Val = i2c->CON & ~(I2C_STA | I2C_STO | I2C_AA); |
AnnaBridge | 174:b96e65c34a4d | 89 | |
AnnaBridge | 174:b96e65c34a4d | 90 | if (u8Start) |
AnnaBridge | 174:b96e65c34a4d | 91 | u32Reg |= I2C_STA; |
AnnaBridge | 174:b96e65c34a4d | 92 | if (u8Stop) |
AnnaBridge | 174:b96e65c34a4d | 93 | u32Reg |= I2C_STO; |
AnnaBridge | 174:b96e65c34a4d | 94 | if (u8Si) |
AnnaBridge | 174:b96e65c34a4d | 95 | u32Reg |= I2C_SI; |
AnnaBridge | 174:b96e65c34a4d | 96 | if (u8Ack) |
AnnaBridge | 174:b96e65c34a4d | 97 | u32Reg |= I2C_AA; |
AnnaBridge | 174:b96e65c34a4d | 98 | |
AnnaBridge | 174:b96e65c34a4d | 99 | i2c->CON = u32Val | u32Reg; |
AnnaBridge | 174:b96e65c34a4d | 100 | } |
AnnaBridge | 174:b96e65c34a4d | 101 | |
AnnaBridge | 174:b96e65c34a4d | 102 | /** |
AnnaBridge | 174:b96e65c34a4d | 103 | * @brief This function disables the interrupt of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 104 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 105 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 106 | */ |
AnnaBridge | 174:b96e65c34a4d | 107 | void I2C_DisableInt(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 108 | { |
AnnaBridge | 174:b96e65c34a4d | 109 | i2c->CON &= ~I2C_CON_INTEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 110 | } |
AnnaBridge | 174:b96e65c34a4d | 111 | |
AnnaBridge | 174:b96e65c34a4d | 112 | /** |
AnnaBridge | 174:b96e65c34a4d | 113 | * @brief This function enables the interrupt (EI bit) of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 114 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 115 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 116 | */ |
AnnaBridge | 174:b96e65c34a4d | 117 | void I2C_EnableInt(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 118 | { |
AnnaBridge | 174:b96e65c34a4d | 119 | i2c->CON |= I2C_CON_INTEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 120 | } |
AnnaBridge | 174:b96e65c34a4d | 121 | |
AnnaBridge | 174:b96e65c34a4d | 122 | /** |
AnnaBridge | 174:b96e65c34a4d | 123 | * @brief This function returns the real bus clock of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 124 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 125 | * @return Actual I2C bus clock frequency. |
AnnaBridge | 174:b96e65c34a4d | 126 | */ |
AnnaBridge | 174:b96e65c34a4d | 127 | uint32_t I2C_GetBusClockFreq(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 128 | { |
AnnaBridge | 174:b96e65c34a4d | 129 | uint32_t u32Divider = i2c->DIV; |
AnnaBridge | 174:b96e65c34a4d | 130 | |
AnnaBridge | 174:b96e65c34a4d | 131 | return ( SystemCoreClock / ((u32Divider+1)<<2) ); |
AnnaBridge | 174:b96e65c34a4d | 132 | } |
AnnaBridge | 174:b96e65c34a4d | 133 | |
AnnaBridge | 174:b96e65c34a4d | 134 | /** |
AnnaBridge | 174:b96e65c34a4d | 135 | * @brief This function sets bus frequency of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 136 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 137 | * @param[in] u32BusClock is the target bus speed of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 138 | * @return Actual I2C bus clock frequency. |
AnnaBridge | 174:b96e65c34a4d | 139 | */ |
AnnaBridge | 174:b96e65c34a4d | 140 | uint32_t I2C_SetBusClockFreq(I2C_T *i2c, uint32_t u32BusClock) |
AnnaBridge | 174:b96e65c34a4d | 141 | { |
AnnaBridge | 174:b96e65c34a4d | 142 | uint32_t u32Div; |
AnnaBridge | 174:b96e65c34a4d | 143 | |
AnnaBridge | 174:b96e65c34a4d | 144 | u32Div = (uint32_t) (((SystemCoreClock * 10)/(u32BusClock * 4) + 5) / 10 - 1); /* Compute proper divider for I2C clock */ |
AnnaBridge | 174:b96e65c34a4d | 145 | i2c->DIV = u32Div; |
AnnaBridge | 174:b96e65c34a4d | 146 | |
AnnaBridge | 174:b96e65c34a4d | 147 | return ( SystemCoreClock / ((u32Div+1)<<2) ); |
AnnaBridge | 174:b96e65c34a4d | 148 | } |
AnnaBridge | 174:b96e65c34a4d | 149 | |
AnnaBridge | 174:b96e65c34a4d | 150 | /** |
AnnaBridge | 174:b96e65c34a4d | 151 | * @brief This function gets the interrupt flag of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 152 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 153 | * @return Interrupt flag. |
AnnaBridge | 174:b96e65c34a4d | 154 | * @retval 0 Flag is not set. |
AnnaBridge | 174:b96e65c34a4d | 155 | * @retval 1 Flag is set. |
AnnaBridge | 174:b96e65c34a4d | 156 | */ |
AnnaBridge | 174:b96e65c34a4d | 157 | uint32_t I2C_GetIntFlag(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 158 | { |
AnnaBridge | 174:b96e65c34a4d | 159 | return ( (i2c->INTSTS & I2C_INTSTS_INTSTS_Msk) == I2C_INTSTS_INTSTS_Msk ? 1:0 ); |
AnnaBridge | 174:b96e65c34a4d | 160 | } |
AnnaBridge | 174:b96e65c34a4d | 161 | |
AnnaBridge | 174:b96e65c34a4d | 162 | /** |
AnnaBridge | 174:b96e65c34a4d | 163 | * @brief This function clears the interrupt flag of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 164 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 165 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 166 | */ |
AnnaBridge | 174:b96e65c34a4d | 167 | void I2C_ClearIntFlag(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 168 | { |
AnnaBridge | 174:b96e65c34a4d | 169 | i2c->INTSTS |= I2C_INTSTS_INTSTS_Msk; |
AnnaBridge | 174:b96e65c34a4d | 170 | } |
AnnaBridge | 174:b96e65c34a4d | 171 | |
AnnaBridge | 174:b96e65c34a4d | 172 | /** |
AnnaBridge | 174:b96e65c34a4d | 173 | * @brief This function returns the status of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 174 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 175 | * @return I2C status |
AnnaBridge | 174:b96e65c34a4d | 176 | */ |
AnnaBridge | 174:b96e65c34a4d | 177 | uint32_t I2C_GetStatus(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 178 | { |
AnnaBridge | 174:b96e65c34a4d | 179 | return ( i2c->STATUS ); |
AnnaBridge | 174:b96e65c34a4d | 180 | } |
AnnaBridge | 174:b96e65c34a4d | 181 | |
AnnaBridge | 174:b96e65c34a4d | 182 | /** |
AnnaBridge | 174:b96e65c34a4d | 183 | * @brief This function returns the data stored in data register of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 184 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 185 | * @return Data. |
AnnaBridge | 174:b96e65c34a4d | 186 | */ |
AnnaBridge | 174:b96e65c34a4d | 187 | uint32_t I2C_GetData(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 188 | { |
AnnaBridge | 174:b96e65c34a4d | 189 | return ( i2c->DATA ); |
AnnaBridge | 174:b96e65c34a4d | 190 | } |
AnnaBridge | 174:b96e65c34a4d | 191 | |
AnnaBridge | 174:b96e65c34a4d | 192 | /** |
AnnaBridge | 174:b96e65c34a4d | 193 | * @brief This function writes the data to data register of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 194 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 195 | * @param[in] u8Data is the data which will be write to data register of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 196 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 197 | */ |
AnnaBridge | 174:b96e65c34a4d | 198 | void I2C_SetData(I2C_T *i2c, uint8_t u8Data) |
AnnaBridge | 174:b96e65c34a4d | 199 | { |
AnnaBridge | 174:b96e65c34a4d | 200 | i2c->DATA = u8Data; |
AnnaBridge | 174:b96e65c34a4d | 201 | } |
AnnaBridge | 174:b96e65c34a4d | 202 | |
AnnaBridge | 174:b96e65c34a4d | 203 | /** |
AnnaBridge | 174:b96e65c34a4d | 204 | * @brief Configure slave address and enable GC mode. |
AnnaBridge | 174:b96e65c34a4d | 205 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 206 | * @param[in] u8SlaveNo is the set number of salve address. |
AnnaBridge | 174:b96e65c34a4d | 207 | * @param[in] u8SlaveAddr is the slave address. |
AnnaBridge | 174:b96e65c34a4d | 208 | * @param[in] u8GCMode GC mode enable or not. Valid values are: |
AnnaBridge | 174:b96e65c34a4d | 209 | * - \ref I2C_GCMODE_ENABLE |
AnnaBridge | 174:b96e65c34a4d | 210 | * - \ref I2C_GCMODE_DISABLE |
AnnaBridge | 174:b96e65c34a4d | 211 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 212 | */ |
AnnaBridge | 174:b96e65c34a4d | 213 | void I2C_SetSlaveAddr(I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddr, uint8_t u8GCMode) |
AnnaBridge | 174:b96e65c34a4d | 214 | { |
AnnaBridge | 174:b96e65c34a4d | 215 | switch (u8SlaveNo) { |
AnnaBridge | 174:b96e65c34a4d | 216 | case 0: |
AnnaBridge | 174:b96e65c34a4d | 217 | i2c->SADDR0 = (u8SlaveAddr << 1) | u8GCMode; |
AnnaBridge | 174:b96e65c34a4d | 218 | break; |
AnnaBridge | 174:b96e65c34a4d | 219 | case 1: |
AnnaBridge | 174:b96e65c34a4d | 220 | i2c->SADDR1 = (u8SlaveAddr << 1) | u8GCMode; |
AnnaBridge | 174:b96e65c34a4d | 221 | break; |
AnnaBridge | 174:b96e65c34a4d | 222 | } |
AnnaBridge | 174:b96e65c34a4d | 223 | } |
AnnaBridge | 174:b96e65c34a4d | 224 | |
AnnaBridge | 174:b96e65c34a4d | 225 | /** |
AnnaBridge | 174:b96e65c34a4d | 226 | * @brief Configure the mask of slave address. The corresponding address bit is "Don't Care". |
AnnaBridge | 174:b96e65c34a4d | 227 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 228 | * @param[in] u8SlaveNo is the set number of salve address. |
AnnaBridge | 174:b96e65c34a4d | 229 | * @param[in] u8SlaveAddrMask is the slave address mask. |
AnnaBridge | 174:b96e65c34a4d | 230 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 231 | */ |
AnnaBridge | 174:b96e65c34a4d | 232 | void I2C_SetSlaveAddrMask(I2C_T *i2c, uint8_t u8SlaveNo, uint8_t u8SlaveAddrMask) |
AnnaBridge | 174:b96e65c34a4d | 233 | { |
AnnaBridge | 174:b96e65c34a4d | 234 | switch (u8SlaveNo) { |
AnnaBridge | 174:b96e65c34a4d | 235 | case 0: |
AnnaBridge | 174:b96e65c34a4d | 236 | i2c->SAMASK0 = u8SlaveAddrMask << 1; |
AnnaBridge | 174:b96e65c34a4d | 237 | break; |
AnnaBridge | 174:b96e65c34a4d | 238 | case 1: |
AnnaBridge | 174:b96e65c34a4d | 239 | i2c->SAMASK1 = u8SlaveAddrMask << 1; |
AnnaBridge | 174:b96e65c34a4d | 240 | break; |
AnnaBridge | 174:b96e65c34a4d | 241 | } |
AnnaBridge | 174:b96e65c34a4d | 242 | } |
AnnaBridge | 174:b96e65c34a4d | 243 | |
AnnaBridge | 174:b96e65c34a4d | 244 | /** |
AnnaBridge | 174:b96e65c34a4d | 245 | * @brief This function enables timeout function and configures DIV4 function to support long timeout. |
AnnaBridge | 174:b96e65c34a4d | 246 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 247 | * @param[in] u8LongTimeout Enable timeout counter input clock is divide by 4. |
AnnaBridge | 174:b96e65c34a4d | 248 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 249 | */ |
AnnaBridge | 174:b96e65c34a4d | 250 | void I2C_EnableTimeout(I2C_T *i2c, uint8_t u8LongTimeout) |
AnnaBridge | 174:b96e65c34a4d | 251 | { |
AnnaBridge | 174:b96e65c34a4d | 252 | if(u8LongTimeout) |
AnnaBridge | 174:b96e65c34a4d | 253 | i2c->TOUT |= I2C_TOUT_DIV4_Msk; |
AnnaBridge | 174:b96e65c34a4d | 254 | else |
AnnaBridge | 174:b96e65c34a4d | 255 | i2c->TOUT &= ~I2C_TOUT_DIV4_Msk; |
AnnaBridge | 174:b96e65c34a4d | 256 | |
AnnaBridge | 174:b96e65c34a4d | 257 | i2c->TOUT |= I2C_TOUT_TOUTEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 258 | } |
AnnaBridge | 174:b96e65c34a4d | 259 | |
AnnaBridge | 174:b96e65c34a4d | 260 | /** |
AnnaBridge | 174:b96e65c34a4d | 261 | * @brief This function disables timeout function. |
AnnaBridge | 174:b96e65c34a4d | 262 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 263 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 264 | */ |
AnnaBridge | 174:b96e65c34a4d | 265 | void I2C_DisableTimeout(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 266 | { |
AnnaBridge | 174:b96e65c34a4d | 267 | i2c->TOUT &= ~I2C_TOUT_TOUTEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 268 | } |
AnnaBridge | 174:b96e65c34a4d | 269 | |
AnnaBridge | 174:b96e65c34a4d | 270 | /** |
AnnaBridge | 174:b96e65c34a4d | 271 | * @brief This function enables the wakeup function of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 272 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 273 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 274 | */ |
AnnaBridge | 174:b96e65c34a4d | 275 | void I2C_EnableWakeup(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 276 | { |
AnnaBridge | 174:b96e65c34a4d | 277 | i2c->WKUPCON |= I2C_WKUPCON_WKUPEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 278 | } |
AnnaBridge | 174:b96e65c34a4d | 279 | |
AnnaBridge | 174:b96e65c34a4d | 280 | /** |
AnnaBridge | 174:b96e65c34a4d | 281 | * @brief This function disables the wakeup function of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 282 | * @param[in] i2c is the base address of I2C module. |
AnnaBridge | 174:b96e65c34a4d | 283 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 284 | */ |
AnnaBridge | 174:b96e65c34a4d | 285 | void I2C_DisableWakeup(I2C_T *i2c) |
AnnaBridge | 174:b96e65c34a4d | 286 | { |
AnnaBridge | 174:b96e65c34a4d | 287 | i2c->WKUPCON &= ~I2C_WKUPCON_WKUPEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 288 | } |
AnnaBridge | 174:b96e65c34a4d | 289 | |
AnnaBridge | 174:b96e65c34a4d | 290 | /*@}*/ /* end of group NANO100_I2C_EXPORTED_FUNCTIONS */ |
AnnaBridge | 174:b96e65c34a4d | 291 | |
AnnaBridge | 174:b96e65c34a4d | 292 | /*@}*/ /* end of group NANO100_I2C_Driver */ |
AnnaBridge | 174:b96e65c34a4d | 293 | |
AnnaBridge | 174:b96e65c34a4d | 294 | /*@}*/ /* end of group NANO100_Device_Driver */ |
AnnaBridge | 174:b96e65c34a4d | 295 | |
AnnaBridge | 174:b96e65c34a4d | 296 | /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/ |