下载
中文
注册

寄存器描述

寄存器名称

描述

偏移地址

宽度

属性

默认值

字段名称

字段范围

字段属性

字段默认值

字段释义

FRAME_CTRL

I2C帧控制寄存器

0x0000

32

RW

0x00000019

reserved

31:7

-

0x0000000

reserved

hs_mstcode_addr

6:4

RW

0x1

I2C高速模式下master code地址

restart_en

3

RW

0x1

是否允许主设备产生“重新开始”条件。

0:不允许;

1:允许。

slv_addr_10bit

2

RW

0x0

作为主设备时发出的地址位数。

0:7位地址;

1:10位地址。

speed_mode

1:0

RW

0x1

I2C设备的操作速度。

00:标准速度;

01:快速速度;

10:高速速度;

11:reserved。

SLV_ADDR

I2C访问的目标设备地址寄存器

0x0004

32

RW

0x00000055

reserved

31:12

-

0x00000

reserved

gc_sbyte_en

11

RW

0x0

是否执行general call和start byte功能。

0:不执行;

1:执行。

gc_sbyte_mode

10

RW

0x0

当执行general call和start byte的功能时。

0:General call;

1:Start byte。

slv_addr

9:0

RW

0x055

Master访问的slave地址

7bit地址时:slv_addr[6:0]有效

10bit地址时:slv_addr[9:0]有效

CMD_TXDATA

I2C设备的命令及TX数据控制寄存器

0x0008

32

RW

0x00000000

reserved

31:11

-

0x000000

reserved

sr_en

10

RW

0x0

该bit控制在1 byte数据被发送或接收前是否发送restart,restart_en为1是该位才有效。

0:如果restart_en为1,只有当传输方向从上一个命令改变时,才下发RESTART;当restart_en为0时,下发STOP+START。

1:如果restart_en为1,不管传输方向是否从上一个命令改变,则在发送/接收数据之前(根据CMD的值)发出RESTART,;如果restart_en为0,则发出一个STOP后接着一个START。

p_en

9

RW

0x0

该bit控制在1 byte数据被发送或接收后是否产生stop。

0:在该byte之后不发送stop;

1:在该byte之后发送stop;

rnw

8

RW

0x0

读/写控制位。

0:写,表示I2C设备将要向I2C总线发送数据。此时低8bit是I2C设备要向I2C总线发送的数据;

1:读,表示I2C设备将要从I2C总线读回数据。

tx_data

7:0

RW

0x00

将要在I2C总线上发送的数据。

RXDATA

I2C设备接收数据接口

0x000C

32

RO

0x00000000

reserved

31:8

-

0x000000

reserved

rx_data

7:0

RO

0x00

接收数据端口

SS_SCL_HCNT

I2C设备的分频数值寄存器。SS模式下SCL高电平周期数配置寄存器

0x0010

32

RW

0x00000010

reserved

31:16

-

0x0000

reserved

ss_scl_hcnt

15:0

RW

0x0010

标准速度下的SCL信号高电平的时钟周期数(core_clk周期)。对应产生的高电平周期数为ss_scl_hcnt + fs_spk_len + 7

SS_SCL_LCNT

I2C设备的分频数值寄存器。SS模式下SCL低电平周期数配置寄存器

0x0014

32

RW

0x000001D6

reserved

31:16

-

0x0000

reserved

ss_scl_lcnt

15:0

RW

0x01D6

标准速度下的SCL信号低电平的时钟周期数(core_clk周期)。对应产生的低电平周期数为ss_scl_lcnt + 1

FS_SCL_HCNT

I2C设备的分频数值寄存器。FS模式下SCL高电平周期数配置寄存器

0x0018

32

RW

0x00000006

reserved

31:16

-

0x0000

reserved

fs_scl_hcnt

15:0

RW

0x0006

快速速度下的SCL信号高电平的时钟周期数(core_clk周期)。对应产生的高电平周期数为fs_scl_hcnt + fs_spk_len + 7

FS_SCL_LCNT

I2C设备的分频数值寄存器。FS模式下SCL低电平周期数配置寄存器

0x001C

32

RW

0x00000082

reserved

31:16

-

0x0000

reserved

fs_scl_lcnt

15:0

RW

0x0082

快速速度下的SCL信号低电平的时钟周期数(core_clk周期)。对应产生的低电平周期数为fs_scl_lcnt + 1

HS_SCL_HCNT

I2C设备的分频数值寄存器。HS模式下SCL高电平周期数配置寄存器

0x0020

32

RW

0x00000006

reserved

31:16

-

0x0000

reserved

hs_scl_hcnt

15:0

RW

0x0006

高速速度下的SCL信号高电平的时钟周期数(core_clk周期)。对应产生的高电平周期数为hs_scl_hcnt + hs_spk_len + 7

HS_SCL_LCNT

I2C设备的分频数值寄存器。HS模式下SCL低电平周期数配置寄存器

0x0024

32

RW

0x00000010

reserved

31:16

-

0x0000

reserved

hs_scl_lcnt

15:0

RW

0x0010

高速速度下的SCL信号低电平的时钟周期数(core_clk周期)。对应产生的低电平周期数为hs_scl_lcnt + 1

FIFO_CTRL

FIFO控制寄存器

0x0028

32

RW

0x000004F0

reserved

31:14

-

0x00000

reserved

tx_fifo_ae_thre

13:8

RW

0x04

tx fifo将空阈值

rx_fifo_af_thre

7:2

RW

0x3C

rx fifo将满阈值

tx_fifo_clr

1

RW

0x0

tx_fifo清空寄存器,1有效,需配1再配0

rx_fifo_clr

0

RW

0x0

rx_fifo清空寄存器,1有效,需配1再配0

FIFO_STATE

FIFO状态寄存器

0x002C

32

RO

0x0000030C

fifo_state

31:0

RO

0x0000030C

fifo状态

bit31~12:reserved

bit11:tx_fifo_full

bit10:tx_fifo_afull

bit9:tx_fifo_empty

bit8:tx_fifo_aempty

bit7:tx_fifo_werror

bit6:tx_fifo_rerror

bit5:rx_fifo_full

bit4:rx_fifo_afull

bit3:rx_fifo_empty

bit2:rx_fifo_aempty

bit1:rx_fifo_werror

bit0:rx_fifo_rerror

SDA_HOLD

I2C SDA HOLD时间控制寄存器

0x0030

32

RW

0x00000001

reserved

31:24

-

0x00

reserved

sda_hold_rx

23:16

RW

0x00

作为接收时,设置要求的SDA保持时间,单位为core_clk周期

sda_hold_tx

15:0

RW

0x0001

作为发送时,设置要求的SDA保持时间,以core_clk周期为单位

DMA_CTRL

DMA模式控制寄存器

0x0034

32

RW

0x00000000

reserved

31:1

-

0x00000000

reserved

dma_en

0

RW

0x0

DMA模式使能控制

0:DMA不使能

1:DMA使能

FS_SPK_LEN

在快速模式下,滤毛刺长度寄存器

0x0038

32

RW

0x00000005

reserved

31:8

-

0x000000

reserved

fs_spk_len

7:0

RW

0x05

以core_clk的cycle为准,Fast Speed模式下设置SCL和SDA中可被过滤毛刺的最长长度,配置为0时不滤波,支持最大为50ns

HS_SPK_LEN

在高速模式下,滤毛刺长度寄存器

0x003C

32

RW

0x00000001

reserved

31:8

-

0x000000

reserved

hs_spk_len

7:0

RW

0x01

以core_clk的cycle为准,High Speed模式下设置SCL和SDA中可被过滤毛刺的最长长度,配置为0时不滤波,支持最大为10ns

INT_CLR

中断清除寄存器

0x0040

32

WC

0x00000000

reserved

31:1

-

0x0000000

reserved

tx_aempty_int

0

WC

0x0

tx fifo将空中断清除:

1:写1时清除中断;

0:中断不清楚。

INT_MSTAT

中断屏蔽状态寄存器

0x0044

32

RO

0x00000000

reserved

31:5

-

0x0000000

reserved

tx_aempty_int_mstat

4

RO

0x0

tx fifo将空屏蔽后的中断状态:

1'b1:有中断;

1'b0:无中断;

rx_afull_int_mstat

3

RO

0x0

rx fifo将满屏蔽后的中断状态:

1'b1:有中断;

1'b0:无中断;

fifo_err_int_mstat

2

RO

0x0

fifo溢出屏蔽后的中断状态:

1'b1:有中断;

1'b0:无中断;

trans_err_int_mstat

1

RO

0x0

传输错误屏蔽后的中断状态:

1'b1:有中断;

1'b0:无中断;

trans_cmplt_int_mstat

0

RO

0x0

传输完成屏蔽后的中断状态:

1'b1:有中断;

1'b0:无中断;

INT_CLR

中断清除寄存器

0x0048

32

WC

0x00000000

reserved

31:4

-

0x0000000

reserved

rx_afull_int

3

WC

0x0

rx fifo将满中断清除:

1:写1时清除中断;

0:中断不清楚。

fifo_err_int

2

WC

0x0

fifo溢出中断清除:

1:写1时清除中断;

0:中断不清楚。

trans_err_int

1

WC

0x0

传输错误中断清除:

1:写1时清除中断;

0:中断不清楚。

trans_cmplt_int

0

WC

0x0

传输完成中断清除:

1:写1时清除中断;

0:中断不清楚。

INT_MASK

中断屏蔽寄存器

0x004C

32

RW

0x00000001

reserved

31:5

-

0x0000000

reserved

tx_aempty_int_mask

4

RW

0x0

tx fifo将空中断屏蔽位:

1'b0:中断屏蔽;

1'b1:中断不屏蔽;

rx_afull_int_mask

3

RW

0x0

rx fifo将满中断屏蔽位:

1'b0:中断屏蔽;

1'b1:中断不屏蔽;

fifo_err_int_mask

2

RW

0x0

fifo溢出中断屏蔽位:

1'b0:中断屏蔽;

1'b1:中断不屏蔽;

trans_err_int_mask

1

RW

0x0

传输错误中断屏蔽位:

1'b0:中断屏蔽;

1'b1:中断不屏蔽;

trans_cmplt_int_mask

0

RW

0x1

传输完成中断屏蔽位:

1'b0:中断屏蔽;

1'b1:中断不屏蔽;

TRANS_STATE

传输状态寄存器

0x0050

32

RO

0x00000060

reserved

31:7

-

0x0000000

reserved

scl_level

6

RO

0x1

SCL线电平状态

sda_level

5

RO

0x1

SDA线电平状态

mtc_st_curr

4:0

RO

0x00

MTC状态机当前状态

5'd0:IDLE

5'd1:发送START

5'd2:发送Master code

5'd3:读取tx fifo

5'd4:发送general call或start byte

5'd5:读取数据

5'd6:发送STOP

5'd7:发送7bit设备地址

5'd8:发送10bit设备地址first addr

5'd9:发送10bit设备地址second addr

5'd10:发送Repeat START

5'd11:发送写数据

5'd12:10bit地址模式下发送Repeat START

5'd13:7bit地址模式下发送Repeat START

5'd14:HS模式下发送Repeat START

5'd15:进入写数据hold状态

5'd16:进入读数据hold状态

TRANS_ERR

传输错误寄存器

0x0054

32

RO

0x00000000

trans_err_state

31:0

RO

0x00000000

传输过程中错误状态

bit31~11:reserved

bit10:general call时接收到nack

bit9:general call时为读命令

bit8:start byte时接收到ack

bit7:start byte时未配置restart_en

bit6:hs模式下未配置restart_en

bit5:hs模式下发送完master code接收到ack

bit4:发送7bit地址是接收到nack

bit3:发送10bit first地址时接收到nack

bit2:发送10bit second地址时接收到nack

bit1:10bit地址模式下读未配置restart_en

bit0:写数据时接收到nack

I2C_VERSION

版本寄存器

0x0058

32

RO

0x00000030

i2c_version

31:0

RO

0x00000030

I2C版本寄存器