Altera SoCAL  16.0
The Altera SoC Abstraction Layer (SoCAL) API Reference Manual
 All Data Structures Variables Typedefs Groups
Register : ic_sda_hold

Description

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
 

Data Structure Documentation

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

Macro Definitions

#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 Documentation

The typedef declaration for register ALT_I2C_SDA_HOLD.