SPRUJF2A March 2026 – March 2026 AM13E23019
Table 24-20 lists the memory-mapped registers for the UNICOMMI2CC_REGS registers. All register offset addresses not listed in Table 24-20 should be considered as reserved locations and the register contents should not be modified.
| Offset | Acronym | Register Name | Section |
|---|---|---|---|
| 0h | CLKDIV | Clock Divider | Go |
| 8h | CLKSEL | Clock Source Selection/Enable. | Go |
| 18h | PDBGCTL | Peripheral Debug Control | Go |
| 20h | IIDX | Interrupt index | Go |
| 28h | IMASK | Interrupt mask | Go |
| 30h | RIS | Raw interrupt status | Go |
| 38h | MIS | Masked interrupt status | Go |
| 40h | ISET | Interrupt set | Go |
| 48h | ICLR | Interrupt clear | Go |
| 58h | IMASK | Interrupt mask | Go |
| 60h | RIS | Raw interrupt status | Go |
| 68h | MIS | Masked interrupt status | Go |
| 70h | ISET | Interrupt set | Go |
| 88h | IMASK | Interrupt mask | Go |
| 90h | RIS | Raw interrupt status | Go |
| 98h | MIS | Masked interrupt status | Go |
| A0h | ISET | Interrupt set | Go |
| E4h | INTCTL | Interrupt control register | Go |
| 100h | CTR | Control Register | Go |
| 104h | CR | Configuration | Go |
| 108h | SR | Status Register | Go |
| 10Ch | IFLS | Interrupt FIFO Level Select Register | Go |
| 110h | TPR | Timer Period | Go |
| 118h | GFCTL | I2C Glitch Filter Control | Go |
| 11Ch | BMON | Bus Monitor | Go |
| 120h | TXDATA | TXData | Go |
| 124h | RXDATA | RXData | Go |
| 128h | PECSR | PEC status register | Go |
| 14Ch | TA | Target Address Register | Go |
| 150h | TIMEOUT_CNT | I2C Timeout Count Register | Go |
| 154h | TIMEOUT_CTL | I2C Timeout Count Control Register | Go |
| 158h | PECCTL | I2C PEC control register | Go |
Complex bit access types are encoded to fit into small table cells. Table 24-21 shows the codes that are used for access types in this section.
| Access Type | Code | Description |
|---|---|---|
| Read Type | ||
| R | R | Read |
| Write Type | ||
| W | W | Write |
| Reset or Default Value | ||
| -n | Value after reset or the default value | |
CLKDIV is shown in Figure 24-21 and described in Table 24-22.
Return to the Summary Table.
This register is used to specify the module-specific divide ratio of the I2CC functional clock (I2Cclk).
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||||||||||
| R/W-0h | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | RATIO | ||||||||||||||
| R/W-0h | R/W-0h | ||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R/W | 0h | |
| 2-0 | RATIO | R/W | 0h | Selects divide ratio of module clock
Division factor
0 : DIV_BY_1
1 : DIV_BY_2
....
63: DIV_BY_64
0h = Do not divide clock source 1h = Divide clock source by 2 2h = Divide clock source by 3 3h = Divide clock source by 4 4h = Divide clock source by 5 5h = Divide clock source by 6 6h = Divide clock source by 7 7h = Divide clock source by 8 |
CLKSEL is shown in Figure 24-22 and described in Table 24-23.
Return to the Summary Table.
I2CC Clock Source Selection.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | MCLKDIV2 | RESERVED | |||||
| R/W-0h | R/W-0h | R/W-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R/W | 0h | |
| 3 | MCLKDIV2 | R/W | 0h | Enables MCLKDIV2 as the UNICOMM I2CC clock source.
0h = Does not select this clock as a source 1h = Select this clock as a source |
| 2-0 | RESERVED | R/W | 0h |
PDBGCTL is shown in Figure 24-23 and described in Table 24-24.
Return to the Summary Table.
I2CC Debug Control. This register can be used by the software developer to control the behavior of the peripheral relative to the 'Core Halted' input.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | SOFT | FREE | |||||
| R/W-0h | R/W-0h | R/W-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-2 | RESERVED | R/W | 0h | |
| 1 | SOFT | R/W | 1h | Soft Halt Boundary Control. This function is only available, if [FREE] is set to 'STOP' 0h = Not supported 1h = The peripheral blocks the debug freeze until it has reached a boundary where it can resume without corruption |
| 0 | FREE | R/W | 1h | Free Run Control.
0h = The peripheral freezes functionality while the Core Halted input is asserted and resumes when it is deasserted. 1h = The peripheral ignores the state of the Core Halted input |
IIDX is shown in Figure 24-24 and described in Table 24-25.
Return to the Summary Table.
This register provides the highest priority enabled interrupt index.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | STAT | ||||||||||||||||||||||||||||||
| R-0h | R-0h | ||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | STAT | R | 0h | I2CC Interrupt Vector Value. This field provides the highest priority interrupt index. A read clears the corresponding interrupt flag in RIS and MIS. 15h-1Fh = Reserved.
00h = No Interrupt Pending. 01h = Receive Done Flag. 02h = Transmit Done Flag. 03h = Receive FIFO Event. 04h = Transmit FIFO Event. 5h = RX FIFO Full Event/Interrupt Pending. 6h = TX FIFO Empty Event/Interrupt Pending. 08h = Address/Data NACK. 09h = START Event. 0Ah = STOP Event. 0Bh = Arbitration Lost. Ch = PEC Receive Error Event. This event is only available on Advanced I2CC instances. Dh = Timeout Counter A Event. Eh = Timeout Counter B Event. 10h = DMA DONE on Channel RX. 11h = DMA DONE on Channel TX. |
IMASK is shown in Figure 24-25 and described in Table 24-26.
Return to the Summary Table.
Interrupt Mask. If a bit is set, then corresponding interrupt is un-masked. Un-masking the interrupt causes the raw interrupt to be visible in IIDX, as well as MIS.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | DMA_DONE_TX | ||||||
| R/W-0h | R/W-0h | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| DMA_DONE_RX | RESERVED | TIMEOUTB | TIMEOUTA | PEC_RX_ERR | ARBLOST | STOP | START |
| R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| NACK | RESERVED | TXEMPTY | RXFULL | TXTRG | RXTRG | TXDONE | RXDONE |
| R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | R/W | 0h | |
| 16 | DMA_DONE_TX | R/W | 0h | I2CC DMA Done on TX Event Channel Interrupt Mask.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA, indicating all the transactions have completed.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 15 | DMA_DONE_RX | R/W | 0h | I2CC DMA Done on RX Event Channel Interrupt Mask.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA indicating all the transactions have completed.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 14 | RESERVED | R/W | 0h | |
| 13 | TIMEOUTB | R/W | 0h | I2CC Timeout Counter B Interrupt Mask.
This interrupt is raised when the SCL line is continously high for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLB register.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 12 | TIMEOUTA | R/W | 0h | I2CC Timeout Counter A Interrupt Mask.
This interrupt is raised when the SCL line is continously low for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLA register.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 11 | PEC_RX_ERR | R/W | 0h | I2CC Receive PEC Error Interrupt Mask.
This interrupt is raised when the PEC calculated by the I2CC does not match received PEC. This interrupt is only available on Advanced I2CC instances.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 10 | ARBLOST | R/W | 0h | I2CC Arbitration Lost Interrupt Mask.
This flag indicates that the I2CC has lost an arbitration contest with another Controller in a multi-controller system.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 9 | STOP | R/W | 0h | I2CC STOP Detection Interrupt Mask.
This interrupt is raised when a STOP condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 8 | START | R/W | 0h | I2CC START Detection Interrupt Mask.
This interrupt is raised when a START condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 7 | NACK | R/W | 0h | I2CC Address/Data NACK Interrupt Mask.
This interrupt is raised when an address or data NACK is received by the I2CC.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 6 | RESERVED | R/W | 0h | |
| 5 | TXEMPTY | R/W | 0h | I2CC TX FIFO Empty Interrupt Mask.
This interrupt is raised when all data has been shifted out of the TX FIFO and the I2CC transmitter goes idle.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 4 | RXFULL | R/W | 0h | I2CC RX FIFO Full Interrupt Mask.
This interrupt is raised when the RX FIFO is full.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 3 | TXTRG | R/W | 0h | I2CC Transmit Trigger Interrupt Mask.
This interrupt is raised when the TX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 2 | RXTRG | R/W | 0h | I2CC Receive Trigger Interrupt Mask.
This interrupt is raised when the RX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 1 | TXDONE | R/W | 0h | I2CC Transmit Done Interrupt Mask.
This interrupt is raised when a burst length of CTR.BLEN bytes is transmitted.
For variants where the BLEN register is not available, it is raised after each byte is transmitted.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '0'.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 0 | RXDONE | R/W | 0h | I2CC Receive Done Interrupt Mask.
This interrupt is raised when a burst length of CTR.BLEN bytes is received.
For variants where the BLEN register is not available, it is raised after each byte is received.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '1'.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
RIS is shown in Figure 24-26 and described in Table 24-27.
Return to the Summary Table.
Raw interrupt status. Reflects all pending interrupts, regardless of masking. The RIS register allows the user to implement a poll scheme. A flag set in this register can be cleared by writing 1 to the ICLR register bit even if the corresponding IMASK bit is not enabled.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | DMA_DONE_TX | ||||||
| R-0h | R-0h | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| DMA_DONE_RX | RESERVED | TIMEOUTB | TIMEOUTA | PEC_RX_ERR | ARBLOST | STOP | START |
| R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| NACK | RESERVED | TXEMPTY | RXFULL | TXTRG | RXTRG | TXDONE | RXDONE |
| R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | R | 0h | |
| 16 | DMA_DONE_TX | R | 0h | I2CC DMA Done on TX Event Channel Interrupt Raw Status.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA, indicating all the transactions have completed.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 15 | DMA_DONE_RX | R | 0h | I2CC DMA Done on RX Event Channel Interrupt Raw Status.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA indicating all the transactions have completed.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 14 | RESERVED | R | 0h | |
| 13 | TIMEOUTB | R | 0h | I2CC Timeout Counter B Interrupt Raw Status.
This interrupt is raised when the SCL line is continously high for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLB register.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 12 | TIMEOUTA | R | 0h | I2CC Timeout Counter A Interrupt Raw Status.
This interrupt is raised when the SCL line is continously low for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLA register.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 11 | PEC_RX_ERR | R | 0h | I2CC Receive PEC Error Interrupt Raw Status.
This interrupt is raised when the PEC calculated by the I2CC does not match received PEC. This interrupt is only available on Advanced I2CC instances.
0h = Interrupt did not occur 1h = Interrupt Occured |
| 10 | ARBLOST | R | 0h | I2CC Arbitration Lost Interrupt Raw Status.
This flag indicates that the I2CC has lost an arbitration contest with another Controller in a multi-controller system.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 9 | STOP | R | 0h | I2CC STOP Detection Interrupt Raw Status.
This interrupt is raised when a STOP condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 8 | START | R | 0h | I2CC START Detection Interrupt Raw Status.
This interrupt is raised when a START condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 7 | NACK | R | 0h | I2CC Address/Data NACK Interrupt Raw Status.
This interrupt is raised when an address or data NACK is received by the I2CC.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 6 | RESERVED | R | 0h | |
| 5 | TXEMPTY | R | 0h | I2CC TX FIFO Empty Interrupt Raw Status.
This interrupt is raised when all data has been shifted out of the TX FIFO and the I2CC transmitter goes idle.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 4 | RXFULL | R | 0h | I2CC RX FIFO Full Interrupt Raw Status.
This interrupt is raised when the RX FIFO is full.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 3 | TXTRG | R | 0h | I2CC Transmit Trigger Interrupt Raw Status.
This interrupt is raised when the TX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Interrupt occurred |
| 2 | RXTRG | R | 0h | I2CC Receive Trigger Interrupt Raw Status.
This interrupt is raised when the RX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Interrupt occurred |
| 1 | TXDONE | R | 0h | I2CC Transmit Done Interrupt Raw Status.
This interrupt is raised when a burst length of CTR.BLEN bytes is transmitted.
For variants where the BLEN register is not available, it is raised after each byte is transmitted.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '0'.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 0 | RXDONE | R | 0h | I2CC Receive Done Interrupt Raw Status.
This interrupt is raised when a burst length of CTR.BLEN bytes is received.
For variants where the BLEN register is not available, it is raised after each byte is received.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '1'.
0h = Interrupt did not occur 1h = Interrupt occurred |
MIS is shown in Figure 24-27 and described in Table 24-28.
Return to the Summary Table.
Masked interrupt status. This is an AND of the IMASK and RIS registers.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | DMA_DONE_TX | ||||||
| R-0h | R-0h | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| DMA_DONE_RX | RESERVED | TIMEOUTB | TIMEOUTA | PEC_RX_ERR | ARBLOST | STOP | START |
| R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| NACK | RESERVED | TXEMPTY | RXFULL | TXTRG | RXTRG | TXDONE | RXDONE |
| R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | R | 0h | |
| 16 | DMA_DONE_TX | R | 0h | I2CC DMA Done on TX Event Channel Interrupt Masked Status.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA, indicating all the transactions have completed.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 15 | DMA_DONE_RX | R | 0h | I2CC DMA Done on RX Event Channel Interrupt Masked Status.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA indicating all the transactions have completed.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 14 | RESERVED | R | 0h | |
| 13 | TIMEOUTB | R | 0h | I2CC Timeout Counter B Interrupt Masked Status.
This interrupt is raised when the SCL line is continously high for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLB register.
0h = Clear interrupt mask 1h = Set interrupt mask |
| 12 | TIMEOUTA | R | 0h | I2CC Timeout Counter A Interrupt Masked Status.
This interrupt is raised when the SCL line is continously low for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLA register.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 11 | PEC_RX_ERR | R | 0h | I2CC Receive PEC Error Interrupt Masked Status.
This interrupt is raised when the PEC calculated by the I2CC does not match received PEC. This interrupt is only available on Advanced I2CC instances.
0h = Clear interrupt mask 1h = Set interrupt mask |
| 10 | ARBLOST | R | 0h | I2CC Arbitration Lost Interrupt Masked Status.
This flag indicates that the I2CC has lost an arbitration contest with another Controller in a multi-controller system.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 9 | STOP | R | 0h | I2CC STOP Detection Interrupt Masked Status.
This interrupt is raised when a STOP condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 8 | START | R | 0h | I2CC START Detection Interrupt Masked Status.
This interrupt is raised when a START condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 7 | NACK | R | 0h | I2CC Address/Data NACK Interrupt Masked Status.
This interrupt is raised when an address or data NACK is received by the I2CC.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 6 | RESERVED | R | 0h | |
| 5 | TXEMPTY | R | 0h | I2CC TX FIFO Empty Interrupt Masked Status.
This interrupt is raised when all data has been shifted out of the TX FIFO and the I2CC transmitter goes idle.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 4 | RXFULL | R | 0h | I2CC RX FIFO Full Interrupt Masked Status.
This interrupt is raised when the RX FIFO is full.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 3 | TXTRG | R | 0h | I2CC Transmit Trigger Interrupt Masked Status.
This interrupt is raised when the TX FIFO condition programmed by the IFLS register is met.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 2 | RXTRG | R | 0h | I2CC Receive Trigger Interrupt Masked Status.
This interrupt is raised when the RX FIFO condition programmed by the IFLS register is met.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 1 | TXDONE | R | 0h | I2CC Transmit Done Interrupt Masked Status.
This interrupt is raised when a burst length of CTR.BLEN bytes is transmitted.
For variants where the BLEN register is not available, it is raised after each byte is transmitted.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '0'.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 0 | RXDONE | R | 0h | I2CC Receive Done Interrupt Masked Status.
This interrupt is raised when a burst length of CTR.BLEN bytes is received.
For variants where the BLEN register is not available, it is raised after each byte is received.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '1'.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
ISET is shown in Figure 24-28 and described in Table 24-29.
Return to the Summary Table.
Interrupt set. Allows interrupts to be set by software (useful in diagnostics and safety checks). Writing a 1 to a bit in ISET will set the event and therefore the related RIS bit also gets set. If the interrupt is enabled through the mask, then the corresponding MIS bit is also set.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | DMA_DONE_TX | ||||||
| W-0h | W-0h | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| DMA_DONE_RX | RESERVED | TIMEOUTB | TIMEOUTA | PEC_RX_ERR | ARBLOST | STOP | START |
| W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| NACK | RESERVED | TXEMPTY | RXFULL | TXTRG | RXTRG | TXDONE | RXDONE |
| W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | W | 0h | |
| 16 | DMA_DONE_TX | W | 0h | Set I2CC DMA Done on TX Event Channel Interrupt.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA, indicating all the transactions have completed.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 15 | DMA_DONE_RX | W | 0h | Set I2CC DMA Done on RX Event Channel Interrupt.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA indicating all the transactions have completed.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 14 | RESERVED | W | 0h | |
| 13 | TIMEOUTB | W | 0h | Set I2CC Timeout Counter B Interrupt.
This interrupt is raised when the SCL line is continously high for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLB register.
0h = Writing 0 has no effect 1h = Set interrupt |
| 12 | TIMEOUTA | W | 0h | Set I2CC Timeout Counter A Interrupt.
This interrupt is raised when the SCL line is continously low for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLA register.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 11 | PEC_RX_ERR | W | 0h | Set I2CC Receive PEC Error Interrupt.
This interrupt is raised when the PEC calculated by the I2CC does not match received PEC. This interrupt is only available on Advanced I2CC instances.
0h = Writing 0 has no effect 1h = Set interrupt |
| 10 | ARBLOST | W | 0h | Set I2CC Arbitration Lost Interrupt.
This flag indicates that the I2CC has lost an arbitration contest with another Controller in a multi-controller system.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 9 | STOP | W | 0h | Set I2CC STOP Detection Interrupt.
This interrupt is raised when a STOP condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 8 | START | W | 0h | Set I2CC START Detection Interrupt.
This interrupt is raised when a START condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 7 | NACK | W | 0h | Set I2CC Address/Data NACK Interrupt.
This interrupt is raised when an address or data NACK is received by the I2CC.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 6 | RESERVED | W | 0h | |
| 5 | TXEMPTY | W | 0h | Set I2CC TX FIFO Empty Interrupt.
This interrupt is raised when all data has been shifted out of the TX FIFO and the I2CC transmitter goes idle.
0h = Writing 0 has no effect 1h = Set Interrupt |
| 4 | RXFULL | W | 0h | Set I2CC RX FIFO Full Interrupt.
This interrupt is raised when the RX FIFO is full.
0h = Writing 0 has no effect 1h = Set Interrupt |
| 3 | TXTRG | W | 0h | Set I2CC Transmit Trigger Interrupt.
This interrupt is raised when the TX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 2 | RXTRG | W | 0h | Set I2CC Receive Trigger Interrupt.
This interrupt is raised when the RX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 1 | TXDONE | W | 0h | Set I2CC Transmit Done Interrupt.
This interrupt is raised when a burst length of CTR.BLEN bytes is transmitted.
For variants where the BLEN register is not available, it is raised after each byte is transmitted.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '0'.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 0 | RXDONE | W | 0h | Set I2CC Receive Done Interrupt.
This interrupt is raised when a burst length of CTR.BLEN bytes is received.
For variants where the BLEN register is not available, it is raised after each byte is received.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '1'.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
ICLR is shown in Figure 24-29 and described in Table 24-30.
Return to the Summary Table.
Interrupt clear. Write a 1 to clear corresponding Interrupt.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | DMA_DONE_TX | ||||||
| W-0h | W-0h | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| DMA_DONE_RX | RESERVED | TIMEOUTB | TIMEOUTA | PEC_RX_ERR | ARBLOST | STOP | START |
| W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| NACK | RESERVED | TXEMPTY | RXFULL | TXTRG | RXTRG | TXDONE | RXDONE |
| W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h | W-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | W | 0h | |
| 16 | DMA_DONE_TX | W | 0h | Clear I2CC DMA Done on TX Event Channel Interrupt.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA, indicating all the transactions have completed.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 15 | DMA_DONE_RX | W | 0h | Clear I2CC DMA Done on RX Event Channel Interrupt.
This interrupt is raised when the DONE signal is sent to the I2CC from a DMA indicating all the transactions have completed.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 14 | RESERVED | W | 0h | |
| 13 | TIMEOUTB | W | 0h | Clear I2CC Timeout Counter B Interrupt.
This interrupt is raised when the SCL line is continously high for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLB register.
0h = Writing 0 has no effect 1h = Clear Interrupt |
| 12 | TIMEOUTA | W | 0h | Clear I2CC Timeout Counter A Interrupt.
This interrupt is raised when the SCL line is continously low for longer than the clock timeout period programmed by the TIMEOUT_CTL.TCNTLA register.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 11 | PEC_RX_ERR | W | 0h | Clear I2CC Receive PEC Error Interrupt.
This interrupt is raised when the PEC calculated by the I2CC does not match received PEC. This interrupt is only available on Advanced I2CC instances.
0h = Writing 0 has no effect 1h = Clear Interrupt |
| 10 | ARBLOST | W | 0h | Clear I2CC Arbitration Lost Interrupt.
This flag indicates that the I2CC has lost an arbitration contest with another Controller in a multi-controller system.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 9 | STOP | W | 0h | Clear I2CC STOP Detection Interrupt.
This interrupt is raised when a STOP condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 8 | START | W | 0h | Clear I2CC START Detection Interrupt.
This interrupt is raised when a START condition is detected on the bus, either generated by the current I2CC or another I2C Controller when in multi-master mode.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 7 | NACK | W | 0h | Clear I2CC Address/Data NACK Interrupt.
This interrupt is raised when an address or data NACK is received by the I2CC.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 6 | RESERVED | W | 0h | |
| 5 | TXEMPTY | W | 0h | Clear I2CC TX FIFO Empty Interrupt.
This interrupt is raised when all data has been shifted out of the TX FIFO and the I2CC transmitter goes idle.
0h = Writing 0 has no effect 1h = Clear Interrupt |
| 4 | RXFULL | W | 0h | Clear I2CC RX FIFO Full Interrupt.
This interrupt is raised when the RX FIFO is full.
0h = Writing 0 has no effect 1h = Clear Interrupt |
| 3 | TXTRG | W | 0h | Clear I2CC Transmit Trigger Interrupt Mask.
This interrupt is raised when the TX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 2 | RXTRG | W | 0h | Clear I2CC Receive Trigger Interrupt Mask.
This interrupt is raised when the RX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 1 | TXDONE | W | 0h | Clear I2CC Transmit Done Interrupt.
This interrupt is raised when a burst length of CTR.BLEN bytes is transmitted.
For variants where the BLEN register is not available, it is raised after each byte is transmitted.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '0'.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 0 | RXDONE | W | 0h | Clear I2CC Receive Done Interrupt.
This interrupt is raised when a burst length of CTR.BLEN bytes is received.
For variants where the BLEN register is not available, it is raised after each byte is received.
In the case of a quick command, the interrupt is raised when a quick command with R/Wn bit set to '1'.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
IMASK is shown in Figure 24-30 and described in Table 24-31.
Return to the Summary Table.
Interrupt Mask. If a bit is set, then corresponding interrupt is un-masked. Un-masking the interrupt causes the raw interrupt to be visible in IIDX, as well as MIS.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | RXTRG | RESERVED | |||||
| R/W-0h | R/W-0h | R/W-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R/W | 0h | |
| 2 | RXTRG | R/W | 0h | I2CC Receive DMA Trigger Mask.
The DMA is triggered when the RX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 1-0 | RESERVED | R/W | 0h |
RIS is shown in Figure 24-31 and described in Table 24-32.
Return to the Summary Table.
Raw interrupt status. Reflects all pending interrupts, regardless of masking. The RIS register allows the user to implement a poll scheme. A flag set in this register can be cleared by writing 1 to the ICLR register bit even if the corresponding IMASK bit is not enabled.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | RXTRG | RESERVED | |||||
| R-0h | R-0h | R-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R | 0h | |
| 2 | RXTRG | R | 0h | I2CC Receive DMA Trigger Raw Status.
The DMA is triggered when the RX FIFO condition programmed by the IFLS register is met.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 1-0 | RESERVED | R | 0h |
MIS is shown in Figure 24-32 and described in Table 24-33.
Return to the Summary Table.
Masked interrupt status. This is an AND of the IMASK and RIS registers. A flag set in this register can be cleared by writing 1 to the ICLR register bit.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | RXTRG | RESERVED | |||||
| R-0h | R-0h | R-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R | 0h | |
| 2 | RXTRG | R | 0h | I2CC Receive DMA Trigger Masked Status.
The DMA is triggered when the RX FIFO condition programmed by the IFLS register is met.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 1-0 | RESERVED | R | 0h |
ISET is shown in Figure 24-33 and described in Table 24-34.
Return to the Summary Table.
Interrupt set. Allows interrupts to be set by software (useful in diagnostics and safety checks). Writing a 1 to a bit in ISET will set the event and therefore the related RIS bit also gets set. If the interrupt is enabled through the mask, then the corresponding MIS bit is also set.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | RXTRG | RESERVED | |||||
| W-0h | W-0h | W-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | W | 0h | |
| 2 | RXTRG | W | 0h | Set I2CC Receive DMA Trigger.
The DMA is triggered when the RX FIFO condition programmed by the IFLS register is met.
0h = Writing 0 has no effect 1h = Set Interrupt Mask |
| 1-0 | RESERVED | W | 0h |
IMASK is shown in Figure 24-34 and described in Table 24-35.
Return to the Summary Table.
Interrupt Mask. If a bit is set, then corresponding interrupt is un-masked. Un-masking the interrupt causes the raw interrupt to be visible in IIDX, as well as MIS.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | TXTRG | RESERVED | |||||
| R/W-0h | R/W-0h | R/W-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R/W | 0h | |
| 3 | TXTRG | R/W | 0h | I2CC Transmit DMA Trigger Mask.
The DMA is triggered when the TX FIFO condition programmed by the IFLS register is met.
0h = Clear Interrupt Mask 1h = Set Interrupt Mask |
| 2-0 | RESERVED | R/W | 0h |
RIS is shown in Figure 24-35 and described in Table 24-36.
Return to the Summary Table.
Raw interrupt status. Reflects all pending interrupts, regardless of masking. The RIS register allows the user to implement a poll scheme. A flag set in this register can be cleared by writing 1 to the ICLR register bit even if the corresponding IMASK bit is not enabled.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | TXTRG | RESERVED | |||||
| R-0h | R-0h | R-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TXTRG | R | 0h | I2CC Transmit DMA Trigger Raw Status.
The DMA is triggered when the TX FIFO condition programmed by the IFLS register is met.
0h = Interrupt did not occur 1h = Interrupt occurred |
| 2-0 | RESERVED | R | 0h |
MIS is shown in Figure 24-36 and described in Table 24-37.
Return to the Summary Table.
Masked interrupt status. This is an AND of the IMASK and RIS registers.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | TXTRG | RESERVED | |||||
| R-0h | R-0h | R-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | |
| 3 | TXTRG | R | 0h | I2CC Transmit DMA Trigger Masked Status.
The DMA is triggered when the TX FIFO condition programmed by the IFLS register is met.
0h = Interrupt did not occur or mask was not enabled 1h = Interrupt occurred |
| 2-0 | RESERVED | R | 0h |
ISET is shown in Figure 24-37 and described in Table 24-38.
Return to the Summary Table.
Interrupt set. Allows interrupts to be set by software (useful in diagnostics and safety checks). Writing a 1 to a bit in ISET will set the event and therefore the related RIS bit also gets set. If the interrupt is enabled through the mask, then the corresponding MIS bit is also set.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | TXTRG | RESERVED | |||||
| W-0h | W-0h | W-0h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | W | 0h | |
| 3 | TXTRG | W | 0h | Set I2CC Transmit DMA Trigger.
The DMA is triggered when the TX FIFO condition programmed by the IFLS register is met.
0h = Writing 0 has no effect 1h = Set Interrupt |
| 2-0 | RESERVED | W | 0h |
INTCTL is shown in Figure 24-38 and described in Table 24-39.
Return to the Summary Table.
Interrupt Control Register.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | INTEVAL | ||||||
| W-0h | W-0h | ||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | W | 0h | |
| 0 | INTEVAL | W | 0h | Writing a 1 to this field re-evaluates the interrupt sources.
0h = Writing 0 has no effect 1h = Interrupt Eval |
CTR is shown in Figure 24-39 and described in Table 24-40.
Return to the Summary Table.
I2CC Control Register. Configures the I2CC operation.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | BLEN | ||||||
| R/W-0h | R/W-0h | ||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| BLEN | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | SUSPEND | RD_ON_TXEMPTY | ACKOEN | ACK | STOP | START | FRM_START |
| R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-28 | RESERVED | R/W | 0h | |
| 27-16 | BLEN | R/W | 0h | I2CC Transaction Length.
This field contains the programmed length of bytes of the next transaction. For variants that don't have the BLEN register, the BLEN is hardcoded to a value of 1.
0h = Smallest value FFFh = Highest possible value |
| 15-7 | RESERVED | R/W | 0h | |
| 6 | SUSPEND | R/W | 0h | Suspend External Communication.
When this bit is set, I2CC communication on the external bus is suspended after the I2CC FSM goes idle (SR.BUSY reads '0').
0h = Normal communication 1h = External communication suspended |
| 5 | RD_ON_TXEMPTY | R/W | 0h | Read on TX EMPTY Enable/Disable.
This feature initiates an I2CC write followed by a I2CC read without needing application intervention.
0h = No special behavior 1h = The I2CC will transmit all the bytes from TX FIFO, issue a RESTART and receive data as per programmed burst length (BLEN). This bit is ignored if DIR bit is not set to READ. |
| 4 | ACKOEN | R/W | 0h | ACK Override Enable
When ACKOEN is enabled:
1. I2CC receives data according to the configured burst length (BLEN).
2. Upon receiving the complete data burst, I2CC generates a RXDONE interrupt.
3. The I2CC then holds SCL line low (clock stretching) during the acknowledge phase.
4. This pause gives the application time to update the ACKOVAL register.
At this point, application has two options:
Option 1: Terminate transaction
1. Set ACKOVAL to send a NACK.
2. The I2CC will automatically generate a STOP condition after the NACK.
Option 2: Continue transaction
1. Clear ACKOVAL to send an ACK.
2. Update any other settings as needed.
3. The transaction will proceed based on the new configuration.
This mechanism allows the application to control the transaction flow after each data burst is received.
Note: In some variants, when BLEN register is not available, the design implements a hardcoded BLEN value of '1'. Consult your device datasheet.
0h = No special behavior 1h = Acknowledge Override Feature Enabled |
| 3 | ACK | R/W | 0h | Final Data Acknowledge Value.
Determines whether a ACK or NACK is automatically sent by the I2CC after the last byte, of length 'N', are received from the target. This setting is used when CTR.ACKOEN=0.
0h = The last received data byte of a transaction is not acknowledged automatically. 1h = The last received data byte of a transaction is acknowledged automatically. |
| 2 | STOP | R/W | 0h | Enable STOP Condition Generation.
I2CC is enabled to send the STOP condition on the bus at the end of the current transaction, per the I2C protocol.
0h = The controller does not generate the STOP condition. 1h = The controller generates the STOP condition. |
| 1 | START | R/W | 0h | Enable START Condition Generation.
I2CC is enabled to send the START condition on the bus per the I2C protocol, when CTR.FRM_START is also set.
0h = The controller does not generate the START condition. 1h = The controller generates the START or repeated START condition. |
| 0 | FRM_START | R/W | 0h | Frame Start.
Start the transaction on the I2C bus according to the programmed settings.
0h = Write of '0' has no effect. Reads back '0' when there is no ongoing transaction 1h = When written to '1', a new transaction is started. Has no effect if there is an ongoing transaction. Reads back as '1' if the transaction is ongoing |
CR is shown in Figure 24-40 and described in Table 24-41.
Return to the Summary Table.
I2CC Configuration Register. Configures and enables the I2CC.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | CLKSTRETCH | MCTL | ENABLE | ||||
| R/W-0h | R/W-0h | R/W-0h | R/W-0h | ||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-3 | RESERVED | R/W | 0h | |
| 2 | CLKSTRETCH | R/W | 0h | Clock Stretching Enable.
This bit enables/disables clock stretching detection of the I2CC.
0h = Disables the clock stretching detection. This can be disabled if no Target on the bus does support clock stretching, so that the maximum speed on the bus can be reached. 1h = Enables the clock stretching detection. Enabling the clock stretching ensures compliance to the I2C standard but could limit the speed due the clock stretching. |
| 1 | MCTL | R/W | 0h | Multi-Controller Mode Enable/Disable.
In Multi-Controller mode, the SCL high time begins counting once the SCL line has been detected high. If this bit is not set, the SCL high time begins counting as soon as the SCL line has been set high by the I2CC.
0h = Disable MultiController mode. 1h = Enable MultiController mode. |
| 0 | ENABLE | R/W | 0h | Enable I2CC module.
After this bit has been set, it should not be set again unless it has been cleared by writing a 0 or by a reset, otherwise transfer failures may occur.
0h = Disables operation. 1h = Enables operation. |
SR is shown in Figure 24-41 and described in Table 24-42.
Return to the Summary Table.
I2CC Status Register. This status register indicates the current state of the I2CC.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | BCNT | ||||||
| R-0h | R-0h | ||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| BCNT | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | TXFF | TXFE | RXFF | RXFE | TXCLR | RXCLR | RESERVED |
| R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | BUSBSY | IDLE | ARBLST | DATACK | ADRACK | ERR | BUSY |
| R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h | R-0h |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-28 | RESERVED | R | 0h | |
| 27-16 | BCNT | R | 0h | Burst Transaction Count Status.
This field contains the current count-down value of the transaction. This field is only available on Advanced I2CC instances.
0h = Smallest value FFFh = Highest possible value |
| 15 | RESERVED | R | 0h | |
| 14 | TXFF | R | 0h | TX FIFO Full Status.
0h = TX FIFO is not full 1h = TX FIFO is full |
| 13 | TXFE | R | 1h | TX FIFO Empty Status.
0h = TX FIFO is not empty 1h = TX FIFO is empty |
| 12 | RXFF | R | 0h | RX FIFO Full Status.
0h = RX FIFO is not full 1h = RX FIFO is full |
| 11 | RXFE | R | 1h | RX FIFO Empty Status.
0h = RX FIFO is not empty 1h = RX FIFO is empty |
| 10 | TXCLR | R | 0h | TX FIFO Clear Status.
0h = TX FIFO is not cleared 1h = TX FIFO clear is complete |
| 9 | RXCLR | R | 0h | RX FIFO Clear Status.
0h = RX FIFO is not cleared 1h = RX FIFO clear is complete |
| 8-7 | RESERVED | R | 0h | |
| 6 | BUSBSY | R | 0h | I2C Bus Busy Status.
Indicates when the external line is busy
1. It is set when there is an ongoing transaction on the bus (i.e. if there is a START condition observed) or if SCL toggles.
2. It is cleared upon a STOP condition or when HIGH TIMEOUT occurs & SCL/SDA are both at their IDLE state.
This bit reads back '0' when ACTIVE is cleared.
The I2CC will wait until this bit is cleared before starting an I2C transaction. When enabling the controller initially, the application should wait for one I2C clock period, poll BUSBSY and start a transaction.
0h = The I2C bus is idle. 1h = SET |
| 5 | IDLE | R | 1h | I2CC FSM Idle Status.
This bit is set when the internal I2CC state machine, rather than when the external bus, is not busy with an ongoing transaction i.e. there is no transmit/receive of data bytes, START, RESTART, Address or STOP signal generation occuring.
0h = The I2C controller is not idle. 1h = The I2C controller is idle. |
| 4 | ARBLST | R | 0h | Arbitration Lost Status.
This status bit indicates whether or not the I2CC won arbitration on the bus.
0h = The I2C controller won arbitration. 1h = The I2C controller lost arbitration. |
| 3 | DATACK | R | 0h | Data Acknowledge Status.
This status bit indicates the acknowledgement status of the previously transmitted data byte.
0h = The transmitted data was acknowledged 1h = The transmitted data was not acknowledged. |
| 2 | ADRACK | R | 0h | Acknowledge Address
0h = The transmitted address was acknowledged 1h = The transmitted address was not acknowledged. |
| 1 | ERR | R | 0h | NACK Error Status.
This status bit indicates the acknowledgement status of the previously transmitted target address or data byte.
0h = No error was detected on the last operation. 1h = An error occurred on the last operation. |
| 0 | BUSY | R | 0h | I2CC FSM Busy Status.
This bit is set when the internal I2CC state machine, rather than when the external bus, is busy with an ongoing transaction i.e. during transmit/receive of data bytes configured as per BLEN including START, RESTART, Address and STOP signal generation.
In variants where the BLEN register is not available, the design implements a hardcoded BLEN value of '1'.
0h = The controller is idle. 1h = The controller is busy. |
IFLS is shown in Figure 24-42 and described in Table 24-43.
Return to the Summary Table.
I2CC Interrupt FIFO Level Select Register. The IFLS register is the interrupt FIFO level select register. Use this register to define the levels at which the TX, RX, and Receive timeout interrupt flags are triggered. The interrupts are generated based on a transition through a level rather than being based on the level itself. That is, the interrupts are generated when the fill level progresses through the trigger level. For example, if the receive trigger level is set to the half-way mark, the interrupt is triggered when the receive FIFO is filled with two or more characters. Out of reset, the TXIFLSEL and RXIFLSEL bits are configured so that the FIFOs trigger an interrupt at the half-way mark.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RXCLR | RXIFLSEL | TXCLR | TXIFLSEL | ||||
| R/W-0h | R/W-2h | R/W-0h | R/W-2h | ||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R/W | 0h | |
| 7 | RXCLR | R/W | 0h | RX FIFO Clear. Setting this bit will clear the RX FIFO contents.
0h = Disable FIFO clear 1h = Enable FIFO Clear |
| 6-4 | RXIFLSEL | R/W | 2h | RX FIFO Level Select for generating events (interrupt/DMA).
Note: for undefined settings the default configuration is used.
1h = RX FIFO >= 1/4 full 2h = RX FIFO >= 1/2 full (default) 3h = RX FIFO >= 3/4 full 4h = Opposite of empty 5h = RX FIFO is full 6h = RX_FIFO >= (MAX_FIFO_LEN -1) 7h = RX_FIFO <= 1 |
| 3 | TXCLR | R/W | 0h | TX FIFO Clear. Setting this bit will clear the TX FIFO contents.
0h = Disable FIFO clear 1h = Enable FIFO Clear |
| 2-0 | TXIFLSEL | R/W | 2h | TX FIFO Level Select for generating events (interrupt/DMA).
Note: for undefined settings the default configuration is used.
1h = TX FIFO <= 3/4 empty 2h = TX FIFO <= 1/2 empty (default) 3h = TX FIFO <= 1/4 empty 4h = Opposite of full 5h = TX FIFO is empty 6h = TX FIFO <= 1 7h = TX_FIFO >= (MAX_FIFO_LEN -1) |
TPR is shown in Figure 24-43 and described in Table 24-44.
Return to the Summary Table.
I2CC Timer Period Register. This register programs the clock period of the SCL line. Transmission speeds of Standard mode (100kbps), Fast mode (400 kbps), or Fast mode plus (1Mbps) are supported.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | TPR | ||||||||||||||||||||||||||||||
| R/W-0h | R/W-1h | ||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-7 | RESERVED | R/W | 0h | |
| 6-0 | TPR | R/W | 1h | Timer Period.
This field is used in the equation to configure SCL_PERIOD
SCL_PERIOD = (1 + TPR ) x (SCL_LP + SCL_HP ) x INT_CLK_PRD
Where:
- SCL_PRD is the SCL line period (I2C clock).
- TPR is the Timer Period register value (range of 1 to 127).
- SCL_LP is the SCL Low period (fixed at 6).
- SCL_HP is the SCL High period (fixed at 4).
- CLK_PRD is the functional clock period in ns.
0h = Smallest value 7Fh = Highest possible value |
GFCTL is shown in Figure 24-44 and described in Table 24-45.
Return to the Summary Table.
I2CC Glitch Filter Control Register. This register configures the glitch filter on the SCL and SDA lines.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | AGFEN | ||||||
| R/W-0h | R/W-0h | ||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DGFSEL | ||||||
| R/W-0h | R/W-0h | ||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-9 | RESERVED | R/W | 0h | |
| 8 | AGFEN | R/W | 0h | Analog Glitch Suppression Enable. 0h = Analog Glitch Filter disable 1h = Analog Glitch Filter enable |
| 7-3 | RESERVED | R/W | 0h | |
| 2-0 | DGFSEL | R/W | 0h | Digital Glitch Suppression Pulse Width. The digital glitch filter is only available on Basic I2CC instances.
This field controls the pulse width select for glitch suppression on the SCL and SDA lines. The following glitch suppression values are in terms of I2Cclk cycles.
0h = Bypass 1h = 1 clock 2h = 2 clocks 3h = 3 clocks 4h = 4 clocks 5h = 8 clocks 6h = 16 clocks 7h = 31 clocks |
BMON is shown in Figure 24-45 and described in Table 24-46.
Return to the Summary Table.
I2CC Bus Monitor Register. This register is used to read the current SCL and SDA signal logic levels.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||||||||||
| R-0h | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | SDA | SCL | |||||||||||||
| R-0h | R-1h | R-1h | |||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-2 | RESERVED | R | 0h | |
| 1 | SDA | R | 1h | I2C SDA Status.
0h = The I2CSDA signal is low. 1h = The I2CSDA signal is high. Note: During and right after reset, the SDA pin is in GPIO input mode without the internal pull enabled. For proper I2C operation, the user should have the external pull-up resistor in place before starting any I2C operations. |
| 0 | SCL | R | 1h | I2C SCL Status.
0h = The I2CSCL signal is low. 1h = The I2CSCL signal is high. Note: During and right after reset, the SCL pin is in GPIO input mode without the internal pull enabled. For proper I2C operation, the user should have the external pull-up resistor in place before starting any I2C operations. |
TXDATA is shown in Figure 24-46 and described in Table 24-47.
Return to the Summary Table.
I2CC Transmit Data Register. This register is the transmit data register (the interface to the TX FIFO). For transmitted data, if the FIFO is enabled, data written to this location is pushed onto the TX FIFO. If the FIFO is disabled, data is stored in the transmitter holding register (the bottom word of the TX FIFO).
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DATA | ||||||||||||||||||||||||||||||
| W-0h | W-0h | ||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | W | 0h | |
| 7-0 | DATA | W | 0h | Transmit Data.
This byte contains the data to be transferred during the next transaction.
0h = Smallest value FFh = Highest possible value |
RXDATA is shown in Figure 24-47 and described in Table 24-48.
Return to the Summary Table.
I2CC Receive Data Register. This field contains the current byte being read in the RX FIFO If the FIFO is not present, the data byte and status are stored in the receiving holding register (the bottom word of the receive FIFO). The received data can be retrieved by reading this register.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DATA | ||||||||||||||||||||||||||||||
| R-0h | R-0h | ||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | DATA | R | 0h | Received Data.
This field contains the last received data.
0h = Smallest value FFh = Highest possible value |
PECSR is shown in Figure 24-48 and described in Table 24-49.
Return to the Summary Table.
I2CC PEC Status Register. This status register can be used to read the current status of the packet error checking mechanism.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | PECSTS_ERROR | PECSTS_CHECK | |||||
| R-0h | R-0h | R-0h | |||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | PECBYTECNT | ||||||
| R-0h | R-0h | ||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PECBYTECNT | |||||||
| R-0h | |||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-18 | RESERVED | R | 0h | |
| 17 | PECSTS_ERROR | R | 0h | PEC Status Error.
This status bit indicates if a PEC check error occurred in the transaction that occurred before the last STOP. This bit is cleared automatically when the next STOP condition is observed on the bus.
0h = Indicates PEC check error did not occur in the transaction that occurred before the last STOP 1h = Indicates if a PEC check error occurred in the transaction that occurred before the last STOP |
| 16 | PECSTS_CHECK | R | 0h | PEC Status Check.
This status bit indicates if the PEC was checked in the transaction that occurred before the last STOP. This bit is cleared automatically when the next STOP condition is observed on the bus.
0h = Indicates PEC was not checked in the transaction that occurred before the last STOP 1h = Indicates if the PEC was checked in the transaction that occurred before the last STOP |
| 15-9 | RESERVED | R | 0h | |
| 8-0 | PECBYTECNT | R | 0h | PEC Byte Count.
This is the current PEC Byte Count of the Controller State Machine.
0h = Minimum Value 1FFh = Maximum Value |
TA is shown in Figure 24-49 and described in Table 24-50.
Return to the Summary Table.
I2CC Target Address Register. This register configures the target address, addressing mode, and direction (controller-transmit or controller-receive) of the next transaction.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| MODE | RESERVED | ADDR | |||||
| R/W-0h | R/W-0h | R/W-0h | |||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ADDR | DIR | ||||||
| R/W-0h | R/W-0h | ||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RESERVED | R/W | 0h | |
| 15 | MODE | R/W | 0h | Address Mode Select.
This bit selects the addressing mode to be used.
When 0, 7-bit addressing is used.
When 1, 10-bit addressing is used.
0h = 7-bit addressing mode 1h = 10-bit addressing mode |
| 14-11 | RESERVED | R/W | 0h | |
| 10-1 | ADDR | R/W | 0h | I2C Target Address.
This field specifies bits A9 through A0 of the Target address.
In 7-bit addressing mode, as selected by TA.MODE bit, the top 3 bits are don't care.
0h = Smallest value 3FFh = Highest possible value |
| 0 | DIR | R/W | 0h | Receive/Transmit Direction.
The DIR bit specifies if the next operation is a Receive (High) or Transmit (Low).
0h = Transmit
1h = Receive
0h = in transmit mode. 1h = is in receive mode. |
TIMEOUT_CNT is shown in Figure 24-50 and described in Table 24-51.
Return to the Summary Table.
I2CC Timeout Count Register. This register contains the upper 8 bits of a 12-bit current counter values for Timeout Counter A and Timeout Counter B. The lower four bits of the counter are not user visible and are always 0h.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | TCNTB | RESERVED | TCNTA | ||||||||||||||||||||||||||||
| R-0h | R-2h | R-0h | R-2h | ||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | RESERVED | R | 0h | |
| 23-16 | TCNTB | R | 2h | Timeout Count B Current Count.
This field contains the upper 8 bits of a 12-bit current counter for Timeout Counter B. This field is only available on Advanced I2CC instances.
0h = Smallest Value FFh = Highest possible value |
| 15-8 | RESERVED | R | 0h | |
| 7-0 | TCNTA | R | 2h | Timeout Count A Current Count.
This field contains the upper 8 bits of a 12-bit current counter for Timeout Counter A.
0h = Smallest Value FFh = Highest possible value |
TIMEOUT_CTL is shown in Figure 24-51 and described in Table 24-52.
Return to the Summary Table.
I2CC Timeout Control Register. This register configures Timeout Counter A and Timeout Counter B.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| TCNTBEN | RESERVED | ||||||
| R/W-0h | R/W-0h | ||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TCNTLB | |||||||
| R/W-2h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| TCNTAEN | RESERVED | ||||||
| R/W-0h | R/W-0h | ||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TCNTLA | |||||||
| R/W-2h | |||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31 | TCNTBEN | R/W | 0h | Timeout Counter B Enable. This field is only available on Advanced I2CC instances.
0h = Disable Timeout Counter B 1h = Enable Timeout Counter B |
| 30-24 | RESERVED | R/W | 0h | |
| 23-16 | TCNTLB | R/W | 2h | Timeout Count B Load.
Counter B is used for SCL High Detection. This field contains the upper 8 bits of a 12-bit pre-load value for the Timeout Counter B. NOTE: The value of CNTLB must be greater than 1h.
Each count is equal to 1* clock period. For example, with 10MHz functional clock one timeout period will be equal to1*100ns.
0h = Smallest possible value FFh = Highest possible value |
| 15 | TCNTAEN | R/W | 0h | Timeout Counter A Enable.
0h = Disable Timeout Counter A 1h = Enable Timeout Counter A |
| 14-8 | RESERVED | R/W | 0h | |
| 7-0 | TCNTLA | R/W | 2h | Timeout Counter A Load Value.
Counter A is used for SCL low detection. This field contains the upper 8 bits of a 12-bit pre-load value for the Timeout Counter A. NOTE: The value of CNTLA must be greater than 1h.
Each count is equal to 520 times the timeout period of functional clock. For example, with 8MHz functional clock and a 100KHz operating I2C clock, one timeout period will be equal to (1 / 8MHz) * 520 or 65 us.
0h = Smallest Value FFh = Highest possible value |
PECCTL is shown in Figure 24-52 and described in Table 24-53.
Return to the Summary Table.
I2CC PEC Control Register. This register configures the packet error checking (PEC) feature. This register is only available on Advanced I2CC instances.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R/W-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | PECEN | RESERVED | PECCNT | ||||
| R/W-0h | R/W-0h | R/W-0h | R/W-0h | ||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PECCNT | |||||||
| R/W-0h | |||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-13 | RESERVED | R/W | 0h | |
| 12 | PECEN | R/W | 0h | PEC Enable.
This bit enables the SMB Packet Error Checking (PEC). When enabled, the PEC is calculated on all bits except the START, STOP, and ACK/NACK. The PEC LSFR and the Byte Counter is set to 0 when the State Machine is in the IDLE state, which occur following a STOP or when a timeout occurs. The Counter is also set to 0 after the PEC byte is sent or received. Note that the NACK is automatically send following a PEC byte that results in a PEC error.
The PEC Polynomial is x^8 + x^2 + x^1 + 1.
0h = PEC is disabled 1h = PEC is enabled |
| 11-9 | RESERVED | R/W | 0h | |
| 8-0 | PECCNT | R/W | 0h | PEC Count.
When this field is non zero, the number of I2C bytes are counted (Note that although the PEC is calculated on the I2C address it is not counted at a byte). When the byte count = PECCNT and the I2CC is transmitting, the contents of the LSFR is loaded into the shift register instead of the byte received from the TX FIFO. When the state machine is receiving, after the last bit of this byte is received the LSFR is checked and if it is non-zero, a PEC RX Error interrupt is generated. The I2C packet must be padded to include the PEC byte for both transmit and receive. In transmit mode, the FIFO must be loaded with a dummy PEC byte. In receive mode, the PEC byte will be passed to the RX FIFO.
In the a typical controller use case, the application would set PECEN=1 and PECCNT=SMB packet length (not including the Target Address byte, but including the PEC byte). The I2CC application would then configure the DMA to allow the packet to complete unassisted and write CTR to initiate the transaction.
Note that when the byte count = PECCNT, the byte count is reset to 0 and multiple PEC calculations can automatically occur within a single I2C transaction.
Note that any write to the PECCTL register will clear the current PEC byte count in the I2CC state machine.
0h = Minimum Value 1FFh = Maximum Value |