i2c_reg.h 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. /**************************************************************************//**
  2. * @file i2c_reg.h
  3. * @version V1.00
  4. * @brief I2C register definition header file
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. * @copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
  8. *****************************************************************************/
  9. #ifndef __I2C_REG_H__
  10. #define __I2C_REG_H__
  11. #if defined ( __CC_ARM )
  12. #pragma anon_unions
  13. #endif
  14. /**
  15. @addtogroup REGISTER Control Register
  16. @{
  17. */
  18. /**
  19. @addtogroup I2C Inter-IC Bus Controller (I2C)
  20. Memory Mapped Structure for I2C Controller
  21. @{ */
  22. typedef struct
  23. {
  24. /**
  25. * @var I2C_T::CTL0
  26. * Offset: 0x00 I2C Control Register 0
  27. * ---------------------------------------------------------------------------------------------------
  28. * |Bits |Field |Descriptions
  29. * | :----: | :----: | :---- |
  30. * |[2] |AA |Assert Acknowledge Control
  31. * | | |When AA =1 prior to address or data is received, an acknowledged (low level to SDA) will be returned during the acknowledge clock pulse on the SCL line when 1.) A slave is acknowledging the address sent from master, 2.) The receiver devices are acknowledging the data sent by transmitter.
  32. * | | |When AA=0 prior to address or data received, a Not acknowledged (high level to SDA) will be returned during the acknowledge clock pulse on the SCL line.
  33. * |[3] |SI |I2C Interrupt Flag
  34. * | | |When a new I2C state is present in the I2C_STATUS0 register, the SI flag is set by hardware.
  35. * | | |If bit INTEN (I2C_CTL0 [7]) is set, the I2C interrupt is requested.
  36. * | | |SI must be cleared by software.
  37. * | | |Clear SI by writing 1 to this bit.
  38. * |[4] |STO |I2C STOP Control
  39. * | | |In Master mode, setting STO to transmit a STOP condition to bus then I2C controller will check the bus condition if a STOP condition is detected.
  40. * | | |This bit will be cleared by hardware automatically.
  41. * |[5] |STA |I2C START Control
  42. * | | |Setting STA to logic 1 to enter Master mode, the I2C hardware sends a START or repeat START condition to bus when the bus is free.
  43. * |[6] |I2CEN |I2C Controller Enable Bit
  44. * | | |Set to enable I2C serial function controller.
  45. * | | |When I2CEN=1 the I2C serial function enable.
  46. * | | |The multi-function pin function must set to SDA, and SCL of I2C function first.
  47. * | | |0 = I2C controller Disabled.
  48. * | | |1 = I2C controller Enabled.
  49. * |[7] |INTEN |Enable Interrupt
  50. * | | |0 = I2C interrupt Disabled.
  51. * | | |1 = I2C interrupt Enabled.
  52. * @var I2C_T::ADDR0
  53. * Offset: 0x04 I2C Slave Address Register0
  54. * ---------------------------------------------------------------------------------------------------
  55. * |Bits |Field |Descriptions
  56. * | :----: | :----: | :---- |
  57. * |[0] |GC |General Call Function
  58. * | | |0 = General Call Function Disabled.
  59. * | | |1 = General Call Function Enabled.
  60. * |[7:1] |ADDR |I2C Address
  61. * | | |The content of this register is irrelevant when I2C is in Master mode.
  62. * | | |In the slave mode, the seven most significant bits must be loaded with the chip's own address.
  63. * | | |The I2C hardware will react if either of the address is matched.
  64. * | | |Note: When software set 7'h00, the address can not be used.
  65. * @var I2C_T::DAT
  66. * Offset: 0x08 I2C Data Register
  67. * ---------------------------------------------------------------------------------------------------
  68. * |Bits |Field |Descriptions
  69. * | :----: | :----: | :---- |
  70. * |[7:0] |DAT |I2C Data
  71. * | | |Bit [7:0] is located with the 8-bit transferred/received data of I2C serial port.
  72. * @var I2C_T::STATUS0
  73. * Offset: 0x0C I2C Status Register 0
  74. * ---------------------------------------------------------------------------------------------------
  75. * |Bits |Field |Descriptions
  76. * | :----: | :----: | :---- |
  77. * |[7:0] |STATUS |I2C Status
  78. * | | |The three least significant bits are always 0.
  79. * | | |The five most significant bits contain the status code.
  80. * | | |There are 28 possible status codes.
  81. * | | |When the content of I2C_STATUS0 is F8H, no serial interrupt is requested.
  82. * | | |Others I2C_STATUS0 values correspond to defined I2C states.
  83. * | | |When each of these states is entered, a status interrupt is requested (SI = 1).
  84. * | | |A valid status code is present in I2C_STATUS0 one cycle after SI is set by hardware and is still present one cycle after SI has been reset by software.
  85. * | | |In addition, states 00H stands for a Bus Error.
  86. * | | |A Bus Error occurs when a START or STOP condition is present at an illegal position in the formation frame.
  87. * | | |Example of illegal position are during the serial transfer of an address byte, a data byte or an acknowledge bit.
  88. * @var I2C_T::CLKDIV
  89. * Offset: 0x10 I2C Clock Divided Register
  90. * ---------------------------------------------------------------------------------------------------
  91. * |Bits |Field |Descriptions
  92. * | :----: | :----: | :---- |
  93. * |[9:0] |DIVIDER |I2C Clock Divided
  94. * | | |Indicates the I2C clock rate: Data Baud Rate of I2C = (system clock) / (4x (I2C_CLKDIV+1)).
  95. * | | |Note: The minimum value of I2C_CLKDIV is 4.
  96. * @var I2C_T::TOCTL
  97. * Offset: 0x14 I2C Time-out Control Register
  98. * ---------------------------------------------------------------------------------------------------
  99. * |Bits |Field |Descriptions
  100. * | :----: | :----: | :---- |
  101. * |[0] |TOIF |Time-out Flag
  102. * | | |This bit is set by hardware when I2C time-out happened and it can interrupt CPU if I2C interrupt enable bit (INTEN) is set to 1.
  103. * | | |Note: Software can write 1 to clear this bit.
  104. * |[1] |TOCDIV4 |Time-out Counter Input Clock Divided by 4
  105. * | | |When enabled, the time-out period is extended 4 times.
  106. * | | |0 = Time-out period is extend 4 times Disabled.
  107. * | | |1 = Time-out period is extend 4 times Enabled.
  108. * |[2] |TOCEN |Time-out Counter Enable Bit
  109. * | | |When enabled, the 14-bit time-out counter will start counting when SI is cleared.
  110. * | | |Setting flag SI to '1' will reset counter and re-start up counting after SI is cleared.
  111. * | | |0 = Time-out counter Disabled.
  112. * | | |1 = Time-out counter Enabled.
  113. * @var I2C_T::ADDR1
  114. * Offset: 0x18 I2C Slave Address Register1
  115. * ---------------------------------------------------------------------------------------------------
  116. * |Bits |Field |Descriptions
  117. * | :----: | :----: | :---- |
  118. * |[0] |GC |General Call Function
  119. * | | |0 = General Call Function Disabled.
  120. * | | |1 = General Call Function Enabled.
  121. * |[7:1] |ADDR |I2C Address
  122. * | | |The content of this register is irrelevant when I2C is in Master mode.
  123. * | | |In the slave mode, the seven most significant bits must be loaded with the chip's own address.
  124. * | | |The I2C hardware will react if either of the address is matched.
  125. * | | |Note: When software set 7'h00, the address can not be used.
  126. * @var I2C_T::ADDR2
  127. * Offset: 0x1C I2C Slave Address Register2
  128. * ---------------------------------------------------------------------------------------------------
  129. * |Bits |Field |Descriptions
  130. * | :----: | :----: | :---- |
  131. * |[0] |GC |General Call Function
  132. * | | |0 = General Call Function Disabled.
  133. * | | |1 = General Call Function Enabled.
  134. * |[7:1] |ADDR |I2C Address
  135. * | | |The content of this register is irrelevant when I2C is in Master mode.
  136. * | | |In the slave mode, the seven most significant bits must be loaded with the chip's own address.
  137. * | | |The I2C hardware will react if either of the address is matched.
  138. * | | |Note: When software set 7'h00, the address can not be used.
  139. * @var I2C_T::ADDR3
  140. * Offset: 0x20 I2C Slave Address Register3
  141. * ---------------------------------------------------------------------------------------------------
  142. * |Bits |Field |Descriptions
  143. * | :----: | :----: | :---- |
  144. * |[0] |GC |General Call Function
  145. * | | |0 = General Call Function Disabled.
  146. * | | |1 = General Call Function Enabled.
  147. * |[7:1] |ADDR |I2C Address
  148. * | | |The content of this register is irrelevant when I2C is in Master mode.
  149. * | | |In the slave mode, the seven most significant bits must be loaded with the chip's own address.
  150. * | | |The I2C hardware will react if either of the address is matched.
  151. * | | |Note: When software set 7'h00, the address can not be used.
  152. * @var I2C_T::ADDRMSK0
  153. * Offset: 0x24 I2C Slave Address Mask Register0
  154. * ---------------------------------------------------------------------------------------------------
  155. * |Bits |Field |Descriptions
  156. * | :----: | :----: | :---- |
  157. * |[7:1] |ADDRMSK |I2C Address Mask
  158. * | | |0 = Mask Disabled (the received corresponding register bit should be exact the same as address register).
  159. * | | |1 = Mask Enabled (the received corresponding address bit is don't care).
  160. * | | |I2C bus controllers support multiple address recognition with four address mask register.
  161. * | | |When the bit in the address mask register is set to one, it means the received corresponding address bit is don't-care.
  162. * | | |If the bit is set to zero, that means the received corresponding register bit should be exact the same as address register.
  163. * | | |Note: The wake-up function can not use address mask.
  164. * @var I2C_T::ADDRMSK1
  165. * Offset: 0x28 I2C Slave Address Mask Register1
  166. * ---------------------------------------------------------------------------------------------------
  167. * |Bits |Field |Descriptions
  168. * | :----: | :----: | :---- |
  169. * |[7:1] |ADDRMSK |I2C Address Mask
  170. * | | |0 = Mask Disabled (the received corresponding register bit should be exact the same as address register).
  171. * | | |1 = Mask Enabled (the received corresponding address bit is don't care).
  172. * | | |I2C bus controllers support multiple address recognition with four address mask register.
  173. * | | |When the bit in the address mask register is set to one, it means the received corresponding address bit is don't-care.
  174. * | | |If the bit is set to zero, that means the received corresponding register bit should be exact the same as address register.
  175. * | | |Note: The wake-up function can not use address mask.
  176. * @var I2C_T::ADDRMSK2
  177. * Offset: 0x2C I2C Slave Address Mask Register2
  178. * ---------------------------------------------------------------------------------------------------
  179. * |Bits |Field |Descriptions
  180. * | :----: | :----: | :---- |
  181. * |[7:1] |ADDRMSK |I2C Address Mask
  182. * | | |0 = Mask Disabled (the received corresponding register bit should be exact the same as address register).
  183. * | | |1 = Mask Enabled (the received corresponding address bit is don't care).
  184. * | | |I2C bus controllers support multiple address recognition with four address mask register.
  185. * | | |When the bit in the address mask register is set to one, it means the received corresponding address bit is don't-care.
  186. * | | |If the bit is set to zero, that means the received corresponding register bit should be exact the same as address register.
  187. * | | |Note: The wake-up function can not use address mask.
  188. * @var I2C_T::ADDRMSK3
  189. * Offset: 0x30 I2C Slave Address Mask Register3
  190. * ---------------------------------------------------------------------------------------------------
  191. * |Bits |Field |Descriptions
  192. * | :----: | :----: | :---- |
  193. * |[7:1] |ADDRMSK |I2C Address Mask
  194. * | | |0 = Mask Disabled (the received corresponding register bit should be exact the same as address register).
  195. * | | |1 = Mask Enabled (the received corresponding address bit is don't care).
  196. * | | |I2C bus controllers support multiple address recognition with four address mask register.
  197. * | | |When the bit in the address mask register is set to one, it means the received corresponding address bit is don't-care.
  198. * | | |If the bit is set to zero, that means the received corresponding register bit should be exact the same as address register.
  199. * | | |Note: The wake-up function can not use address mask.
  200. * @var I2C_T::WKCTL
  201. * Offset: 0x3C I2C Wake-up Control Register
  202. * ---------------------------------------------------------------------------------------------------
  203. * |Bits |Field |Descriptions
  204. * | :----: | :----: | :---- |
  205. * |[0] |WKEN |I2C Wake-up Enable Bit
  206. * | | |0 = I2C wake-up function Disabled.
  207. * | | |1= I2C wake-up function Enabled.
  208. * |[7] |NHDBUSEN |I2C No Hold BUS Enable Bit
  209. * | | |0 = I2C hold bus after wake-up.
  210. * | | |1= I2C don't hold bus after wake-up.
  211. * | | |Note: The I2C controller could respond when WKIF event is not clear, it may cause error data transmitted or received.
  212. * | | |If data transmitted or received when WKIF event is not clear, user must reset I2C controller and execute the original operation again.
  213. * @var I2C_T::WKSTS
  214. * Offset: 0x40 I2C Wake-up Status Register
  215. * ---------------------------------------------------------------------------------------------------
  216. * |Bits |Field |Descriptions
  217. * | :----: | :----: | :---- |
  218. * |[0] |WKIF |I2C Wake-up Flag
  219. * | | |When chip is woken up from Power-down mode by I2C, this bit is set to 1.
  220. * | | |Software can write 1 to clear this bit.
  221. * |[1] |WKAKDONE |Wakeup Address Frame Acknowledge Bit Done
  222. * | | |0 = The ACK bit cycle of address match frame isn't done.
  223. * | | |1 = The ACK bit cycle of address match frame is done in power-down.
  224. * | | |Note: This bit can't release WKIF. Software can write 1 to clear this bit.
  225. * |[2] |WRSTSWK |Read/Write Status Bit in Address Wakeup Frame (Read Only)
  226. * | | |0 = Write command be record on the address match wakeup frame.
  227. * | | |1 = Read command be record on the address match wakeup frame.
  228. * | | |Note: This bit will be cleared when software can write 1 to WKAKDONE (I2C_WKSTS[1]) bit.
  229. * @var I2C_T::CTL1
  230. * Offset: 0x44 I2C Control Register 1
  231. * ---------------------------------------------------------------------------------------------------
  232. * |Bits |Field |Descriptions
  233. * | :----: | :----: | :---- |
  234. * |[0] |TXPDMAEN |PDMA Transmit Channel Available
  235. * | | |0 = Transmit PDMA function Disabled.
  236. * | | |1 = Transmit PDMA function Enabled.
  237. * |[1] |RXPDMAEN |PDMA Receive Channel Available
  238. * | | |0 = Receive PDMA function Disabled.
  239. * | | |1 = Receive PDMA function Enabled.
  240. * |[2] |PDMARST |PDMA Reset
  241. * | | |0 = No effect.
  242. * | | |1 = Reset the I2C request to PDMA.
  243. * |[3] |OVRIEN |I2C over Run Interrupt Control Bit
  244. * | | |Setting OVRIEN to logic 1 will send a interrupt to system when the TWOFF bit is enabled and there is over run event in received buffer.
  245. * |[4] |UDRIEN |I2C Under Run Interrupt Control Bit
  246. * | | |Setting UDRIEN to logic 1 will send a interrupt to system when the TWOFF bit is enabled and there is under run event happened in transmitted buffer.
  247. * |[5] |TWOBUFEN |Two-level BUFFER Enable Bit
  248. * | | |0 = Two-level buffer Disabled.
  249. * | | |1 = Two-level buffer Enabled.
  250. * | | |Set to enable the two-level buffer for I2C transmitted or received buffer.
  251. * | | |It is used to improve the performance of the I2C bus.
  252. * | | |If this bit is set = 1, the control bit of STA for repeat start or STO bit should be set after the current SI is cleared.
  253. * | | |For example: if there are 4 data shall be transmitted and then stop it.
  254. * | | |The STO bit shall be set after the 3rd data's SI event being clear.
  255. * | | |In this time, the 4th data can be transmitted and the I2C stop after the 4th data transmission done.
  256. * |[6] |BUFRST |Two-level BUFFER Reset
  257. * | | |0 = No effect.
  258. * | | |1 = Reset the related counters, two-level buffer state machine, and the content of data buffer.
  259. * |[7] |NSTRETCH |No Stretch on the I2C Bus
  260. * | | |0 = The I2C SCL bus is stretched by hardware if the SI is not cleared in master mode.
  261. * | | |1 = The I2C SCL bus is not stretched by hardware if the SI is not cleared in master mode.
  262. * |[8] |PDMASTR |PDMA Stretch Bit
  263. * | | |0 = I2C send STOP automatically after PDMA transfer done. (only master TX)
  264. * | | |1 = I2C SCL bus is stretched by hardware after PDMA transfer done if the SI is not cleared.
  265. * | | |(only master TX)
  266. * @var I2C_T::STATUS1
  267. * Offset: 0x48 I2C Status Register 1
  268. * ---------------------------------------------------------------------------------------------------
  269. * |Bits |Field |Descriptions
  270. * | :----: | :----: | :---- |
  271. * |[4] |FULL |TWO-lEVEL BUFFER FULL
  272. * | | |This bit indicates two-level buffer TX or RX full or not when the TWOBUFEN = 1.
  273. * | | |This bit is set when POINTER is equal to 2.
  274. * | | |Note:This bit is read only.
  275. * |[5] |EMPTY |TWO-lEVEL BUFFER EMPTY
  276. * | | |This bit indicates two-level buffer TX or RX empty or not when the TWOBUFEN = 1.
  277. * | | |This bit is set when POINTER is equal to 0.
  278. * | | |Note:This bit is read only.
  279. * |[6] |OVR |I2C over Run Status Bit
  280. * | | |This bit indicates the received two-level buffer TX or RX is over run when the TWOBUFEN = 1.
  281. * | | |Note:This bit is read only.
  282. * |[7] |UDR |I2C Under Run Status Bit
  283. * | | |This bit indicates the transmitted two-level buffer TX or RX is under run when the TWOBUFEN = 1.
  284. * | | |Note:This bit is read only.
  285. * |[8] |ONBUSY |On Bus Busy (Read Only)
  286. * | | |Indicates that a communication is in progress on the bus.
  287. * | | |It is set by hardware when a START condition is detected.
  288. * | | |It is cleared by hardware when a STOP condition is detected.
  289. * | | |0 = The bus is IDLE (both SCLK and SDA High).
  290. * | | |1 = The bus is busy.
  291. * @var I2C_T::TMCTL
  292. * Offset: 0x4C I2C Timing Configure Control Register
  293. * ---------------------------------------------------------------------------------------------------
  294. * |Bits |Field |Descriptions
  295. * | :----: | :----: | :---- |
  296. * |[8:0] |STCTL |Setup Time Configure Control
  297. * | | |This field is used to generate a delay timing between SDA falling edge and SCL rising edge in transmission mode.
  298. * | | |The delay setup time is numbers of peripheral clock = STCTL x PCLK.
  299. * | | |Note: Setup time setting should not make SCL output less than three PCLKs.
  300. * |[24:16] |HTCTL |Hold Time Configure Control
  301. * | | |This field is used to generate the delay timing between SCL falling edge and SDA rising edge in transmission mode.
  302. * | | |The delay hold time is numbers of peripheral clock = HTCTL x PCLK.
  303. * @var I2C_T::BUSCTL
  304. * Offset: 0x50 I2C Bus Management Control Register
  305. * ---------------------------------------------------------------------------------------------------
  306. * |Bits |Field |Descriptions
  307. * | :----: | :----: | :---- |
  308. * |[0] |ACKMEN |Acknowledge Control by Manual
  309. * | | |In order to allow ACK control in slave reception including the command and data, slave byte control mode must be enabled by setting the ACKMEN bit.
  310. * | | |0 = Slave byte control Disabled.
  311. * | | |1 = Slave byte control Enabled.
  312. * | | |The 9th bit can response the ACK or NACK according the received data by user.
  313. * | | |When the byte is received, stretching the SCLK signal low between the 8th and 9th SCLK pulse.
  314. * | | |Note: If the BMDEN =1 and this bit is enabled, the information of I2C_STATUS0 will be fixed as 0xF0 in slave receive condition.
  315. * |[1] |PECEN |Packet Error Checking Calculation Enable Bit
  316. * | | |0 = Packet Error Checking Calculation Disabled.
  317. * | | |1 = Packet Error Checking Calculation Enabled.
  318. * | | |Note: When I2C enter powerdown mode, the bit should be enabled after wake-up if needed PEC calculation.
  319. * |[2] |BMDEN |Bus Management Device Default Address Enable Bit
  320. * | | |0 = Device default address Disable.
  321. * | | |When the address 0'b1100001x coming and the both of BMDEN and ACKMEN are enabled, the device responses NACKed
  322. * | | |1 = Device default address Enabled.
  323. * | | |When the address 0'b1100001x coming and the both of BMDEN and ACKMEN are enabled, the device responses ACKed.
  324. * |[3] |BMHEN |Bus Management Host Enable Bit
  325. * | | |0 = Host function Disabled.
  326. * | | |1 = Host function Enabled.
  327. * |[4] |ALERTEN |Bus Management Alert Enable Bit
  328. * | | |Device Mode (BMHEN =0).
  329. * | | |0 = Release the BM_ALERT pin high and Alert Response Header disabled: 0001100x followed by NACK if both of BMDEN and ACKMEN are enabled.
  330. * | | |1 = Drive BM_ALERT pin low and Alert Response Address Header enables: 0001100x followed by ACK if both of BMDEN and ACKMEN are enabled.
  331. * | | |Host Mode (BMHEN =1).
  332. * | | |0 = BM_ALERT pin not supported.
  333. * | | |1 = BM_ALERT pin supported.
  334. * |[5] |SCTLOSTS |Suspend/Control Data Output Status
  335. * | | |0 = The output of SUSCON pin is low.
  336. * | | |1 = The output of SUSCON pin is high.
  337. * |[6] |SCTLOEN |Suspend or Control Pin Output Enable Bit
  338. * | | |0 = The SUSCON pin in input.
  339. * | | |1 = The output enable is active on the SUSCON pin.
  340. * |[7] |BUSEN |BUS Enable Bit
  341. * | | |0 = The system management function Disabled.
  342. * | | |1 = The system management function Enabled.
  343. * | | |Note: When the bit is enabled, the internal 14-bit counter is used to calculate the time out event of clock low condition.
  344. * |[8] |PECTXEN |Packet Error Checking Byte Transmission/Reception
  345. * | | |0 = No PEC transfer.
  346. * | | |1 = PEC transmission is requested.
  347. * | | |Note: 1.This bit has no effect in slave mode when ACKMEN =0.
  348. * |[9] |TIDLE |Timer Check in Idle State
  349. * | | |The BUSTOUT is used to calculate the time-out of clock low in bus active and the idle period in bus Idle.
  350. * | | |This bit is used to define which condition is enabled.
  351. * | | |0 = BUSTOUT is used to calculate the clock low period in bus active.
  352. * | | |1 = BUSTOUT is used to calculate the IDLE period in bus Idle.
  353. * | | |Note: The BUSY (I2C_BUSSTS[0]) indicate the current bus state.
  354. * |[10] |PECCLR |PEC Clear at Repeat Start
  355. * | | |The calculation of PEC starts when PECEN is set to 1 and it is cleared when the STA or STO bit is detected.
  356. * | | |This PECCLR bit is used to enable the condition of REPEAT START can clear the PEC calculation.
  357. * | | |0 = PEC calculation is cleared by "Repeat Start" function Disabled.
  358. * | | |1 = PEC calculation is cleared by "Repeat Start" function Enabled.
  359. * |[11] |ACKM9SI |Acknowledge Manual Enable Extra SI Interrupt
  360. * | | |0 = There is no SI interrupt in the 9th clock cycle when the BUSEN =1 and ACKMEN =1.
  361. * | | |1 = There is SI interrupt in the 9th clock cycle when the BUSEN =1 and ACKMEN =1.
  362. * |[12] |BCDIEN |Packet Error Checking Byte Count Done Interrupt Enable Bit
  363. * | | |0 = Byte count done interrupt Disabled.
  364. * | | |1 = Byte count done interrupt Enabled.
  365. * | | |Note: This bit is used in PECEN =1.
  366. * |[13] |PECDIEN |Packet Error Checking Byte Transfer Done Interrupt Enable Bit
  367. * | | |0 = PEC transfer done interrupt Disabled.
  368. * | | |1 = PEC transfer done interrupt Enabled.
  369. * | | |Note: This bit is used in PECEN =1.
  370. * @var I2C_T::BUSTCTL
  371. * Offset: 0x54 I2C Bus Management Timer Control Register
  372. * ---------------------------------------------------------------------------------------------------
  373. * |Bits |Field |Descriptions
  374. * | :----: | :----: | :---- |
  375. * |[0] |BUSTOEN |Bus Time Out Enable Bit
  376. * | | |0 = Bus clock low time-out detection Disabled.
  377. * | | |1 = Bus clock low time-out detection Enabled (bus clock is low for more than TTime-out (in BIDLE=0) or high more than TTime-out(in BIDLE =1)
  378. * |[1] |CLKTOEN |Cumulative Clock Low Time Out Enable Bit
  379. * | | |0 = Cumulative clock low time-out detection Disabled.
  380. * | | |1 = Cumulative clock low time-out detection Enabled.
  381. * | | |For Master, it calculates the period from START to ACK
  382. * | | |For Slave, it calculates the period from START to STOP
  383. * |[2] |BUSTOIEN |Time-out Interrupt Enable Bit
  384. * | | |BUSY =1.
  385. * | | |0 = SCLK low time-out interrupt Disabled.
  386. * | | |1 = SCLK low time-out interrupt Enabled.
  387. * | | |BUSY =0.
  388. * | | |0 = Bus IDLE time-out interrupt Disabled.
  389. * | | |1 = Bus IDLE time-out interrupt Enabled.
  390. * |[3] |CLKTOIEN |Extended Clock Time Out Interrupt Enable Bit
  391. * | | |0 = Clock time out interrupt Disabled.
  392. * | | |1 = Clock time out interrupt Enabled.
  393. * |[4] |TORSTEN |Time Out Reset Enable Bit
  394. * | | |0 = I2C state machine reset Disabled.
  395. * | | |1 = I2C state machine reset Enabled. (The clock and data bus will be released to high)
  396. * @var I2C_T::BUSSTS
  397. * Offset: 0x58 I2C Bus Management Status Register
  398. * ---------------------------------------------------------------------------------------------------
  399. * |Bits |Field |Descriptions
  400. * | :----: | :----: | :---- |
  401. * |[0] |BUSY |Bus Busy (Read Only)
  402. * | | |Indicates that a communication is in progress on the bus.
  403. * | | |It is set by hardware when a START condition is detected.
  404. * | | |It is cleared by hardware when a STOP condition is detected.
  405. * | | |0 = Bus is IDLE (both SCLK and SDA High).
  406. * | | |1 = Bus is busy.
  407. * |[1] |BCDONE |Byte Count Transmission/Receive Done
  408. * | | |0 = Byte count transmission/ receive is not finished when the PECEN is set.
  409. * | | |1 = Byte count transmission/ receive is finished when the PECEN is set.
  410. * | | |Note: Software can write 1 to clear this bit.
  411. * |[2] |PECERR |PEC Error in Reception
  412. * | | |0 = PEC value equal the received PEC data packet.
  413. * | | |1 = PEC value doesn't match the receive PEC data packet.
  414. * | | |Note: Software can write 1 to clear this bit.
  415. * |[3] |ALERT |SMBus Alert Status
  416. * | | |Device Mode (BMHEN =0).
  417. * | | |0 = SMBALERT pin state is low.
  418. * | | |1 = SMBALERT pin state is high.
  419. * | | |Host Mode (BMHEN =1).
  420. * | | |0 = No SMBALERT event.
  421. * | | |1 = There is SMBALERT event (falling edge) is detected in SMALERT pin when the BMHEN = 1 (SMBus host configuration) and the ALERTEN = 1.
  422. * | | |Note:
  423. * | | |1. The SMBALERT pin is an open-drain pin, the pull-high resistor is must in the system
  424. * | | |2. Software can write 1 to clear this bit.
  425. * |[4] |SCTLDIN |Bus Suspend or Control Signal Input Status (Read Only)
  426. * | | |0 = The input status of SUSCON pin is 0.
  427. * | | |1 = The input status of SUSCON pin is 1.
  428. * |[5] |BUSTO |Bus Time-out Status
  429. * | | |0 = There is no any time-out or external clock time-out.
  430. * | | |1 = A time-out or external clock time-out occurred.
  431. * | | |In bus busy, the bit indicates the total clock low time-out event occurred; otherwise, it indicates the bus idle time-out event occurred.
  432. * | | |Note: Software can write 1 to clear this bit.
  433. * |[6] |CLKTO |Clock Low Cumulate Time-out Status
  434. * | | |0 = Cumulative clock low is no any time-out.
  435. * | | |1 = Cumulative clock low time-out occurred.
  436. * | | |Note: Software can write 1 to clear this bit.
  437. * |[7] |PECDONE |PEC Byte Transmission/Receive Done
  438. * | | |0 = PEC transmission/ receive is not finished when the PECEN is set.
  439. * | | |1 = PEC transmission/ receive is finished when the PECEN is set.
  440. * | | |Note: Software can write 1 to clear this bit.
  441. * @var I2C_T::PKTSIZE
  442. * Offset: 0x5C I2C Packet Error Checking Byte Number Register
  443. * ---------------------------------------------------------------------------------------------------
  444. * |Bits |Field |Descriptions
  445. * | :----: | :----: | :---- |
  446. * |[8:0] |PLDSIZE |Transfer Byte Number
  447. * | | |The transmission or receive byte number in one transaction when the PECEN is set.
  448. * | | |The maximum transaction or receive byte is 256 Bytes.
  449. * | | |Note: The byte number counting includes address, command code, and data frame.
  450. * @var I2C_T::PKTCRC
  451. * Offset: 0x60 I2C Packet Error Checking Byte Value Register
  452. * ---------------------------------------------------------------------------------------------------
  453. * |Bits |Field |Descriptions
  454. * | :----: | :----: | :---- |
  455. * |[7:0] |PECCRC |Packet Error Checking Byte Value
  456. * | | |This byte indicates the packet error checking content after transmission or receive byte count by using the C(x) = X8 + X2 + X + 1.
  457. * | | |It is read only.
  458. * @var I2C_T::BUSTOUT
  459. * Offset: 0x64 I2C Bus Management Timer Register
  460. * ---------------------------------------------------------------------------------------------------
  461. * |Bits |Field |Descriptions
  462. * | :----: | :----: | :---- |
  463. * |[7:0] |BUSTO |Bus Management Time-out Value
  464. * | | |Indicates the bus time-out value in bus is IDLE or SCLK low.
  465. * | | |Note: If the user wants to revise the value of BUSTOUT, the TORSTEN (I2C_BUSTCTL[4]) bit shall be set to 1 and clear to 0 first in the BUSEN(I2C_BUSCTL[7]) is set.
  466. * @var I2C_T::CLKTOUT
  467. * Offset: 0x68 I2C Bus Management Clock Low Timer Register
  468. * ---------------------------------------------------------------------------------------------------
  469. * |Bits |Field |Descriptions
  470. * | :----: | :----: | :---- |
  471. * |[7:0] |CLKTO |Bus Clock Low Timer
  472. * | | |The field is used to configure the cumulative clock extension time-out.
  473. * | | |Note: If the user wants to revise the value of CLKLTOUT, the TORSTEN bit shall be set to 1 and clear to 0 first in the BUSEN is set.
  474. */
  475. __IO uint32_t CTL0; /*!< [0x0000] I2C Control Register 0 */
  476. __IO uint32_t ADDR0; /*!< [0x0004] I2C Slave Address Register0 */
  477. __IO uint32_t DAT; /*!< [0x0008] I2C Data Register */
  478. __I uint32_t STATUS0; /*!< [0x000c] I2C Status Register 0 */
  479. __IO uint32_t CLKDIV; /*!< [0x0010] I2C Clock Divided Register */
  480. __IO uint32_t TOCTL; /*!< [0x0014] I2C Time-out Control Register */
  481. __IO uint32_t ADDR1; /*!< [0x0018] I2C Slave Address Register1 */
  482. __IO uint32_t ADDR2; /*!< [0x001c] I2C Slave Address Register2 */
  483. __IO uint32_t ADDR3; /*!< [0x0020] I2C Slave Address Register3 */
  484. __IO uint32_t ADDRMSK0; /*!< [0x0024] I2C Slave Address Mask Register0 */
  485. __IO uint32_t ADDRMSK1; /*!< [0x0028] I2C Slave Address Mask Register1 */
  486. __IO uint32_t ADDRMSK2; /*!< [0x002c] I2C Slave Address Mask Register2 */
  487. __IO uint32_t ADDRMSK3; /*!< [0x0030] I2C Slave Address Mask Register3 */
  488. __I uint32_t RESERVE0[2];
  489. __IO uint32_t WKCTL; /*!< [0x003c] I2C Wake-up Control Register */
  490. __IO uint32_t WKSTS; /*!< [0x0040] I2C Wake-up Status Register */
  491. __IO uint32_t CTL1; /*!< [0x0044] I2C Control Register 1 */
  492. __IO uint32_t STATUS1; /*!< [0x0048] I2C Status Register 1 */
  493. __IO uint32_t TMCTL; /*!< [0x004c] I2C Timing Configure Control Register */
  494. __IO uint32_t BUSCTL; /*!< [0x0050] I2C Bus Management Control Register */
  495. __IO uint32_t BUSTCTL; /*!< [0x0054] I2C Bus Management Timer Control Register */
  496. __IO uint32_t BUSSTS; /*!< [0x0058] I2C Bus Management Status Register */
  497. __IO uint32_t PKTSIZE; /*!< [0x005c] I2C Packet Error Checking Byte Number Register */
  498. __I uint32_t PKTCRC; /*!< [0x0060] I2C Packet Error Checking Byte Value Register */
  499. __IO uint32_t BUSTOUT; /*!< [0x0064] I2C Bus Management Timer Register */
  500. __IO uint32_t CLKTOUT; /*!< [0x0068] I2C Bus Management Clock Low Timer Register */
  501. } I2C_T;
  502. /**
  503. @addtogroup I2C_CONST I2C Bit Field Definition
  504. Constant Definitions for I2C Controller
  505. @{ */
  506. #define I2C_CTL0_AA_Pos (2) /*!< I2C_T::CTL0: AA Position */
  507. #define I2C_CTL0_AA_Msk (0x1ul << I2C_CTL0_AA_Pos) /*!< I2C_T::CTL0: AA Mask */
  508. #define I2C_CTL0_SI_Pos (3) /*!< I2C_T::CTL0: SI Position */
  509. #define I2C_CTL0_SI_Msk (0x1ul << I2C_CTL0_SI_Pos) /*!< I2C_T::CTL0: SI Mask */
  510. #define I2C_CTL0_STO_Pos (4) /*!< I2C_T::CTL0: STO Position */
  511. #define I2C_CTL0_STO_Msk (0x1ul << I2C_CTL0_STO_Pos) /*!< I2C_T::CTL0: STO Mask */
  512. #define I2C_CTL0_STA_Pos (5) /*!< I2C_T::CTL0: STA Position */
  513. #define I2C_CTL0_STA_Msk (0x1ul << I2C_CTL0_STA_Pos) /*!< I2C_T::CTL0: STA Mask */
  514. #define I2C_CTL0_I2CEN_Pos (6) /*!< I2C_T::CTL0: I2CEN Position */
  515. #define I2C_CTL0_I2CEN_Msk (0x1ul << I2C_CTL0_I2CEN_Pos) /*!< I2C_T::CTL0: I2CEN Mask */
  516. #define I2C_CTL0_INTEN_Pos (7) /*!< I2C_T::CTL0: INTEN Position */
  517. #define I2C_CTL0_INTEN_Msk (0x1ul << I2C_CTL0_INTEN_Pos) /*!< I2C_T::CTL0: INTEN Mask */
  518. #define I2C_ADDR0_GC_Pos (0) /*!< I2C_T::ADDR0: GC Position */
  519. #define I2C_ADDR0_GC_Msk (0x1ul << I2C_ADDR0_GC_Pos) /*!< I2C_T::ADDR0: GC Mask */
  520. #define I2C_ADDR0_ADDR_Pos (1) /*!< I2C_T::ADDR0: ADDR Position */
  521. #define I2C_ADDR0_ADDR_Msk (0x7ful << I2C_ADDR0_ADDR_Pos) /*!< I2C_T::ADDR0: ADDR Mask */
  522. #define I2C_DAT_DAT_Pos (0) /*!< I2C_T::DAT: DAT Position */
  523. #define I2C_DAT_DAT_Msk (0xfful << I2C_DAT_DAT_Pos) /*!< I2C_T::DAT: DAT Mask */
  524. #define I2C_STATUS0_STATUS_Pos (0) /*!< I2C_T::STATUS0: STATUS Position */
  525. #define I2C_STATUS0_STATUS_Msk (0xfful << I2C_STATUS0_STATUS_Pos) /*!< I2C_T::STATUS0: STATUS Mask */
  526. #define I2C_CLKDIV_DIVIDER_Pos (0) /*!< I2C_T::CLKDIV: DIVIDER Position */
  527. #define I2C_CLKDIV_DIVIDER_Msk (0x3fful << I2C_CLKDIV_DIVIDER_Pos) /*!< I2C_T::CLKDIV: DIVIDER Mask */
  528. #define I2C_TOCTL_TOIF_Pos (0) /*!< I2C_T::TOCTL: TOIF Position */
  529. #define I2C_TOCTL_TOIF_Msk (0x1ul << I2C_TOCTL_TOIF_Pos) /*!< I2C_T::TOCTL: TOIF Mask */
  530. #define I2C_TOCTL_TOCDIV4_Pos (1) /*!< I2C_T::TOCTL: TOCDIV4 Position */
  531. #define I2C_TOCTL_TOCDIV4_Msk (0x1ul << I2C_TOCTL_TOCDIV4_Pos) /*!< I2C_T::TOCTL: TOCDIV4 Mask */
  532. #define I2C_TOCTL_TOCEN_Pos (2) /*!< I2C_T::TOCTL: TOCEN Position */
  533. #define I2C_TOCTL_TOCEN_Msk (0x1ul << I2C_TOCTL_TOCEN_Pos) /*!< I2C_T::TOCTL: TOCEN Mask */
  534. #define I2C_ADDR1_GC_Pos (0) /*!< I2C_T::ADDR1: GC Position */
  535. #define I2C_ADDR1_GC_Msk (0x1ul << I2C_ADDR1_GC_Pos) /*!< I2C_T::ADDR1: GC Mask */
  536. #define I2C_ADDR1_ADDR_Pos (1) /*!< I2C_T::ADDR1: ADDR Position */
  537. #define I2C_ADDR1_ADDR_Msk (0x7ful << I2C_ADDR1_ADDR_Pos) /*!< I2C_T::ADDR1: ADDR Mask */
  538. #define I2C_ADDR2_GC_Pos (0) /*!< I2C_T::ADDR2: GC Position */
  539. #define I2C_ADDR2_GC_Msk (0x1ul << I2C_ADDR2_GC_Pos) /*!< I2C_T::ADDR2: GC Mask */
  540. #define I2C_ADDR2_ADDR_Pos (1) /*!< I2C_T::ADDR2: ADDR Position */
  541. #define I2C_ADDR2_ADDR_Msk (0x7ful << I2C_ADDR2_ADDR_Pos) /*!< I2C_T::ADDR2: ADDR Mask */
  542. #define I2C_ADDR3_GC_Pos (0) /*!< I2C_T::ADDR3: GC Position */
  543. #define I2C_ADDR3_GC_Msk (0x1ul << I2C_ADDR3_GC_Pos) /*!< I2C_T::ADDR3: GC Mask */
  544. #define I2C_ADDR3_ADDR_Pos (1) /*!< I2C_T::ADDR3: ADDR Position */
  545. #define I2C_ADDR3_ADDR_Msk (0x7ful << I2C_ADDR3_ADDR_Pos) /*!< I2C_T::ADDR3: ADDR Mask */
  546. #define I2C_ADDRMSK0_ADDRMSK_Pos (1) /*!< I2C_T::ADDRMSK0: ADDRMSK Position */
  547. #define I2C_ADDRMSK0_ADDRMSK_Msk (0x7ful << I2C_ADDRMSK0_ADDRMSK_Pos) /*!< I2C_T::ADDRMSK0: ADDRMSK Mask */
  548. #define I2C_ADDRMSK1_ADDRMSK_Pos (1) /*!< I2C_T::ADDRMSK1: ADDRMSK Position */
  549. #define I2C_ADDRMSK1_ADDRMSK_Msk (0x7ful << I2C_ADDRMSK1_ADDRMSK_Pos) /*!< I2C_T::ADDRMSK1: ADDRMSK Mask */
  550. #define I2C_ADDRMSK2_ADDRMSK_Pos (1) /*!< I2C_T::ADDRMSK2: ADDRMSK Position */
  551. #define I2C_ADDRMSK2_ADDRMSK_Msk (0x7ful << I2C_ADDRMSK2_ADDRMSK_Pos) /*!< I2C_T::ADDRMSK2: ADDRMSK Mask */
  552. #define I2C_ADDRMSK3_ADDRMSK_Pos (1) /*!< I2C_T::ADDRMSK3: ADDRMSK Position */
  553. #define I2C_ADDRMSK3_ADDRMSK_Msk (0x7ful << I2C_ADDRMSK3_ADDRMSK_Pos) /*!< I2C_T::ADDRMSK3: ADDRMSK Mask */
  554. #define I2C_WKCTL_WKEN_Pos (0) /*!< I2C_T::WKCTL: WKEN Position */
  555. #define I2C_WKCTL_WKEN_Msk (0x1ul << I2C_WKCTL_WKEN_Pos) /*!< I2C_T::WKCTL: WKEN Mask */
  556. #define I2C_WKCTL_NHDBUSEN_Pos (7) /*!< I2C_T::WKCTL: NHDBUSEN Position */
  557. #define I2C_WKCTL_NHDBUSEN_Msk (0x1ul << I2C_WKCTL_NHDBUSEN_Pos) /*!< I2C_T::WKCTL: NHDBUSEN Mask */
  558. #define I2C_WKSTS_WKIF_Pos (0) /*!< I2C_T::WKSTS: WKIF Position */
  559. #define I2C_WKSTS_WKIF_Msk (0x1ul << I2C_WKSTS_WKIF_Pos) /*!< I2C_T::WKSTS: WKIF Mask */
  560. #define I2C_WKSTS_WKAKDONE_Pos (1) /*!< I2C_T::WKSTS: WKAKDONE Position */
  561. #define I2C_WKSTS_WKAKDONE_Msk (0x1ul << I2C_WKSTS_WKAKDONE_Pos) /*!< I2C_T::WKSTS: WKAKDONE Mask */
  562. #define I2C_WKSTS_WRSTSWK_Pos (2) /*!< I2C_T::WKSTS: WRSTSWK Position */
  563. #define I2C_WKSTS_WRSTSWK_Msk (0x1ul << I2C_WKSTS_WRSTSWK_Pos) /*!< I2C_T::WKSTS: WRSTSWK Mask */
  564. #define I2C_CTL1_TXPDMAEN_Pos (0) /*!< I2C_T::CTL1: TXPDMAEN Position */
  565. #define I2C_CTL1_TXPDMAEN_Msk (0x1ul << I2C_CTL1_TXPDMAEN_Pos) /*!< I2C_T::CTL1: TXPDMAEN Mask */
  566. #define I2C_CTL1_RXPDMAEN_Pos (1) /*!< I2C_T::CTL1: RXPDMAEN Position */
  567. #define I2C_CTL1_RXPDMAEN_Msk (0x1ul << I2C_CTL1_RXPDMAEN_Pos) /*!< I2C_T::CTL1: RXPDMAEN Mask */
  568. #define I2C_CTL1_PDMARST_Pos (2) /*!< I2C_T::CTL1: PDMARST Position */
  569. #define I2C_CTL1_PDMARST_Msk (0x1ul << I2C_CTL1_PDMARST_Pos) /*!< I2C_T::CTL1: PDMARST Mask */
  570. #define I2C_CTL1_OVRIEN_Pos (3) /*!< I2C_T::CTL1: OVRIEN Position */
  571. #define I2C_CTL1_OVRIEN_Msk (0x1ul << I2C_CTL1_OVRIEN_Pos) /*!< I2C_T::CTL1: OVRIEN Mask */
  572. #define I2C_CTL1_UDRIEN_Pos (4) /*!< I2C_T::CTL1: UDRIEN Position */
  573. #define I2C_CTL1_UDRIEN_Msk (0x1ul << I2C_CTL1_UDRIEN_Pos) /*!< I2C_T::CTL1: UDRIEN Mask */
  574. #define I2C_CTL1_TWOBUFEN_Pos (5) /*!< I2C_T::CTL1: TWOBUFEN Position */
  575. #define I2C_CTL1_TWOBUFEN_Msk (0x1ul << I2C_CTL1_TWOBUFEN_Pos) /*!< I2C_T::CTL1: TWOBUFEN Mask */
  576. #define I2C_CTL1_BUFRST_Pos (6) /*!< I2C_T::CTL1: BUFRST Position */
  577. #define I2C_CTL1_BUFRST_Msk (0x1ul << I2C_CTL1_BUFRST_Pos) /*!< I2C_T::CTL1: BUFRST Mask */
  578. #define I2C_CTL1_NSTRETCH_Pos (7) /*!< I2C_T::CTL1: NSTRETCH Position */
  579. #define I2C_CTL1_NSTRETCH_Msk (0x1ul << I2C_CTL1_NSTRETCH_Pos) /*!< I2C_T::CTL1: NSTRETCH Mask */
  580. #define I2C_CTL1_PDMASTR_Pos (8) /*!< I2C_T::CTL1: PDMASTR Position */
  581. #define I2C_CTL1_PDMASTR_Msk (0x1ul << I2C_CTL1_PDMASTR_Pos) /*!< I2C_T::CTL1: PDMASTR Mask */
  582. #define I2C_STATUS1_FULL_Pos (4) /*!< I2C_T::STATUS1: FULL Position */
  583. #define I2C_STATUS1_FULL_Msk (0x1ul << I2C_STATUS1_FULL_Pos) /*!< I2C_T::STATUS1: FULL Mask */
  584. #define I2C_STATUS1_EMPTY_Pos (5) /*!< I2C_T::STATUS1: EMPTY Position */
  585. #define I2C_STATUS1_EMPTY_Msk (0x1ul << I2C_STATUS1_EMPTY_Pos) /*!< I2C_T::STATUS1: EMPTY Mask */
  586. #define I2C_STATUS1_OVR_Pos (6) /*!< I2C_T::STATUS1: OVR Position */
  587. #define I2C_STATUS1_OVR_Msk (0x1ul << I2C_STATUS1_OVR_Pos) /*!< I2C_T::STATUS1: OVR Mask */
  588. #define I2C_STATUS1_UDR_Pos (7) /*!< I2C_T::STATUS1: UDR Position */
  589. #define I2C_STATUS1_UDR_Msk (0x1ul << I2C_STATUS1_UDR_Pos) /*!< I2C_T::STATUS1: UDR Mask */
  590. #define I2C_STATUS1_ONBUSY_Pos (8) /*!< I2C_T::STATUS1: ONBUSY Position */
  591. #define I2C_STATUS1_ONBUSY_Msk (0x1ul << I2C_STATUS1_ONBUSY_Pos) /*!< I2C_T::STATUS1: ONBUSY Mask */
  592. #define I2C_TMCTL_STCTL_Pos (0) /*!< I2C_T::TMCTL: STCTL Position */
  593. #define I2C_TMCTL_STCTL_Msk (0x1fful << I2C_TMCTL_STCTL_Pos) /*!< I2C_T::TMCTL: STCTL Mask */
  594. #define I2C_TMCTL_HTCTL_Pos (16) /*!< I2C_T::TMCTL: HTCTL Position */
  595. #define I2C_TMCTL_HTCTL_Msk (0x1fful << I2C_TMCTL_HTCTL_Pos) /*!< I2C_T::TMCTL: HTCTL Mask */
  596. #define I2C_BUSCTL_ACKMEN_Pos (0) /*!< I2C_T::BUSCTL: ACKMEN Position */
  597. #define I2C_BUSCTL_ACKMEN_Msk (0x1ul << I2C_BUSCTL_ACKMEN_Pos) /*!< I2C_T::BUSCTL: ACKMEN Mask */
  598. #define I2C_BUSCTL_PECEN_Pos (1) /*!< I2C_T::BUSCTL: PECEN Position */
  599. #define I2C_BUSCTL_PECEN_Msk (0x1ul << I2C_BUSCTL_PECEN_Pos) /*!< I2C_T::BUSCTL: PECEN Mask */
  600. #define I2C_BUSCTL_BMDEN_Pos (2) /*!< I2C_T::BUSCTL: BMDEN Position */
  601. #define I2C_BUSCTL_BMDEN_Msk (0x1ul << I2C_BUSCTL_BMDEN_Pos) /*!< I2C_T::BUSCTL: BMDEN Mask */
  602. #define I2C_BUSCTL_BMHEN_Pos (3) /*!< I2C_T::BUSCTL: BMHEN Position */
  603. #define I2C_BUSCTL_BMHEN_Msk (0x1ul << I2C_BUSCTL_BMHEN_Pos) /*!< I2C_T::BUSCTL: BMHEN Mask */
  604. #define I2C_BUSCTL_ALERTEN_Pos (4) /*!< I2C_T::BUSCTL: ALERTEN Position */
  605. #define I2C_BUSCTL_ALERTEN_Msk (0x1ul << I2C_BUSCTL_ALERTEN_Pos) /*!< I2C_T::BUSCTL: ALERTEN Mask */
  606. #define I2C_BUSCTL_SCTLOSTS_Pos (5) /*!< I2C_T::BUSCTL: SCTLOSTS Position */
  607. #define I2C_BUSCTL_SCTLOSTS_Msk (0x1ul << I2C_BUSCTL_SCTLOSTS_Pos) /*!< I2C_T::BUSCTL: SCTLOSTS Mask */
  608. #define I2C_BUSCTL_SCTLOEN_Pos (6) /*!< I2C_T::BUSCTL: SCTLOEN Position */
  609. #define I2C_BUSCTL_SCTLOEN_Msk (0x1ul << I2C_BUSCTL_SCTLOEN_Pos) /*!< I2C_T::BUSCTL: SCTLOEN Mask */
  610. #define I2C_BUSCTL_BUSEN_Pos (7) /*!< I2C_T::BUSCTL: BUSEN Position */
  611. #define I2C_BUSCTL_BUSEN_Msk (0x1ul << I2C_BUSCTL_BUSEN_Pos) /*!< I2C_T::BUSCTL: BUSEN Mask */
  612. #define I2C_BUSCTL_PECTXEN_Pos (8) /*!< I2C_T::BUSCTL: PECTXEN Position */
  613. #define I2C_BUSCTL_PECTXEN_Msk (0x1ul << I2C_BUSCTL_PECTXEN_Pos) /*!< I2C_T::BUSCTL: PECTXEN Mask */
  614. #define I2C_BUSCTL_TIDLE_Pos (9) /*!< I2C_T::BUSCTL: TIDLE Position */
  615. #define I2C_BUSCTL_TIDLE_Msk (0x1ul << I2C_BUSCTL_TIDLE_Pos) /*!< I2C_T::BUSCTL: TIDLE Mask */
  616. #define I2C_BUSCTL_PECCLR_Pos (10) /*!< I2C_T::BUSCTL: PECCLR Position */
  617. #define I2C_BUSCTL_PECCLR_Msk (0x1ul << I2C_BUSCTL_PECCLR_Pos) /*!< I2C_T::BUSCTL: PECCLR Mask */
  618. #define I2C_BUSCTL_ACKM9SI_Pos (11) /*!< I2C_T::BUSCTL: ACKM9SI Position */
  619. #define I2C_BUSCTL_ACKM9SI_Msk (0x1ul << I2C_BUSCTL_ACKM9SI_Pos) /*!< I2C_T::BUSCTL: ACKM9SI Mask */
  620. #define I2C_BUSCTL_BCDIEN_Pos (12) /*!< I2C_T::BUSCTL: BCDIEN Position */
  621. #define I2C_BUSCTL_BCDIEN_Msk (0x1ul << I2C_BUSCTL_BCDIEN_Pos) /*!< I2C_T::BUSCTL: BCDIEN Mask */
  622. #define I2C_BUSCTL_PECDIEN_Pos (13) /*!< I2C_T::BUSCTL: PECDIEN Position */
  623. #define I2C_BUSCTL_PECDIEN_Msk (0x1ul << I2C_BUSCTL_PECDIEN_Pos) /*!< I2C_T::BUSCTL: PECDIEN Mask */
  624. #define I2C_BUSTCTL_BUSTOEN_Pos (0) /*!< I2C_T::BUSTCTL: BUSTOEN Position */
  625. #define I2C_BUSTCTL_BUSTOEN_Msk (0x1ul << I2C_BUSTCTL_BUSTOEN_Pos) /*!< I2C_T::BUSTCTL: BUSTOEN Mask */
  626. #define I2C_BUSTCTL_CLKTOEN_Pos (1) /*!< I2C_T::BUSTCTL: CLKTOEN Position */
  627. #define I2C_BUSTCTL_CLKTOEN_Msk (0x1ul << I2C_BUSTCTL_CLKTOEN_Pos) /*!< I2C_T::BUSTCTL: CLKTOEN Mask */
  628. #define I2C_BUSTCTL_BUSTOIEN_Pos (2) /*!< I2C_T::BUSTCTL: BUSTOIEN Position */
  629. #define I2C_BUSTCTL_BUSTOIEN_Msk (0x1ul << I2C_BUSTCTL_BUSTOIEN_Pos) /*!< I2C_T::BUSTCTL: BUSTOIEN Mask */
  630. #define I2C_BUSTCTL_CLKTOIEN_Pos (3) /*!< I2C_T::BUSTCTL: CLKTOIEN Position */
  631. #define I2C_BUSTCTL_CLKTOIEN_Msk (0x1ul << I2C_BUSTCTL_CLKTOIEN_Pos) /*!< I2C_T::BUSTCTL: CLKTOIEN Mask */
  632. #define I2C_BUSTCTL_TORSTEN_Pos (4) /*!< I2C_T::BUSTCTL: TORSTEN Position */
  633. #define I2C_BUSTCTL_TORSTEN_Msk (0x1ul << I2C_BUSTCTL_TORSTEN_Pos) /*!< I2C_T::BUSTCTL: TORSTEN Mask */
  634. #define I2C_BUSSTS_BUSY_Pos (0) /*!< I2C_T::BUSSTS: BUSY Position */
  635. #define I2C_BUSSTS_BUSY_Msk (0x1ul << I2C_BUSSTS_BUSY_Pos) /*!< I2C_T::BUSSTS: BUSY Mask */
  636. #define I2C_BUSSTS_BCDONE_Pos (1) /*!< I2C_T::BUSSTS: BCDONE Position */
  637. #define I2C_BUSSTS_BCDONE_Msk (0x1ul << I2C_BUSSTS_BCDONE_Pos) /*!< I2C_T::BUSSTS: BCDONE Mask */
  638. #define I2C_BUSSTS_PECERR_Pos (2) /*!< I2C_T::BUSSTS: PECERR Position */
  639. #define I2C_BUSSTS_PECERR_Msk (0x1ul << I2C_BUSSTS_PECERR_Pos) /*!< I2C_T::BUSSTS: PECERR Mask */
  640. #define I2C_BUSSTS_ALERT_Pos (3) /*!< I2C_T::BUSSTS: ALERT Position */
  641. #define I2C_BUSSTS_ALERT_Msk (0x1ul << I2C_BUSSTS_ALERT_Pos) /*!< I2C_T::BUSSTS: ALERT Mask */
  642. #define I2C_BUSSTS_SCTLDIN_Pos (4) /*!< I2C_T::BUSSTS: SCTLDIN Position */
  643. #define I2C_BUSSTS_SCTLDIN_Msk (0x1ul << I2C_BUSSTS_SCTLDIN_Pos) /*!< I2C_T::BUSSTS: SCTLDIN Mask */
  644. #define I2C_BUSSTS_BUSTO_Pos (5) /*!< I2C_T::BUSSTS: BUSTO Position */
  645. #define I2C_BUSSTS_BUSTO_Msk (0x1ul << I2C_BUSSTS_BUSTO_Pos) /*!< I2C_T::BUSSTS: BUSTO Mask */
  646. #define I2C_BUSSTS_CLKTO_Pos (6) /*!< I2C_T::BUSSTS: CLKTO Position */
  647. #define I2C_BUSSTS_CLKTO_Msk (0x1ul << I2C_BUSSTS_CLKTO_Pos) /*!< I2C_T::BUSSTS: CLKTO Mask */
  648. #define I2C_BUSSTS_PECDONE_Pos (7) /*!< I2C_T::BUSSTS: PECDONE Position */
  649. #define I2C_BUSSTS_PECDONE_Msk (0x1ul << I2C_BUSSTS_PECDONE_Pos) /*!< I2C_T::BUSSTS: PECDONE Mask */
  650. #define I2C_PKTSIZE_PLDSIZE_Pos (0) /*!< I2C_T::PKTSIZE: PLDSIZE Position */
  651. #define I2C_PKTSIZE_PLDSIZE_Msk (0x1fful << I2C_PKTSIZE_PLDSIZE_Pos) /*!< I2C_T::PKTSIZE: PLDSIZE Mask */
  652. #define I2C_PKTCRC_PECCRC_Pos (0) /*!< I2C_T::PKTCRC: PECCRC Position */
  653. #define I2C_PKTCRC_PECCRC_Msk (0xfful << I2C_PKTCRC_PECCRC_Pos) /*!< I2C_T::PKTCRC: PECCRC Mask */
  654. #define I2C_BUSTOUT_BUSTO_Pos (0) /*!< I2C_T::BUSTOUT: BUSTO Position */
  655. #define I2C_BUSTOUT_BUSTO_Msk (0xfful << I2C_BUSTOUT_BUSTO_Pos) /*!< I2C_T::BUSTOUT: BUSTO Mask */
  656. #define I2C_CLKTOUT_CLKTO_Pos (0) /*!< I2C_T::CLKTOUT: CLKTO Position */
  657. #define I2C_CLKTOUT_CLKTO_Msk (0xfful << I2C_CLKTOUT_CLKTO_Pos) /*!< I2C_T::CLKTOUT: CLKTO Mask */
  658. /**@}*/ /* I2C_CONST */
  659. /**@}*/ /* end of I2C register group */
  660. /**@}*/ /* end of REGISTER group */
  661. #if defined ( __CC_ARM )
  662. #pragma no_anon_unions
  663. #endif
  664. #endif /* __I2C_REG_H__ */