![]() |
Altera SoCAL
16.0
The Altera SoC Abstraction Layer (SoCAL) API Reference Manual
|
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.
Register Layout
Bits | Access | Reset | Description |
---|---|---|---|
[15:0] | RW | 0x1 | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD |
[23:16] | RW | 0x0 | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD |
[31:24] | ??? | 0x0 | UNDEFINED |
Field : ic_sda_tx_hold | |
Sets the required SDA hold time in units of ic_clk period, when DW_apb_i2c acts as a transmitter. Reset value: IC_DEFAULT_SDA_HOLD[15:0]. Field Access Macros: | |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_LSB 0 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_MSB 15 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_WIDTH 16 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_SET_MSK 0x0000ffff |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_CLR_MSK 0xffff0000 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_RESET 0x1 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_GET(value) (((value) & 0x0000ffff) >> 0) |
#define | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_SET(value) (((value) << 0) & 0x0000ffff) |
Field : ic_sda_rx_hold | |
Sets the required SDA hold time in units of ic_clk period, when DW_apb_i2c acts as a receiver. Reset value: IC_DEFAULT_SDA_HOLD[23:16]. Field Access Macros: | |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_LSB 16 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_MSB 23 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_WIDTH 8 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_SET_MSK 0x00ff0000 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_CLR_MSK 0xff00ffff |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_RESET 0x0 |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_GET(value) (((value) & 0x00ff0000) >> 16) |
#define | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_SET(value) (((value) << 16) & 0x00ff0000) |
Data Structures | |
struct | ALT_I2C_SDA_HOLD_s |
Macros | |
#define | ALT_I2C_SDA_HOLD_RESET 0x00000001 |
#define | ALT_I2C_SDA_HOLD_OFST 0x7c |
#define | ALT_I2C_SDA_HOLD_ADDR(base) ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SDA_HOLD_OFST)) |
Typedefs | |
typedef struct ALT_I2C_SDA_HOLD_s | ALT_I2C_SDA_HOLD_t |
struct ALT_I2C_SDA_HOLD_s |
WARNING: The C register and register group struct declarations are provided for convenience and illustrative purposes. They should, however, be used with caution as the C language standard provides no guarantees about the alignment or atomicity of device memory accesses. The recommended practice for writing hardware drivers is to use the SoCAL access macros and alt_read_word() and alt_write_word() functions.
The struct declaration for register ALT_I2C_SDA_HOLD.
Data Fields | ||
---|---|---|
uint32_t | ic_sda_tx_hold: 16 | ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD |
uint32_t | ic_sda_rx_hold: 8 | ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD |
uint32_t | __pad0__: 8 | UNDEFINED |
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_LSB 0 |
The Least Significant Bit (LSB) position of the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_MSB 15 |
The Most Significant Bit (MSB) position of the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_WIDTH 16 |
The width in bits of the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_SET_MSK 0x0000ffff |
The mask used to set the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field value.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_CLR_MSK 0xffff0000 |
The mask used to clear the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field value.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_RESET 0x1 |
The reset value of the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_GET | ( | value | ) | (((value) & 0x0000ffff) >> 0) |
Extracts the ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD field value from a register.
#define ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD_SET | ( | value | ) | (((value) << 0) & 0x0000ffff) |
Produces a ALT_I2C_SDA_HOLD_IC_SDA_TX_HOLD register field value suitable for setting the register.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_LSB 16 |
The Least Significant Bit (LSB) position of the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_MSB 23 |
The Most Significant Bit (MSB) position of the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_WIDTH 8 |
The width in bits of the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_SET_MSK 0x00ff0000 |
The mask used to set the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field value.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_CLR_MSK 0xff00ffff |
The mask used to clear the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field value.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_RESET 0x0 |
The reset value of the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_GET | ( | value | ) | (((value) & 0x00ff0000) >> 16) |
Extracts the ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD field value from a register.
#define ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD_SET | ( | value | ) | (((value) << 16) & 0x00ff0000) |
Produces a ALT_I2C_SDA_HOLD_IC_SDA_RX_HOLD register field value suitable for setting the register.
#define ALT_I2C_SDA_HOLD_RESET 0x00000001 |
The reset value of the ALT_I2C_SDA_HOLD register.
#define ALT_I2C_SDA_HOLD_OFST 0x7c |
The byte offset of the ALT_I2C_SDA_HOLD register from the beginning of the component.
#define ALT_I2C_SDA_HOLD_ADDR | ( | base | ) | ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_I2C_SDA_HOLD_OFST)) |
The address of the ALT_I2C_SDA_HOLD register.
typedef struct ALT_I2C_SDA_HOLD_s ALT_I2C_SDA_HOLD_t |
The typedef declaration for register ALT_I2C_SDA_HOLD.