ic_con |
0x0 |
32 |
RW |
0x7D |
Name: I2C Control Register
Size: 10 bits
Address Offset: 0x00
Read/Write Access:
If configuration parameter I2C_DYNAMIC_TAR_UPDATE = 0,
all bits are Read/Write.
If I2C_DYNAMIC_TAR_UPDATE = 1, bit 4 is Read-only.
This register can be written only when the DW_apb_i2c
is disabled, which corresponds to the IC_ENABLE[0] register
being set to 0. Writes at other times have no effect.
|
ic_tar |
0x4 |
32 |
RW |
0x1055 |
Name: I2C Target Address Register
Size: 12 bits or 13 bits; 13 bits only when I2C_DYNAMIC_TAR_UPDATE = 1
Address Offset: 0x04
Read/Write Access: Read/Write
If the configuration parameter I2C_DYNAMIC_TAR_UPDATE is set to 'No' (0),
this register is 12 bits wide, and bits 31:12 are reserved. This register
can be written to only when IC_ENABLE[0] is set to 0.
However, if I2C_DYNAMIC_TAR_UPDATE = 1, then the register becomes 13 bits wide.
All bits can be dynamically updated as long as any set of the following
conditions are true:
- DW_apb_i2c is NOT enabled (IC_ENABLE[0] is set to 0);
or
- DW_apb_i2c is enabled (IC_ENABLE[0]=1);
AND
DW_apb_i2c is NOT engaged in any Master (tx, rx) operation (IC_STATUS[5]=0);
AND
DW_apb_i2c is enabled to operate in Master mode (IC_CON[0]=1);
AND
there are NO entries in the TX FIFO (IC_STATUS[2]=1)
|
ic_sar |
0x8 |
32 |
RW |
0x55 |
Name: I2C Slave Address Register
Size: 10 bits
Address Offset: 0x08
Read/Write Access: Read/Write
|
ic_data_cmd |
0x10 |
32 |
RW |
0x0 |
Name: I2C Rx/Tx Data Buffer and Command Register;
this is the register the CPU writes to when
filling the TX FIFO and the CPU reads from when
retrieving bytes from RX FIFO
Size:
When IC_EMPTYFIFO_HOLD_MASTER_EN=1 - 11 bits (writes), 8 bits (read)
When IC_EMPTYFIFO_HOLD_MASTER_EN=0 - 9 bits (writes), 8 bits (read)
Address Offset: 0x10
Read/Write Access: Read/Write
NOTE: With nine bits required for writes,
the DW_apb_i2c requires 16-bit data on the
APB bus transfers when writing into the
transmit FIFO. Eight-bit transfers remain for
reads from the receive FIFO.
|
ic_ss_scl_hcnt |
0x14 |
32 |
RW |
0x190 |
Name: Standard Speed I2C Clock SCL High Count Register
Size: 16 bits
Address Offset: 0x14
Read/Write Access: Read/Write
|
ic_ss_scl_lcnt |
0x18 |
32 |
RW |
0x1D6 |
Name: Standard Speed I2C Clock SCL Low Count Register
Size: 16 bits
Address Offset: 0x18
Read/Write Access: Read/Write
|
ic_fs_scl_hcnt |
0x1C |
32 |
RW |
0x3C |
Name: Fast Mode or Fast Mode Plus I2C Clock SCL High Count Register
Size: 16 bits
Address Offset: 0x1c
Read/Write Access: Read/Write
|
ic_fs_scl_lcnt |
0x20 |
32 |
RW |
0x82 |
Name: Fast Mode or Fast Mode Plus I2C Clock SCL Low Count Register
Size: 16 bits
Address Offset: 0x20
Read/Write Access: Read/Write
|
ic_intr_stat |
0x2C |
32 |
RO |
0x0 |
Name: I2C Interrupt Status Register
Size: 14 bits
Address Offset: 0x2C
Read/Write Access: Read
Each bit in this register has a corresponding mask bit
in the IC_INTR_MASK register. These bits are cleared by reading the matching
interrupt clear register. The unmasked raw versions of these bits are
available in the IC_RAW_INTR_STAT register.
|
ic_intr_mask |
0x30 |
32 |
RW |
0x8FF |
Name: I2C Interrupt Mask Register
Size: 14 bits
Address Offset: 0x30
Read/Write Access: Read/Write However,
if configuration parameter IC_SLV_RESTART_DET = 0, bit 13 is read only;
if configuration parameter I2C_DYNAMIC_TAR_UPDATE = 0 or IC_EMPTYFIFO_HOLD_MASTER_EN = 0, bit 14 is read only.
These bits mask their corresponding interrupt status bits.
They are active high; a value of 0 prevents a bit from
generating an interrupt.
|
ic_raw_intr_stat |
0x34 |
32 |
RO |
0x0 |
Name: I2C Raw Interrupt Status Register
Size: 14 bits
Address Offset: 0x34
Read/Write Access: Read
Unlike the IC_INTR_STAT register, these bits are not masked so they
always show the true status of the DW_apb_i2c.
|
ic_rx_tl |
0x38 |
32 |
RW |
0x0 |
Name: I2C Receive FIFO Threshold Register
Size: 8bits
Address Offset: 0x38
Read/Write Access: Read/Write
|
ic_tx_tl |
0x3C |
32 |
RW |
0x0 |
Name: I2C Transmit FIFO Threshold Register
Size: 8 bits
Address Offset: 0x3c
Read/Write Access: Read/Write
|
ic_clr_intr |
0x40 |
32 |
RO |
0x0 |
Name: Clear Combined and Individual Interrupt Register
Size: 1 bit
Address Offset: 0x40
Read/Write Access: Read
|
ic_clr_rx_under |
0x44 |
32 |
RO |
0x0 |
Name: Clear RX_UNDER Interrupt Register
Size: 1 bit
Address Offset: 0x44
Read/Write Access: Read
|
ic_clr_rx_over |
0x48 |
32 |
RO |
0x0 |
Name: Clear RX_OVER Interrupt Register
Size: 1 bit
Address Offset: 0x48
Read/Write Access: Read
|
ic_clr_tx_over |
0x4C |
32 |
RO |
0x0 |
Name: Clear TX_OVER Interrupt Register
Size: 1 bit
Address Offset: 0x4c
Read/Write Access: Read
|
ic_clr_rd_req |
0x50 |
32 |
RO |
0x0 |
Name: Clear RD_REQ Interrupt Register
Size: 1 bit
Address Offset: 0x50
Read/Write Access: Read
|
ic_clr_tx_abrt |
0x54 |
32 |
RO |
0x0 |
Name: Clear TX_ABRT Interrupt Register
Size: 1 bit
Address Offset: 0x54
Read/Write Access: Read
|
ic_clr_rx_done |
0x58 |
32 |
RO |
0x0 |
Name: Clear RX_DONE Interrupt Register
Size: 1 bit
Address Offset: 0x58
Read/Write Access: Read
|
ic_clr_activity |
0x5C |
32 |
RO |
0x0 |
Name: Clear ACTIVITY Interrupt Register
Size: 1 bit
Address Offset: 0x5c
Read/Write Access: Read
|
ic_clr_stop_det |
0x60 |
32 |
RO |
0x0 |
Name: Clear STOP_DET Interrupt Register
Size: 1 bit
Address Offset: 0x60
Read/Write Access: Read
|
ic_clr_start_det |
0x64 |
32 |
RO |
0x0 |
Name: Clear START_DET Interrupt Register
Size: 1 bit
Address Offset: 0x64
Read/Write Access: Read
|
ic_clr_gen_call |
0x68 |
32 |
RO |
0x0 |
Name: Clear GEN_CALL Interrupt Register
Size: 1 bit
Address Offset: 0x68
Read/Write Access: Read
|
ic_enable |
0x6C |
32 |
RW |
0x0 |
Name: I2C Enable Register
Size: 2 bits
Address Offset: 0x6c
Read/Write Access: Read/Write
|
ic_status |
0x70 |
32 |
RO |
0x6 |
Name: I2C Status Register
Size: 7 bits
Address Offset: 0x70
Read/Write Access: Read
This is a read-only register used to indicate the current
transfer status and FIFO status. The status register may be
read at any time. None of the bits in this register request
an interrupt.
When the I2C is disabled by writing 0 in bit 0 of the
IC_ENABLE register:
- Bits 1 and 2 are set to 1
- Bits 3 and 4 are set to 0
When the master or slave state machines goes to idle
and ic_en=0:
- Bits 5 and 6 are set to 0
|
ic_txflr |
0x74 |
32 |
RO |
0x0 |
Name: I2C Transmit FIFO Level Register
Size: TX_ABW + 1
Address Offset: 0x74
Read/Write Access: Read
This register contains the number of valid data
entries in the transmit FIFO buffer. It is cleared
whenever:
- The I2C is disabled
- There is a transmit abort that is, TX_ABRT bit is
set in the IC_RAW_INTR_STAT register
- The slave bulk transmit mode is aborted
The register increments whenever data is placed into
the transmit FIFO and decrements when data is
taken from the transmit FIFO.
|
ic_rxflr |
0x78 |
32 |
RO |
0x0 |
Name: I2C Receive FIFO Level Register
Size: RX_ABW + 1
Address Offset: 0x78
Read/Write Access: Read
This register contains the number of valid data
entries in the receive FIFO buffer. It is cleared
whenever:
- The I2C is disabled
- Whenever there is a transmit abort caused by any
of the events tracked in IC_TX_ABRT_SOURCE
The register increments whenever data is placed into
the receive FIFO and decrements when data is
taken from the receive FIFO.
|
ic_sda_hold |
0x7C |
32 |
RW |
0x1 |
Name: I2C SDA Hold Time Length Register
Size: 24 bits
Address Offset: 0x7c
Read/Write Access: Read/Write
The bits [15:0] of this register are used to control the hold time of SDA during
transmit in both slave and master mode (after SCL goes from HIGH to LOW).
The bits [23:16] of this register are used to extend the SDA transition (if any)
whenever SCL is HIGH in the receiver in either master or slave mode.
The values in this register are in units of ic_clk period.
This register controls the amount of time delay.
The relevant I2C requirement is thd:DAT as detailed in the I2C
Bus Specification.
|
ic_tx_abrt_source |
0x80 |
32 |
RO |
0x0 |
Name: I2C Transmit Abort Source Register
Size: 32 bits
Address Offset: 0x80
Read/Write Access: Read
This register has 32 bits that indicate the source
of the TX_ABRT bit. Except for Bit 9, this register is
cleared whenever the IC_CLR_TX_ABRT register or the
IC_CLR_INTR register is read. To clear Bit 9, the source
of the ABRT_SBYTE_NORSTRT must be fixed first; RESTART must
be enabled (IC_CON[5]=1), the SPECIAL bit must be cleared
(IC_TAR[11]), or the GC_OR_START bit must be cleared (IC_TAR[10]).
Once the source of the ABRT_SBYTE_NORSTRT is fixed, then this
bit can be cleared in the same manner as other bits in this
register. If the source of the ABRT_SBYTE_NORSTRT is not fixed
before attempting to clear this bit, Bit 9 clears for one cycle
and is then re-asserted.
|
ic_slv_data_nack_only |
0x84 |
32 |
RW |
0x0 |
Name: Generate Slave Data NACK Register
Size: 1 bit
Address Offset: 0x84
Read/Write Access: Read/Write
The register is used to generate a NACK for
the data part of a transfer when DW_apb_i2c is
acting as a slave-receiver. This register only
exists when the IC_SLV_DATA_NACK_ONLY parameter
is set to 1. When this parameter disabled, this
register does not exist and writing to the register's
address has no effect.
|
ic_dma_cr |
0x88 |
32 |
RW |
0x0 |
Name: DMA Control Register
Size: 2 bits
Address Offset: 0x88
Read/Write Access: Read/Write
This register is only valid when DW_apb_i2c is configured
with a set of DMA Controller interface signals (IC_HAS_DMA = 1).
When DW_apb_i2c is not configured for DMA operation, this register
does not exist and writing to the register’s address has no
effect and reading from this register address will return zero.
The register is used to enable the DMA Controller interface operation.
There is a separate bit for transmit and receive. This can be programmed
regardless of the state of IC_ENABLE.
|
ic_dma_tdlr |
0x8C |
32 |
RW |
0x0 |
Name: DMA Transmit Data Level Register
Size: log2(IC_TX_BUFFER_DEPTH) bits
Address Offset: 0x8c
Read/Write Access: Read/Write
This register is only valid when the DW_apb_i2c
is configured with a set of DMA interface signals
(IC_HAS_DMA = 1). When DW_apb_i2c is not configured
for DMA operation, this register does not exist;
writing to its address has no effect; reading from
its address returns zero.
|
ic_dma_rdlr |
0x90 |
32 |
RW |
0x0 |
Name: I2C Receive Data Level Register
Size: log2(IC_RX_BUFFER_DEPTH) bits
Address Offset: 0x90
Read/Write Access: Read/Write
This register is only valid when DW_apb_i2c
is configured with a set of DMA interface signals
(IC_HAS_DMA = 1). When DW_apb_i2c is not configured
for DMA operation, this register does not exist;
writing to its address has no effect; reading from
its address returns zero.
|
ic_sda_setup |
0x94 |
32 |
RW |
0x64 |
Name: I2C SDA Setup Register
Size: 8 bits
Address Offset: 0x94
Read/Write Access: Read/Write
This register controls the amount of time delay
(in terms of number of ic_clk clock periods) introduced
in the rising edge of SCL, relative to SDA changing, when
DW_apb_i2c services a read request in a slave-transmitter operation.
The relevant I2C requirement is tSU:DAT (note 4) as detailed in the
I2C Bus Specification.
|
ic_ack_general_call |
0x98 |
32 |
RW |
0x1 |
Name: I2C ACK General Call Register
Size: 1 bit
Address Offset: 0x98
Read/Write Access: Read/Write
The register controls whether DW_apb_i2c responds
with a ACK or NACK when it receives an I2C
General Call address.
Note :This register is applicable only when the DW_apb_i2c is in slave mode
|
ic_enable_status |
0x9C |
32 |
RO |
0x0 |
Name: I2C Enable Status Register
Size: 3 bits
Address Offset: 0x9C
Read/Write Access: Read
The register is used to report the DW_apb_i2c hardware
status when the IC_ENABLE[0] register is set from 1 to 0;
that is, when DW_apb_i2c is disabled.
If IC_ENABLE[0] has been set to 1, bits 2:1 are forced to 0,
and bit 0 is forced to 1.
If IC_ENABLE[0] has been set to 0, bits 2:1 is only be valid
as soon as bit 0 is read as '0'.
Note
When IC_ENABLE[0] has been written with '0'a delay occurs for
bit 0 to be read as '0' because disabling the DW_apb_i2c
depends on I2C bus activities.
|
ic_comp_param_1 |
0xF4 |
32 |
RO |
0x3F3FEA |
Name: Component Parameter Register 1
Size: 32 bits
Address Offset: 0xf4
Read/Write Access: Read
Note
This is a constant read-only register that contains
encoded information about the component's parameter settings.
The reset value depends on coreConsultant parameter(s).
|
ic_comp_version |
0xF8 |
32 |
RO |
0x3132312A |
Name: I2C Component Version Register
Size: 32 bits
Address Offset: 0xf8
Read/Write Access: Read
|
ic_comp_type |
0xFC |
32 |
RO |
0x44570140 |
Name: I2C Component Type Register
Size: 32 bits
Address Offset: 0xfc
Read/Write Access: Read
|
ic_fs_spklen |
0xA0 |
32 |
RW |
0x2 |
Name: I2C SS, FS or FM+ spike suppression limit
Size: 8 bits
Address: 0xA0
Read/Write Access: Read/Write
This register is used to store the duration, measured in ic_clk cycles,
of the longest spike that is filtered out by the spike suppression logic w
hen the component is operating in SS, FS or FM+ modes.
The relevant I2C requirement is tSP (table 4) as detailed in the
I2C Bus Specification. This register must be programmed with a minimum value of 1.
|
ic_clr_restart_det |
0xA8 |
32 |
RO |
0x0 |
Name: Clear RESTART_DET Interrupt Register
Size: 1 bit
Address Offset: 0xA8
Read/Write Access: Read
|